安装完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