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

 

posted @ 2018-10-30 15:32  天生帅才  阅读(6699)  评论(17编辑  收藏  举报
// 百度统计