本文接上一篇教程《OpenStack All-In-One模式部署(初学OpenStack必备)》
    按照上一篇描述的步骤进行安装OpenStack all-in-one模式,就已经完成了OpenStack环境的基础部署。接下来,我们会在这个OpenStack基础平台上配置和launch一个虚拟机。

>>> continuing …

6、 配置网络接口

    6.1 现在的网络信息如下:

    

openstackdemo创建实例错误 openstack案例_Network

对比上一篇教程中deploy前的ifconfig可以看到,现在多了一个br-ex网卡,顾名思义,这是一个桥接网卡,实际上是一个OVS bridge,用于OpenStack连接Internet的网络设备。接下来我们将会配置br-ex来联通Internet,然后将原来的ens160(在你的系统上可能是eth0)作为一个接口连入br-ex,这是虚拟化交换机技术(OVS – Open vSwitch)提供的支持.

    6.2 备份ifcfg-ens160

cp /etc/sysconfig/network-scripts/ifcfg-ens160 /root/ifcfg-ens160.bak

    6.3 创建br-ex的网络接口文件,并修改ifcfg-ens160和ifcfg-br-ex
        6.3.1 生成br-ex的网卡配置文件

cp /etc/sysconfig/network-scripts/ifcfg-ens160 /etc/sysconfig/network-scripts/ifcfg-br-ex

        6.3.2 修改ifcfg-ens160的内容为:

[root@controller-node ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens160 
     DEVICE=ens160 
     ONBOOT=yes 
     DEVICETYPE=ovs 
     TYPE=OVSPort 
     OVS_BRIDGE=br-ex

        6.3.3 修改ifcfg-br-ex的内容为:
            原始复制生成的ifcfg-br-ex内容为:

   

[root@controller-node ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex 
     TYPE=Ethernet 
     PROXY_METHOD=none 
     BROWSER_ONLY=no 
     BOOTPROTO=static 
     DEFROUTE=yes 
     IPV4_FAILURE_FATAL=no 
     IPV6INIT=yes 
     IPV6_AUTOCONF=yes 
     IPV6_DEFROUTE=yes 
     IPV6_FAILURE_FATAL=no 
     IPV6_ADDR_GEN_MODE=stable-privacy 
     NAME=ens160 
     UUID=526d3be0-e210-4112-bca8-793b76448c9b 
     DEVICE=ens160 
     ONBOOT=yes 
     HWADDR=00:50:56:A6:92:A4 
     IPADDR=10.62.230.129 
     GATEWAY=10.62.230.1 
     NETMASK=255.255.255.0 
     DNS1=10.32.126.28

            现在修改为:

   

[root@controller-node ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex 
     TYPE=Ethernet 
     BOOTPROTO=none 
     DEFROUTE=yes 
     NAME=br-ex 
     DEVICE=br-ex 
     ONBOOT=yes 
     PREFIX=24 
     PEERDNS=no 
     NM_CONTROLLED=no 
     IPADDR=10.62.230.129 
     GATEWAY=10.62.230.1 
     DNS1=10.32.126.28

        6.3.4 将ens160接入br-ex,并重启操作系统Network服务

  

[root@controller-node ~]# ovs-vsctl add-port br-ex ens160 
     [root@controller-node ~]# systemctl restart network

        此时再ifconfig会看到:

        

openstackdemo创建实例错误 openstack案例_openstackdemo创建实例错误_02


        Br-ex获取了外网IP,使用命令:ovs-vsctl show可以看到ens160现在是作为一个port attached到了br-ex

        

openstackdemo创建实例错误 openstack案例_openstackdemo创建实例错误_03


        6.3.5 验证几个命令

            首先引入环境变量设置:

  

[root@controller-node ~]# source /root/keystonerc_admin

            执行命令:

        

openstackdemo创建实例错误 openstack案例_Network_04

三、使用OpenStack来launch一个实例


  1. 创建project
        使用admin账户登录Dashboard,在Identity -> Projects -> Create Project
        
  2. openstackdemo创建实例错误 openstack案例_Network_05

  3.     填写Name, Description,我们现在是测试的目的,所以保持Quotas的默认值,最后点击Create Project。
        注意记住这里填写的Domain ID和Domain Name都是Default。
  4. 创建用户,并将此用户分配到创建的steven preoject中:
        Identity -> Users -> Create User
        填写User Name,Description, Password, Confirm Password,选择Primary Project为前面创建的steven,Role保持为member,如下图。最后点击Create User。
        
  5. openstackdemo创建实例错误 openstack案例_openstackdemo创建实例错误_06

  6. log out当前的admin,重新使用steven登录。可以看到steven用户已经有一个叫steven的project,并且左侧只有Project和Identity两个操作选项(区别于admin的有三个)
  7. 创建网络和路由
    4.1 创建私有网络
        Project -> Neworks -> Create Network

突然发现上图粘贴错了,上面填写的pub_net应该更改为priv_net


    next:

    

openstackdemo创建实例错误 openstack案例_ci_07


    next:

    

openstackdemo创建实例错误 openstack案例_ci_08


    最后点击Create

4.2 创建公有网络

    Project -> Neworks -> Create Network

    

openstackdemo创建实例错误 openstack案例_Network_09


    netx:

    

openstackdemo创建实例错误 openstack案例_ci_10


    next:

    

openstackdemo创建实例错误 openstack案例_IP_11


    创建完以后,可以看到两个网络

openstackdemo创建实例错误 openstack案例_IP_12


4.3 将pub_net标记为External Network。

    这个操作只有admin有权限操作,因此重新使用admin登录。

    Admin -> Network -> Networks

    点击pub_net这行的Edit Network,勾选External Network,然后Save Changes

    退出admin,重新登录steven

4.4 创建路由(注:上一步不要漏掉退出admin,使用steven登录,到这一步时当前登录用户要确保是steven)

    Project -> Network -> Routers -> Create Router

    

openstackdemo创建实例错误 openstack案例_Network_13


    点击Create Router,界面显示如下图:

    

openstackdemo创建实例错误 openstack案例_IP_14


    点击router0,进入router0的页面,选择Interfaces,如下图:

    

openstackdemo创建实例错误 openstack案例_Network_15


    点击Add Interface:

    

openstackdemo创建实例错误 openstack案例_openstackdemo创建实例错误_16


    点击Submit

    F5刷新页面,等待刚添加的Interface的Status为Active,如下图

    

openstackdemo创建实例错误 openstack案例_ci_17


    此时,可以到Project -> Network -> Network Topology查看当前的网络拓扑图。(注:不建议安装demo的原因就是出于这里,如果安装了demo,这里的拓扑图就跟下图有出入,因为会混入demo的网络拓扑图,这对于刚开始接触OpenStack的同学来说容易迷惑)

    

openstackdemo创建实例错误 openstack案例_ci_18

  • 上传image
    5.1 下载image,为上传做准备。
        Image用于创建instance。类似于操作系统的iso一样。我们这里使用cirros,因为它非常小,很适用于做测试。
        下载地址:http://download.cirros-cloud.net/0.3.4/ cirros-0.3.4-x86_64-disk.img
        使用普通浏览器下载到你的工作机上。
    5.2 上传image
        Project -> Compute -> Images -> Create Image
        
  • openstackdemo创建实例错误 openstack案例_Network_19

  •     填写Image Name, 点击Browse选择上一步下载的image文件,format选择QCOW2 – QEMU Emulator,其他选项包括Metadata都保持默认。最后点击Create Image。创建完以后如下显示:
        
  • openstackdemo创建实例错误 openstack案例_IP_20

  • 创建安全组
        Project -> Network -> Security Groups -> Create Security Group
        
  • openstackdemo创建实例错误 openstack案例_ci_21

  •     点击Create Security Group,然后在steven_sec_group行点击Manage Rules。新增四个规则:
            Egress IPv4 ICMP – 0.0.0.0/0 (CIDR)
            Ingress IPv4 ICMP – 0.0.0.0/0 (CIDR)
            Ingress IPv4 TCP 1 – 65535 0.0.0.0/0 (CIDR)
            Egress IPv4 TCP 1 – 65535 0.0.0.0/0 (CIDR)
        
  • openstackdemo创建实例错误 openstack案例_openstackdemo创建实例错误_22


  • 为Project分配浮动IP(Floating IPs)
        Project -> Network -> Floating IPs -> Allocate IP to Project
        
  • openstackdemo创建实例错误 openstack案例_openstackdemo创建实例错误_23

  •     点击Allocate IP,重复这个操作一次,再分配一个IP,如下图:
        
  • openstackdemo创建实例错误 openstack案例_IP_24

  •     (这里的Pool列都是短横线,按理说应该显示配置的pub_net才对,记住这个问题,暂时跳过)
  • 创建实例
        Project -> Compute -> Instances -> Launch Instance
        
  • openstackdemo创建实例错误 openstack案例_ci_25

  •     next:
        
  • openstackdemo创建实例错误 openstack案例_ci_26

  •     next:
        
  • openstackdemo创建实例错误 openstack案例_ci_27

  •     next:
        
  • openstackdemo创建实例错误 openstack案例_IP_28

  •     Network Ports keep default
        
  • openstackdemo创建实例错误 openstack案例_IP_29

  •     Keep the rests as they are. Then click Launch Instance.
        
  • openstackdemo创建实例错误 openstack案例_openstackdemo创建实例错误_30

  •     然后click Actions下Create Snapshot后面的下拉菜单,选择Associate Floating IP:
        
  • openstackdemo创建实例错误 openstack案例_openstackdemo创建实例错误_31

  •     After association:
        
  • openstackdemo创建实例错误 openstack案例_ci_32

  •     再回到Floating IPs页面,可以看到已经associated的IP正常了:
        
  • openstackdemo创建实例错误 openstack案例_ci_33

  •     回到Instances页面,点击cirros_instance这个名字,进入这个instance的页面,选择Console,如下图:
        
  • openstackdemo创建实例错误 openstack案例_Network_34

  •     按照黄色高亮行的提示登录这个instance(注:这里浏览器可能会很卡,因为我们搭建在虚拟机,CPU,内存性能的缘故)
    登录instance测试网络,使用ssh远程登录这个instance进行网络测试。
  • 我这里的网络没有通……仔细查了下,还未找到原因我是在公司做的这个deployment,有可能跟公司的网络内网限制有关系?希望如果有小伙伴们在公司搭建找到了这个问题的原因的,share to me, thanks)
    (instance和外网不能互通这个问题不影响我们下一节的探究,so,这里跳过)

  •     本小节讲述了在OpenStack中配置网络,上传image,最后launch一个instance的详细过程。下一节《OpenStack API 初探(调用API获取OpenStack信息)》,将会调用OpenStack的API来获取一些信息(仅仅只是简单的入门探索)。