第十三部分 启动实例

    预备知识:Linux Bridge 网络模式

    由于上节最后验证网络和这节启动实例需要使用到 Linux Bridge,所以这里介绍下 Linux Bridge 的基本概念

    假设宿主机上有一块与外网连接的物理网卡 eth0 ,上面跑了一个虚拟机 VM1,那么使用 Linux Bridge,宿主机会创建一个 Linux Bridge 的 bridge br0 将物理网卡 eth0 和实例的虚拟网卡桥接起来。如下图所示,br0 可以看成是一个虚拟交换机,vnet0 可以看成是虚拟交换机上的一个端口。

    OpenStack Train版双节点安装(十三)启动实例 - 图1

    具体的连接方式是:虚拟机的虚拟网卡(如果虚拟机的操作系统是 linux,它的虚拟网卡名称也是 eth0)——vnet0——br0——物理网卡 eth0

    在下面的安装中,我们会使用计算节点(可以看成是是实例的宿主机)的网卡 eth1 来桥接实例的虚拟网卡(实例如果安装的是 linux 系统,则其虚拟网卡名称是 eth0)。

    类似上面的架构,br0 由 neutron 创建,使用的名称是类似 brq8c8dcd81-d3 这样的,端口 vnet0 也由 neutron 创建,其名称类似 tapfdf3a9b5-f8 这样的,其中包含有由 neutron service plugin、agent 创建的 ip 地址等信息。实例启动后,neutron 会将该端口分配给实例。

    这样,brq8c8dcd81-d3 把宿主机的 eth1,端口 tapfdf3a9b5-f8 和实例的虚拟网卡桥接起来,从而为实例提供网络访问。

    OpenStack Train版双节点安装(十三)启动实例 - 图2

    具体来说就是这样连接的实例(实例的操作系统是 linux 系统的话)的虚拟网卡 eth0——tapfdf3a9b5-f8——brq8c8dcd81-d3——宿主机(计算节点)的 eth1**

    同理,如果再启动一个新实例,则 neutron 会在 brq8c8dcd81-d3 创建一个新的端口,tapxxxxxxx-xx,将其分配给该实例。

    OpenStack Train版双节点安装(十三)启动实例 - 图3

    可见,类比 vSphere,brq8c8dcd81-d3 其实就是一个标准虚拟交换机,tapfdf3a9b5-f8 就是上面的端口(端口组),eth1 就是上行链路。

    控制节点的网络底层配置

    如上节最后所述,控制节点在创建虚拟网络时,会创建类似以上所说的 brqxxxxx(xxxxx 为虚拟网络 ID 的前 11 位)网桥,并且会创建一个 dhcp-agent 使用的端口 tapxxxxx(xxxx 为 dhcp-agent 的前几位),将物理网卡 eth1 和 tap 设备桥接起来。

    在控制节点,使用 brctl show 查看

    brctl show

    OpenStack Train版双节点安装(十三)启动实例 - 图4

    类似图上的显示才是正确的,如果后面没有 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,后面使用)

    _OpenStack Train版双节点安装(十三)启动实例 - 图5

    _记下的网络 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

    OpenStack Train版双节点安装(十三)启动实例 - 图6

    确认开启 2 个节点的 eth1 的混杂模式,使虚拟机能连接除本宿主机外的网络

    yum install net-tools -y

    ifconfig eth1 promisc

    OpenStack Train版双节点安装(十三)启动实例 - 图7

    确认已经停止 2 个节点上的 networkmanager 服务,否则会影响桥接网络的建立。

    systemctl stop NetworkManager

    systemctl disable NetworkManager

    再次检查控制节点上 neutron 的桥接网络配置是否正确

    yum install bridge-utils -y

    brctl show

    OpenStack Train版双节点安装(十三)启动实例 - 图8

    一定要确认 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 查看实例的创建状况

    OpenStack Train版双节点安装(十三)启动实例 - 图9

    确认其 Status 为 “ACTIVE”,Networks 下面不为空

    如果实例的 Status 一直为 BULID 或者 ERROR,则需要检查计算节点 nova 的日志文件中的报错信息,然后加以解决,日志文件的路径为:/var/log/nova/nova-compute.log

    计算节点的检查

    上述命令创建实例后,计算节点的网络会发生如下变化

    ip a

    OpenStack Train版双节点安装(十三)启动实例 - 图10

    可以看到会多出一个 brq 的网桥和一个 tap 设备
    其中 brq 的网桥和控制节点的同名,意味着它们的端口接在了同一个虚拟交换机上

    tap 设备即刚才创建的实例使用的端口(可以看成是)。

    再使用 brctl 查看

    brctl show

    OpenStack Train版双节点安装(十三)启动实例 - 图11

    发现 tap 设备桥接到了网桥上。

    但是,计算节点的 eth1 此时并没有桥接到这个 brq 上,但是再重启下网络和实例即可桥接,至于其具体原因不明(可能是 openstack 的 bug 或者是实验环境是 vmware-workstation 的原因)。

    (1)重启计算节点网络

    systemctl restart network

    (2)在控制节点重启实例

    openstack server reboot cirros-instance1

    重启好之后再在计算节点使用 brctl show 查看

    OpenStack Train版双节点安装(十三)启动实例 - 图12

    可以看到计算节点的 eth1 已经桥接到 brq 上。

    检查下和实例的网络连接:

    ping 10.8.20.53

    OpenStack Train版双节点安装(十三)启动实例 - 图13

    说明实例已经能够获取 ip 地址。

    在计算节点访问实例的控制台
    查看正在运行的实例

    virsh list

    OpenStack Train版双节点安装(十三)启动实例 - 图14

    记下其 id 是 2

    进入实例的控制台

    virsh console 2

    这里的 2 就是上面记下的 id

    按回车,会出现实例的登录提示符,使用 cirros 用户和提示的密码登录

    OpenStack Train版双节点安装(十三)启动实例 - 图15

    出现 $ 提示符表明登录成功

    OpenStack Train版双节点安装(十三)启动实例 - 图16

    使用 ip a 查看实例的 ip

    OpenStack Train版双节点安装(十三)启动实例 - 图17

    获取到了正确的 ip。

    还可以使用 sudo passwd 修改 root 密码,使用 mount 查看器磁盘挂载情况,其他操作不再赘述。

    OpenStack Train版双节点安装(十三)启动实例 - 图18

    最后再检查下网络访问情况

    ping 10.8.20.42

    ping 10.8.20.41

    ping www.baidu.com

    OpenStack Train版双节点安装(十三)启动实例 - 图19

    按键盘上的 “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 Train版双节点安装(十三)启动实例 - 图20

    openstack server list

    OpenStack Train版双节点安装(十三)启动实例 - 图21

    可以看到,新的实例已经是 ACTIVE。获得的 ip 地址为 10.8.20.51,并且可以 ping 通,说明实例创建成功。

    使用 dashboard 查看实例的状态

    使用前面建立普通用户 ygj 密码 123456 登录 dashboard(不要使用 admin 登录,将看不到任何实例),在实例处可以查看到创建的 2 个实例。OpenStack Train版双节点安装(十三)启动实例 - 图22

    2 个实例

    OpenStack Train版双节点安装(十三)启动实例 - 图23

    也可以访问实例的控制台

    OpenStack Train版双节点安装(十三)启动实例 - 图24

    至此,启动实例完成,下节将介绍怎么安装和配置 centos7 的实例。
    https://blog.51cto.com/11694088/2460904