• CentOS7安装OpenStack(Rocky版)-08.启动一个虚拟机实例


    安装完openstack的必要组件keystone,nova,glance,neutron以后就可以使用openstack命令创建一台云虚拟机了

    ------------------- 完美的分割线  --------------------

    8.0.neutron 的两种虚拟网络

    对于实际的网络环境,购买好路由器交换机等网络设备后,还需要连接网线,配置局域网络才可以让服务器正常连接上网。

    同样,对于 openstack,安装好 neutron 只相当于购买好了网络设备,仍然需要创建一个虚拟的网络才可以让虚拟机在里面运行。

    对于 openstack 的虚拟网络,在安装 neutron 时只进行了简单的叙述,有两种模式:

    1)Provider network

    # 网络结构图参考:https://docs.openstack.org/install-guide/launch-instance-networks-provider.html

    简单理解就是与现有物理网络桥接起来的网络,网络结构和配置较简单,适用于小规模服务器集群(几十台几百台),网络结构图如下,

    在这种网络中,集群中的各个节点通过物理网络连接,节点内部通过 L2( provider 网桥/交换机)与物理网络进行连接,这个网络可以包括为实例提供 IP 地址的 DHCP 服务器。

    集群中的实例(虚拟机)通过 Provider 网络为其分配映射的tap端口与桥接网卡传输数据从而进行内外部通信,类似 kvm 虚拟机采用桥接模式使得网络结构,网络结构示意图如下:

    # ok

    2)Self-service network(自服务网络)

    # 网络结构图参考:https://docs.openstack.org/install-guide/launch-instance-networks-selfservice.html

    类似阿里云的内部私有网络,可以让使用者自己构建一个内部使用对外隔离的网络,结构灵活,适用于大规模服务器集群(上千台),结构如下图:

    是在provider网络上的扩展,通过self-service网桥使用vxlan技术创建一个独立的网络,这个独立的网络也可以通过vxlan tunnels连接到物理网络进行数据传输

    网络连接拓扑图如下:

    # ok

    8.1.创建 provider 网络

    1)在控制节点上,创建网络接口

    # 加载 admin 凭证来获取管理员能执行的命令访问权限

    cd /server/tools/
    source keystone-admin-pass.sh
    openstack network create --share --external --provider-physical-network provider  --provider-network-type flat provider
    openstack network list

    # 实例演示:

    [root@openstack01 tools]# openstack network create --share --external --provider-physical-network provider  --provider-network-type flat provider
    +---------------------------+--------------------------------------+
    | Field                     | Value                                |
    +---------------------------+--------------------------------------+
    | admin_state_up            | UP                                   |
    | availability_zone_hints   |                                      |
    | availability_zones        |                                      |
    | created_at                | 2018-11-06T06:34:01Z                 |
    | description               |                                      |
    | dns_domain                | None                                 |
    | id                        | 25346d04-0f1f-4277-b896-ba3f01425d86 |
    | ipv4_address_scope        | None                                 |
    | ipv6_address_scope        | None                                 |
    | is_default                | None                                 |
    | is_vlan_transparent       | None                                 |
    | mtu                       | 1500                                 |
    | name                      | provider                             |
    | port_security_enabled     | True                                 |
    | project_id                | 3706708374804e2eb4ed056f55d84666     |
    | provider:network_type     | flat                                 |
    | provider:physical_network | provider                             |
    | provider:segmentation_id  | None                                 |
    | qos_policy_id             | None                                 |
    | revision_number           | 0                                    |
    | router:external           | External                             |
    | segments                  | None                                 |
    | shared                    | True                                 |
    | status                    | ACTIVE                               |
    | subnets                   |                                      |
    | tags                      |                                      |
    | updated_at                | 2018-11-06T06:34:01Z                 |
    +---------------------------+--------------------------------------+
    [root@openstack01 tools]# openstack network list
    +--------------------------------------+----------+---------+
    | ID                                   | Name     | Subnets |
    +--------------------------------------+----------+---------+
    | 25346d04-0f1f-4277-b896-ba3f01425d86 | provider |         |
    +--------------------------------------+----------+---------+

    # 附:旧版的命令(在这个版本中会少创建一些东西),可以参考

    neutron net-create --shared --provider:physical_network [自定义的物理网卡的名称] --provider:network_type flat(单一扁平网络) [创建的虚拟网络名称]
    neutron net-create --shared --provider:physical_network provider  --provider:network_type flat provider

    2)检查网络配置

    # 确认 ml2_conf.ini 以下配置选项

    # 上面的命令 --provider-network-type flat 网络名称 provider 与此对应

    vim /etc/neutron/plugins/ml2/ml2_conf.ini
    -----------------------------
    [ml2_type_flat]
    flat_networks = provider
    -----------------------------

    # 确认 linuxbridge_agent.ini 以下配置选项

    # 上面的命令 --provider-physical-network provider 于此对应,网卡注意要于此对应,控制节点的网卡名称

    vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
    -----------------------------
    [linux_bridge]
    physical_interface_mappings = provider:eno16777736
    -----------------------------

    3)创建 provider 子网

    openstack subnet create --network provider --no-dhcp --allocation-pool start=192.168.1.210,end=192.168.1.220 --dns-nameserver 4.4.4.4 --gateway 192.168.1.1 --subnet-range 192.168.1.0/24 provider-subnet01
    openstack subnet create --network provider --dhcp --subnet-range 192.168.2.0/24 provider-subnet02
    openstack subnet list

    # 实例演示:

    [root@openstack01 tools]# openstack subnet create --network provider --no-dhcp --allocation-pool start=192.168.1.210,end=192.168.1.220 --dns-nameserver 4.4.4.4 --gateway 192.168.1.1 --subnet-range 192.168.1.0/24 provider-subnet01
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 192.168.1.210-192.168.1.220          |
    | cidr              | 192.168.1.0/24                       |
    | created_at        | 2018-11-12T12:48:08Z                 |
    | description       |                                      |
    | dns_nameservers   | 4.4.4.4                              |
    | enable_dhcp       | False                                |
    | gateway_ip        | 192.168.1.1                          |
    | host_routes       |                                      |
    | id                | 2aaf50aa-ab80-4ed5-99c8-58d4d4d31ff3 |
    | ip_version        | 4                                    |
    | ipv6_address_mode | None                                 |
    | ipv6_ra_mode      | None                                 |
    | name              | provider-subnet01                    |
    | network_id        | 25346d04-0f1f-4277-b896-ba3f01425d86 |
    | project_id        | 3706708374804e2eb4ed056f55d84666     |
    | revision_number   | 0                                    |
    | segment_id        | None                                 |
    | service_types     |                                      |
    | subnetpool_id     | None                                 |
    | tags              |                                      |
    | updated_at        | 2018-11-12T12:48:08Z                 |
    +-------------------+--------------------------------------+
    [root@openstack01 tools]# openstack subnet create --network provider --dhcp --subnet-range 192.168.2.0/24 provider-subnet02
    +-------------------+--------------------------------------+
    | Field             | Value                                |
    +-------------------+--------------------------------------+
    | allocation_pools  | 192.168.2.2-192.168.2.254            |
    | cidr              | 192.168.2.0/24                       |
    | created_at        | 2018-11-12T12:48:13Z                 |
    | description       |                                      |
    | dns_nameservers   |                                      |
    | enable_dhcp       | True                                 |
    | gateway_ip        | 192.168.2.1                          |
    | host_routes       |                                      |
    | id                | 0d21b823-ae0c-4c3e-87e6-22e3b2d794c4 |
    | ip_version        | 4                                    |
    | ipv6_address_mode | None                                 |
    | ipv6_ra_mode      | None                                 |
    | name              | provider-subnet02                    |
    | network_id        | 25346d04-0f1f-4277-b896-ba3f01425d86 |
    | project_id        | 3706708374804e2eb4ed056f55d84666     |
    | revision_number   | 0                                    |
    | segment_id        | None                                 |
    | service_types     |                                      |
    | subnetpool_id     | None                                 |
    | tags              |                                      |
    | updated_at        | 2018-11-12T12:48:13Z                 |
    +-------------------+--------------------------------------+
    [root@openstack01 tools]# openstack subnet list
    +--------------------------------------+-------------------+--------------------------------------+----------------+
    | ID                                   | Name              | Network                              | Subnet         |
    +--------------------------------------+-------------------+--------------------------------------+----------------+
    | 0d21b823-ae0c-4c3e-87e6-22e3b2d794c4 | provider-subnet02 | 25346d04-0f1f-4277-b896-ba3f01425d86 | 192.168.2.0/24 |
    | 2aaf50aa-ab80-4ed5-99c8-58d4d4d31ff3 | provider-subnet01 | 25346d04-0f1f-4277-b896-ba3f01425d86 | 192.168.1.0/24 |
    +--------------------------------------+-------------------+--------------------------------------+----------------+

    # 至此,provider 网络创建完成,可以创建虚拟机

    8.2.在在控制节点使用普通用户 myuser 创建密钥对

    # 大部分云镜像支持功功秘钥认证而不是密码认证,也可以不创建,使用已有的公钥
    # 秘钥对用于使用 openstack 的 dashboard 远程管理虚拟机
    # 可以使用管理员 admin 创建也可以使用普通用户 myuser 创建,这里使用普通用户进行虚拟机创建的演示

    1)使用普通用户myuser的权限

    cd /server/tools/
    source keystone-demo-pass.sh

    2)生成秘钥对

    ssh-keygen -q -N ""

    3)添加公钥到openstack秘钥系统

    openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

    4)查看可用的公钥(验证公钥的添加)

    openstack keypair list

    8.3.在控制节点为示例项目myproject增加安全组规则 

    # 默认情况下,每个项目都有其自己的default默认安全组,适用于所有项目中的实例并且包括拒绝远程访问实例的防火墙规则。
    # 项目自身的管理员只可以管理自身项目中的安全组规则,admin管理员也无法管理其他项目的安全组规则
    # 对诸如CirrOS这样的Linux镜像,建议至少允许ICMP (ping) 和安全shell(SSH)规则。

    1)使用普通用户myuser的权限

    cd /server/tools/
    source keystone-demo-pass.sh

    2)允许 ICMP (ping)

    openstack security group rule create --proto icmp default

    3)允许安全 shell (SSH) 的访问

    openstack security group rule create --proto tcp --dst-port 22 default

    4)查看安全组和相关的规则

    openstack security group list
    openstack security group rule list

    8.4.在控制节点使用普通用户在 provider 网络创建虚拟机实例 

    1)控制机:使用 admin 用户创建主机模板

    # 注意:虚拟机模板配置只能由 admin 管理员创建和管理,普通用户 myuser 只能使用已有的虚拟机模板
    # 列表查看实例配置模板

    cd /server/tools/
    source keystone-admin-pass.sh
    openstack flavor list

    # 使用 admin 用户创建自定义配置的主机模板 flavor

    openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
    openstack flavor create --id 1 --vcpus 1 --ram 1024 --disk 50 m1.tiny
    openstack flavor create --id 2 --vcpus 1 --ram 2048 --disk 500 m1.small
    openstack flavor create --id 3 --vcpus 2 --ram 4096 --disk 500 m1.medium
    openstack flavor create --id 4 --vcpus 4 --ram 8192 --disk 500 m1.large
    openstack flavor create --id 5 --vcpus 8 --ram 16384 --disk 500 m1.xlarge
    openstack flavor list

    # 以下为常用命令,在此列出下:

    ## 查看可用的虚拟机配置模板

    openstack flavor list

    ## 查看可用的镜像

    openstack image list

    # 查看可用的网络

    openstack network list
    openstack subnet list

    ## 查看可用的公钥(验证公钥的添加)

    openstack keypair list

    ## 查看可用的安全组

    openstack security group list
    openstack security group rule list

    2)控制机:使用普通用户创建一台虚拟机实例

    # R 版的可以使用网络名称和 ID 创建虚拟机,如果只有一个网络也可以不使用 --nic 选项

    cd /server/tools/
    source keystone-demo-pass.sh
    openstack server create --flavor m1.nano --image cirros --nic net-id=provider --security-group default --key-name mykey cirros-01
    openstack server create --flavor m1.nano --image cirros --nic net-id=25346d04-0f1f-4277-b896-ba3f01425d86 --security-group default --key-name mykey cirros-02
    openstack server create --flavor m1.nano --image cirros --security-group default --key-name mykey cirros-03

    # 检查实例的状态

    openstack server list

    # 当构建过程完全成功后,状态会从 BUILD 变为 ACTIVE

    3)显示主机的 novnc 地址(vnc控制台)

    openstack console url show cirros-01

    # 得出的地址可以直接使用浏览器进行访问,并管理相应用主机

    login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.

    # 至此文档已经补充完毕,20200618

    8.5.创建私有网络(暂略)

    # openstack 的私有网络类似阿里云等云厂商的VPC子网,用户可以自行定义子网内的网络架构,比较灵活

    # 附官方文档:Create the self-service network 

    https://docs.openstack.org/install-guide/launch-instance-networks-selfservice.html

  • 相关阅读:
    风雨中,苦算什么!!!
    痛心疾首+无奈绝望!!!
    PHP页面跳转总结
    Java的HttpClient的实现
    java细节篇(==和equals的区别)
    cmd命令笔记
    Python的HttpClient实现
    常用linux命令
    Go的HttpClient实现
    android问题笔记集
  • 原文地址:https://www.cnblogs.com/tssc/p/9902641.html
Copyright © 2020-2023  润新知