Routed Control Plane Networks¶
本节描述了路由控制平面网络的配置。这是一个高级概念,通常仅适用于超过广播域合理大小的大型部署。
概念¶
Kayobe 当前支持定义各种不同的网络 - 公共网络、内部网络、隧道网络等。这些通常映射到 VLAN 或扁平网络,并与关联的 IP 子网相关联。当云超过单个 VLAN/子网的合理大小,或在物理上分布时,这种方法将不再适用。
一种解决方法是拥有映射到单个逻辑网络的多个子网,并在它们之间提供路由。这与 Neutron 的 路由提供商网络 类似,但适用于控制平面网络。
限制¶
目前,使用路由控制平面网络存在一些限制。只有以下网络经过测试
admin_ocinternaltunnelstoragestorage_mgmt
此外,只有计算节点和存储节点经过路由控制平面网络的测试 - 控制器始终放置在测试期间相同的网络集上。
使用路由控制平面网络尚未测试裸机配置(overcloud 或 baremetal compute),并且在不采取额外步骤的情况下,预计无法正常工作。
配置¶
将 Kayobe 配置为路由控制平面网络的方法如下
在库存中为不同的网络集创建组
将主机放置在适当的组中
将
vip_address和fqdn网络属性移动到 全局变量将全局网络名称配置移动到组变量
将新网络添加到配置
添加网络接口组变量
示例¶
在此示例中,我们最初有许多不同的逻辑网络
public_010.0.0.0/24VLAN 100
internal_010.0.1.0/24VLAN 101
tunnel_010.0.2.0/24VLAN 102
storage_010.0.3.0/24VLAN 103
storage_mgmt_010.0.4.0/24VLAN 104
最初,以下主机连接到这些网络
controllers[0:2]:public_0,internal_0,tunnel_0,storage_0compute[0:127]:internal_0,tunnel_0,storage_0storage[0:63]:internal_0,storage_0,storage_mgmt_0
现在假设我们希望添加 128 个计算节点和 64 个存储节点。这将超过当前子网的大小。我们可以增加子网大小,但有充分的理由保持广播域相对较小。
为了解决这个问题,我们可以添加更多网络
internal_110.1.1.0/24VLAN 111
tunnel_110.1.2.0/24VLAN 112
storage_110.1.3.0/24VLAN 113
storage_mgmt_110.1.4.0/24VLAN 114
网络必须提供以下网络之间的路由
internal_0和internal_1tunnel_0和tunnel_1storage_0和storage_1storage_mgmt_0和storage_mgmt_1
现在我们可以将新主机连接到这些网络
compute[128:255]:internal_1,tunnel_1,storage_1storage[64:127]:internal_1,storage_1,storage_mgmt_1
库存¶
为了模拟此更改,我们可以使用如下的库存
inventory/hosts¶localhost ansible_connection=local
[controllers]
controller[0:2]
[compute]
compute[0:255]
[storage]
storage[0:127]
[network-0]
controller[0:2]
[compute-network-0]
compute[0:127]
[storage-network-0]
storage[0:63]
[network-0:children]
compute-network-0
storage-network-0
[network-1]
[compute-network-1]
compute[128:255]
[storage-network-1]
storage[64:127]
[network-1:children]
compute-network-1
storage-network-1
Kolla API 地址¶
删除 networks.yml 中定义 vip_address 或 fqdn 网络属性的所有变量,并将配置移动到 API 地址变量 在 kolla.yml 中。
网络名称¶
要将全局网络名称配置移动到组变量,应在 networks.yml 中注释掉以下变量
networks.yml¶#admin_oc_net_name:
#internal_net_name:
#tunnel_net_name:
#storage_net_name:
#storage_mgmt_net_name:
在 inventory/group_vars/network-0 和 inventory/group_vars/network-1 中创建组变量文件
inventory/group_vars/network-0¶admin_oc_net_name: internal_0
internal_net_name: internal_0
tunnel_net_name: tunnel_0
storage_net_name: storage_0
storage_mgmt_net_name: storage_mgmt_0
inventory/group_vars/network-1¶admin_oc_net_name: internal_1
internal_net_name: internal_1
tunnel_net_name: tunnel_1
storage_net_name: storage_1
storage_mgmt_net_name: storage_mgmt_1
网络¶
现在,确保将两组网络定义在 networks.yml 中。静态路由在此处添加到网络对之间,尽管这些将取决于您的路由配置。可能需要其他网络属性,我们仅在此处包含 cidr、vlan 和 routes 以供参考
networks.yml¶public_0_cidr: 10.0.0.0/24
public_0_vlan: 100
internal_0_cidr: 10.0.1.0/24
internal_0_vlan: 101
internal_0_routes:
- cidr: "{{ internal_1_cidr }}"
gateway: 10.0.1.1
internal_1_cidr: 10.1.1.0/24
internal_1_vlan: 111
internal_1_routes:
- cidr: "{{ internal_0_cidr }}"
gateway: 10.1.1.1
tunnel_0_cidr: 10.0.2.0/24
tunnel_0_vlan: 102
tunnel_0_routes:
- cidr: "{{ tunnel_1_cidr }}"
gateway: 10.0.2.1
tunnel_1_cidr: 10.1.2.0/24
tunnel_1_vlan: 112
tunnel_1_routes:
- cidr: "{{ tunnel_0_cidr }}"
gateway: 10.1.2.1
storage_0_cidr: 10.0.3.0/24
storage_0_vlan: 103
storage_0_routes:
- cidr: "{{ storage_1_cidr }}"
gateway: 10.0.3.1
storage_1_cidr: 10.1.3.0/24
storage_1_vlan: 113
storage_1_routes:
- cidr: "{{ storage_0_cidr }}"
gateway: 10.1.3.1
storage_mgmt_0_cidr: 10.0.4.0/24
storage_mgmt_0_vlan: 104
storage_mgmt_0_routes:
- cidr: "{{ storage_mgmt_1_cidr }}"
gateway: 10.0.4.1
storage_mgmt_1_cidr: 10.1.4.0/24
storage_mgmt_1_vlan: 114
storage_mgmt_1_routes:
- cidr: "{{ storage_mgmt_0_cidr }}"
gateway: 10.1.4.1
网络接口¶
由于现在有不同名称的网络,网络接口变量也不同。这意味着我们必须为每组网络和每种主机类型提供组变量文件。例如
inventory/group_vars/compute-network-0/network-interfaces¶internal_0_interface: eth0.101
tunnel_0_interface: eth0.102
storage_0_interface: eth0.103
inventory/group_vars/compute-network-1/network-interfaces¶internal_1_interface: eth0.111
tunnel_1_interface: eth0.112
storage_1_interface: eth0.113
inventory/group_vars/storage-network-0/network-interfaces¶internal_0_interface: eth0.101
storage_0_interface: eth0.103
storage_mgmt_0_interface: eth0.104
inventory/group_vars/storage-network-1/network-interfaces¶internal_1_interface: eth0.111
storage_1_interface: eth0.113
storage_mgmt_1_interface: eth0.114
应删除正常的接口配置组变量文件 inventory/group_vars/compute/network-interfaces 和 inventory/group_vars/storage/network-interfaces。
可以将控制器网络接口的组变量放置在 inventory/group_vars/controllers/network-interfaces 中,如正常情况一样。
替代方法¶
有一种替代方法尚未经过测试,但可能感兴趣。与其使用不同的网络名称(例如 internal_0 和 internal_1),而应可以在所有地方使用相同的名称(例如 internal),但在组变量中定义网络属性。这种方法可能更简洁,并允许使用相同的组变量文件通过 internal_interface 等方式设置网络接口。