第六步:创建实例进行测试

controller节点配置

https://docs.openstack.org/install-guide/launch-instance.html #创建实例

https://docs.openstack.org/install-guide/launch-instance-networks-provider.html #创建子网(桥接)

brq是openstack桥接设备的名称;
tap是虚拟机eth0网卡与网桥逻辑上关联的一个接口(虚拟机eth0网卡绑定到网桥的tap接口上),这个接口是在网桥上,每个虚拟机都会在网桥上关联一个tap开头的接口;
如果配置安全组,网桥会通过iptables实现一些策略;

1、source admin-openrc.sh

2、openstack network create --share --external \   #创建网络
  --provider-physical-network external \
  --provider-network-type flat external-net
#第一行指定共享网络,openstack中的所有用户都可以使用这个网络;--external,声明是外部网络
第二行,指定提供者物理网络名称,需要是neutron配置文件中指定的名称,在这个定义的网络基础之上创建一个自己的网络
第三行指定提供者网络类型,指定flat桥接,指定网络名称
#安装openstack时,只是把网络的关联关系以及网络名称配置好,但还未创建网络

3、openstack subnet create --network external-net \  #基于所指定名称的网络创建子网
  --allocation-pool start=172.31.7.50,end=172.31.7.100 \ #指定子网地址池的开始及结束地址
  --dns-nameserver 223.6.6.6 --gateway 172.31.7.254 \ #指定DNS及宿主机网关
  --subnet-range 172.31.0.0/21 external-sub  #指定子网范围以及子网名称

4、brctl show     #查看桥接设备,桥接设备必须对应一个物理网卡才能通讯

5、tail -f /var/log/neutron/*.log  #日志中不能有任何报错

6、openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
#创建虚拟机类型;虚拟机id=0、一盒CPU、64M内存、1G磁盘,指定虚拟机名称为 m1.nano

7、ssh-keygen -q -N ""
#创建密钥对儿,用户创建虚拟机时会把公钥嵌入到虚拟机中,用于ssh免密要登录

8、openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
#基于当前服务器的公钥创建一个名称为 mykey 的公钥,传到openstack中

9、openstack keypair list   #验证openstack中当前用户的公钥

10、openstack security group rule create --proto icmp default
#给default安全组创建一些规则,指定icmp协议,允许其他机器去 ping 使用这个安全组的虚拟机

11、openstack security group rule create --proto tcp --dst-port 22 default
#给default安全组创建规则,协议为tcp,目标端口为22,允许其他机器通过 ssh 连接此安全组下的服务器

12、openstack flavor list  #列出虚拟机类型

13、openstack image list   #列出可用的镜像

14、openstack network list  #列出openstack的网络

15、openstack security group list  #查看当期openstack用户下的安全组,每个用户创建时都有一些安全组

16、openstack server create --flavor m1.nano --image cirros-0.4.0 \ #创建实例,指定镜像名称
  --nic net-id=9468e7cf-11c7-4930-a158-7e60bec9004c --security-group default \ #指定安全组 
  --key-name mykey linux-vm1   #指定key和所创建的实例名称
#创建的虚拟机会关联到指定ID的网络上,关联到网络后,通过DHCP拿到IP地址;网络ID通过: openstack network list查看 
  
17、openstack server list   #列出当前用户下所有虚拟机,虚拟机的状态必须是ACTIVE,并且必须拿到IP地址  

18、openstack console url show VM_NAME  #获取到指定虚拟机名称的控制台的URL

19、浏览器访问URL,宿主机需要配置hosts解析;openstack T版本在访问时会出现问题,虚拟机启动失败,需要修改node节点的一些配置,如下:
##下面这些配置都配置在node节点,虚拟机是在node节点创建的
(1)、virsh capabilities  #查看系统支持的虚拟化类型;使用:pc-i440fx-rhel7.2.0

(2)、vim /etc/nova/nova.conf    
hw_machine_type = x86_64=pc-i440fx-rhel7.2.0 #如果使用qemu或KVM虚拟化,需要指定执行的虚拟化类型
cpu_mode=host-passthrough    #CPU模式使用主机透传模式,让虚拟机直接使用宿主机CPU模式,性能较好

(3)、bash nova-compute-restart.sh  #重启nova服务

(4)、tail -f /var/log/nova/*.log /var/log/neutron/*.log  #日志中不能有任何报错

20、ping 172.31.7.89   #测试能否ping通创建的虚拟机IP

注意

openstack T版本创建完子网后,网桥设备不会自动关联宿主机物理网卡的接口,所以需要强制指定桥接设备所关联的物理网卡,controller及每个node节点都需要强制关联
1、brctl addif brq9468e7cf-11 eth0 && systemctl restart network
#指定桥接设备名称,以及关联的物理网卡;node节点需要先创建一次虚拟机,生成brq网桥设备才可执行此命令

2、bash neutron-restart.sh  #重启neutron

###
也可以将neutron配置文件:/etc/neutron/plugins/ml2/linuxbridge_agent.ini,将openstack的桥接网络绑定到eth1物理网卡上,则配置好网络后,brq网桥设备会自动关联到宿主机eth1网卡上;这种情况只会出现在openstack T版

###
compute节点必须与controller节点时间同步,计算节点会向rabbitmq发起注册到openstack controller节点请求,这个请求会被nova、neutron服务所监听,nova服务会把node节点添加到openstack中,以便于后期分配虚拟机时进行调度,如果时间不同步,这样会造成node节点注册不到openstack nova和neutron中,则虚拟机就无法创建

###修改python文件实现brq网桥自动绑定宿主机eth0网卡
1、vim /usr/lib/python2.7/site-packages/neutron/plugins/ml2/drivers/linuxbridge/agent/linuxbridge_neutron_agent.py
metric = 100   #就让metric的值为100
#if 'metric' in gateway:  #注释掉这两行
#    metric = gateway['metric'] - 1

#如果不注释掉这两行,if判断gateway中没有metric的值时,则metric的值为空,这样做计算会报错,所以注释掉这两个值之后重启neutron服务,brq网桥设备就会自动绑定宿主机的eth0网卡;但也有可能造成所有虚拟机创建完后字段值都是100(目前没发生过);
宿主机eth0网卡默认是管理整个openstack的物理网络(管理网),此网段不会被虚拟机所绑定,所以有可能是此原因造成eth0网卡无法被brq网桥设备自动绑定;
如果brq网桥设备没有与宿主机eth0网卡做绑定,通过 brctl show 命令会发现,brq网桥设备的tap接口只与虚拟机网卡做绑定,未与宿主机的eth0做绑定,这样会造成虚拟机无法访问外网;

2、bash neutron-restart.sh  #重启neutron

3、controller节点和node节点都需要修改此文件
posted on 2020-07-14 16:42  An.amazing.rookie  阅读(216)  评论(0编辑  收藏  举报