4.1 创建云主机(网络)

192.168.30.100,计算节点 IP 为 192.168.30.200。Provider 网络的网段配置需要与物理网络网段(192.168.30.0/24)保持一致。1.1 创建 provider 网络
Provider 网络是由管理员创建的底层物理网络映射。云主机连接到该网络后,可以直接获取并使用物理网络的 IP,与物理机处于相同的网络环境中,常用于提供外部网络访问。
1)获取管理员权限
执行 admin-openstack.sh 脚本,获取管理员的命令行执行权限:
source ./admin-openstack.sh
2)创建 provider 网络
执行以下命令创建 provider 网络:
openstack network create --share --external \
--provider-physical-network provider \
--provider-network-type flat provider
--share:允许所有的项目(Project)都可以使用这个虚拟网络。--external:将虚拟网络定义为外部网络(通常作为路由器的外网网关)。如果要创建内部网络,则可以使用--internal。--provider-physical-network provider:指定该虚拟网络映射到的底层物理网络名称(即在 Neutron 配置文件中定义好的物理网络映射名,本例中命名为provider)。--provider-network-type flat:指定提供商网络的类型为flat。Flat 意为“扁平网络”,意味着没有 VLAN 标签隔离,所有该网络上的虚拟机处于同一个二层广播域,直接桥接到物理网络上。
3)创建子网
为 provider 网络创建子网:
openstack subnet create --network provider \
--allocation-pool start=192.168.30.20,end=192.168.30.60 \
--dns-nameserver 223.5.5.5 --gateway 192.168.30.2 \
--subnet-range 192.168.30.0/24 provider
--allocation-pool:设置 IP 地址池的起止范围,云主机将从中自动获取 IP。--dns-nameserver:设置 DNS 服务器。--gateway:设置物理网络的网关(根据实际环境,通常是 .1、.2 或 .254)。--subnet-range:设置该子网的网段。
1.2 创建 Self-service 网络
Self-service 网络(自服务网络)是租户自己创建的内部隔离网络。外部无法直接访问它,需要通过路由器进行网络地址转换(NAT)。
1)获取普通用户权限
执行 demo-openstack.sh 脚本,获取 myuser 用户的命令行执行权限:
source ./demo-openstack.sh
2)创建自服务网络
openstack network create selfservice
3)创建子网
这里我们为其分配 172.16.1.0/24 的内部私有网段:
openstack subnet create --network selfservice \
--dns-nameserver 223.5.5.5 --gateway 172.16.1.1 \
--subnet-range 172.16.1.0/24 selfservice
4)创建路由器
路由器用于连接内外网,实现不同网络之间的通信:
openstack router create router
5)将 Self-service 网络的子网添加到路由器端口
这一步相当于把路由器的内部接口插到了自服务网络上:
openstack router add subnet router selfservice
6)设置路由器的 provider 网络网关
这一步将路由器的外部接口连到了 provider 网络,使其具备访问外网的能力:
openstack router set router --external-gateway provider
1.3 验证网络
网络创建并连接完毕后,我们需要验证网络是否正常工作。
1)获取管理员权限
再次切换回管理员权限:
source ./admin-openstack.sh
2)查看网络命名空间
查询结果应包含 1 个 qrouter 命名空间(路由器)和 2 个 qdhcp 命名空间(因为我们创建了两个子网,每个子网对应一个 DHCP 服务):
ip netns
输出示例:
qrouter-6f4492aa-935c-4c55-a3e0-35087f214e59 (id: 2)
qdhcp-2837cf7e-b575-4bae-9d64-32eda4cc5f45 (id: 1)
qdhcp-4d4404cc-7378-45b8-ae09-bb8ced5c507f (id: 0)
3)查找路由器的外网 IP
列出路由器上的端口,以确定它在 provider 网络上获取的外部网关 IP 地址:
openstack port list --router router
192.168.30.26),在下一步的连通性测试中将会用到。4)测试连通性
从 controller 节点或物理机上 ping 刚刚查到的路由器外网 IP,验证网络打通情况。
a. controller 节点 ping 路由器外网 IP(假设为 192.168.30.26)
ping -c 4 192.168.30.26
输出示例:
PING 192.168.30.26 (192.168.30.26) 56(84) bytes of data.
64 bytes from 192.168.30.26: icmp_seq=1 ttl=64 time=0.273 ms
64 bytes from 192.168.30.26: icmp_seq=2 ttl=64 time=0.064 ms
64 bytes from 192.168.30.26: icmp_seq=3 ttl=64 time=0.070 ms
64 bytes from 192.168.30.26: icmp_seq=4 ttl=64 time=0.030 ms
--- 192.168.30.26 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 0.030/0.109/0.273/0.096 ms
b. 物理机 ping 路由器外网 IP
打开物理机(你的本地电脑)的命令行工具进行测试:
ping 192.168.30.26
输出示例:
正在 Ping 192.168.30.26 具有 32 字节的数据:
来自 192.168.30.26 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.30.26 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.30.26 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.30.26 的回复: 字节=32 时间<1ms TTL=64
192.168.30.26 的 Ping 统计信息:
数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
最短 = 0ms,最长 = 1ms,平均 = 0ms