第十三部分 启动实例linux
预备知识:Linux Bridge网络模式vim
因为上节最后验证网络和这节启动实例须要使用到Linux Bridge,因此这里介绍下Linux Bridge的基本概念centos
假设宿主机上有一块与外网链接的物理网卡eth0 ,上面跑了一个虚拟机VM1,那么使用Linux Bridge,宿主机会建立一个Linux Bridge的bridge br0将物理网卡eth0和实例的虚拟网卡桥接起来。以下图所示,br0能够当作是一个虚拟交换机,vnet0能够当作是虚拟交换机上的一个端口。安全
具体的链接方式是:虚拟机的虚拟网卡(若是虚拟机的操做系统是linux,它的虚拟网卡名称也是eth0)——vnet0——br0——物理网卡eth0网络
在下面的安装中,咱们会使用计算节点(能够当作是是实例的宿主机)的网卡eth1来桥接实例的虚拟网卡(实例若是安装的是linux系统,则其虚拟网卡名称是eth0)。架构
相似上面的架构,br0由neutron建立,使用的名称是类似brq8c8dcd81-d3这样的,端口vnet0也由neutron建立,其名称相似tapfdf3a9b5-f8这样的,其中包含有由neutron service plugin、agent建立的ip地址等信息。实例启动后,neutron会将该端口分配给实例。app
这样,brq8c8dcd81-d3把宿主机的eth1,端口tapfdf3a9b5-f8和实例的虚拟网卡桥接起来,从而为实例提供网络访问。dom
具体来讲就是这样链接的:实例(实例的操做系统是linux系统的话)的虚拟网卡eth0——tapfdf3a9b5-f8——brq8c8dcd81-d3——宿主机(计算节点)的eth1ssh
同理,若是再启动一个新实例,则neutron会在brq8c8dcd81-d3建立一个新的端口,tapxxxxxxx-xx,将其分配给该实例。
tcp
可见,类比vSphere,brq8c8dcd81-d3其实就是一个标准虚拟交换机,tapfdf3a9b5-f8就是上面的端口(端口组),eth1就是上行链路。
控制节点的网络底层配置
如上节最后所述,控制节点在建立虚拟网络时,会建立相似以上所说的brqxxxxx(xxxxx为虚拟网络ID的前11位)网桥,而且会建立一个dhcp-agent使用的端口tapxxxxx(xxxx为dhcp-agent的前几位),将物理网卡eth1和tap设备桥接起来。
在控制节点,使用brctl show 查看
brctl show
相似图上的显示才是正确的,若是后面没有eth1,后面建立实例将得不到ip地址。
请按以下步骤排查
(1)确认已经中止或者删除了NetworkManager软件包
systemctl stop NetworkManager
systemctl disable NetworkManager
yum remove NetworkManager -y
(2)重启网络
systemctl restart network
建立实例前的准备工做
建立实例类型
. admin-openrc
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
openstack flavor list
创建普通项目、用户,并赋予普通用户user角色。
openstack project create --domain default --description "ygj Project" ygj-project
openstack user create --domain default --password 123456 ygj
openstack role add --project ygj-projec --user ygj user
创建普通用户的环境变量脚本
vim ygj-openrc
加入:
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=ygj-project
export OS_USERNAME=ygj
export OS_PASSWORD=123456
export OS_AUTH_URL=http://ct:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
建立密钥对
. ygj-openrc
ssh-keygen -q -N ""
openstack keypair create --public-key ~/.ssh/id_rsa.pub ygjkey
openstack keypair list
建立安全组规则
openstack security group rule create --proto icmp default
openstack security group rule create --proto tcp --dst-port 22 default
检查openstack的相关服务和配置
. ygj-openrc
openstack flavor list
openstack image list
openstack network list(复制下网络ID,后面使用)
记下的网络ID为:3903994e-3f22-4677-8c3a-5ea4edd90afb
openstack security group list
修改计算节点上的nova配置文件,避免建立实例时报没法分配网络的错误
vim /etc/nova/nova.conf
[DEFAULT]
vif_plugging_is_fatal = false
vif_plugging_timeout = 0
确认开启2个节点的eth1的混杂模式,使虚拟机能链接除本宿主机外的网络
yum install net-tools -y
ifconfig eth1 promisc
确认已经中止2个节点上的networkmanager服务,不然会影响桥接网络的创建。
systemctl stop NetworkManager
systemctl disable NetworkManager
再次检查控制节点上neutron的桥接网络配置是否正确
yum install bridge-utils -y
brctl show
必定要确认eth1已经桥接到brq上面。
建立并启动实例
建立实例的命令
openstack server create --flavor 实例类型 --image 来源的镜像 --nic net-id=PROVIDER_NET_ID --security-group 安全组名 --key-name 密钥对 实例名称
其中PROVIDER_NET_ID:上面openstack network list命令查到的网络ID
具体来讲能够以下面的命令:
. ygj-openrc
openstack server create --flavor m1.nano --image cirros --nic net-id=3903994e-3f22-4677-8c3a-5ea4edd90afb --security-group default --key-name ygjkey cirros-instance1
命令成功执行后,稍等片刻,使用openstack server list 查看实例的建立情况
确认其Status为“ACTIVE”,Networks下面不为空
若是实例的Status一直为BULID或者ERROR,则须要检查计算节点nova的日志文件中的报错信息,而后加以解决,日志文件的路径为:/var/log/nova/nova-compute.log
计算节点的检查
上述命令建立实例后,计算节点的网络会发生以下变化
ip a
能够看到会多出一个brq的网桥和一个tap设备
其中brq的网桥和控制节点的同名,意味着它们的端口接在了同一个虚拟交换机上
tap设备即刚才建立的实例使用的端口(能够当作是)。
再使用brctl查看
brctl show
发现tap设备桥接到了网桥上。
可是,计算节点的eth1此时并无桥接到这个brq上,可是再重启下网络和实例便可桥接,至于其具体缘由不明(多是openstack的bug或者是实验环境是vmware-workstation的缘由)。
(1)重启计算节点网络
systemctl restart network
(2)在控制节点重启实例
openstack server reboot cirros-instance1
重启好以后再在计算节点使用brctl show查看
能够看到计算节点的eth1已经桥接到brq上。
检查下和实例的网络链接:
ping 10.8.20.53
说明实例已经可以获取ip地址。
在计算节点访问实例的控制台
查看正在运行的实例
virsh list
记下其id是2
进入实例的控制台
virsh console 2
这里的2就是上面记下的id
按回车,会出现实例的登陆提示符,使用cirros用户和提示的密码登陆
出现$提示符代表登陆成功
使用ip a查看实例的ip
获取到了正确的ip。
还可使用sudo passwd修改root密码,使用mount查看器磁盘挂载状况,其余操做再也不赘述。
最后再检查下网络访问状况
ping 10.8.20.42
ping 10.8.20.41
ping www.baidu.com
按键盘上的“ctrl+]”键返回到计算节点的命令提示符。
再建立一个实例
在控制节点执行如下操做
. ygj-openrc
openstack server create --flavor m1.nano --image cirros --nic net-id=3903994e-3f22-4677-8c3a-5ea4edd90afb --security-group default --key-name ygjkey cirros-instance2
openstack server list
能够看到,新的实例已是ACTIVE。得到的ip地址为10.8.20.51,而且能够ping通,说明实例建立成功。
使用dashboard查看实例的状态
使用前面创建普通用户ygj 密码123456登陆dashboard(不要使用admin登陆,将看不到任何实例),在实例处能够查看到建立的2个实例。
2个实例
也能够访问实例的控制台
至此,启动实例完成,下节将介绍怎么安装和配置centos7的实例。