16.4. 在替换使用可预测的 IP 地址和 HostNameMap 的节点时保留主机名
如果将 overcloud 配置为使用可预测的 IP 地址,并且 HostNameMap
将基于 heat 的主机名映射到预置备节点的主机名,则必须配置 overcloud,以将新的替换节点索引映射到 IP 地址和主机名。
流程
-
以
stack
用户的身份登录 undercloud。 Source
stackrc
文件:$ source ~/stackrc
检索您要替换资源的
physical_resource_id
和removed_rsrc_list
:(undercloud)$ openstack stack resource show <stack> <role>
-
将
<stack>
替换为资源所属的堆栈的名称,如overcloud
。 将
&
lt;role> 替换为您要替换节点的角色的名称,如Compute
。输出示例:
+------------------------+-----------------------------------------------------------+ | Field | Value | +------------------------+-----------------------------------------------------------+ | attributes | {u'attributes': None, u'refs': None, u'refs_map': None, | | | u'removed_rsrc_list': [u'2', u'3']} | 1 | creation_time | 2017-09-05T09:10:42Z | | description | | | links | [{u'href': u'http://192.168.24.1:8004/v1/bd9e6da805594de9 | | | 8d4a1d3a3ee874dd/stacks/overcloud/1c7810c4-8a1e- | | | 4d61-a5d8-9f964915d503/resources/Compute', u'rel': | | | u'self'}, {u'href': u'http://192.168.24.1:8004/v1/bd9e6da | | | 805594de98d4a1d3a3ee874dd/stacks/overcloud/1c7810c4-8a1e- | | | 4d61-a5d8-9f964915d503', u'rel': u'stack'}, {u'href': u'h | | | ttp://192.168.24.1:8004/v1/bd9e6da805594de98d4a1d3a3ee874 | | | dd/stacks/overcloud-Compute-zkjccox63svg/7632fb0b- | | | 80b1-42b3-9ea7-6114c89adc29', u'rel': u'nested'}] | | logical_resource_id | Compute | | physical_resource_id | 7632fb0b-80b1-42b3-9ea7-6114c89adc29 | | required_by | [u'AllNodesDeploySteps', | | | u'ComputeAllNodesValidationDeployment', | | | u'AllNodesExtraConfig', u'ComputeIpListMap', | | | u'ComputeHostsDeployment', u'UpdateWorkflow', | | | u'ComputeSshKnownHostsDeployment', u'hostsConfig', | | | u'SshKnownHostsConfig', u'ComputeAllNodesDeployment'] | | resource_name | Compute | | resource_status | CREATE_COMPLETE | | resource_status_reason | state changed | | resource_type | OS::Heat::ResourceGroup | | updated_time | 2017-09-05T09:10:42Z | +------------------------+-----------------------------------------------------------+
- 1
removed_rsrc_list
列出了已经为资源删除的节点索引。
-
将
检索
resource_name
,以确定 heat 应用到此资源节点的最大索引:(undercloud)$ openstack stack resource list <physical_resource_id>
-
使用在第 3 步中获取的 ID 替换
<physical_resource_id>
。
-
使用在第 3 步中获取的 ID 替换
使用
resource_name
和removed_rsrc_list
确定 heat 将应用到新节点的下一个索引:-
如果
removed_rsrc_list
为空,则下一个索引将是(current_maximum_index)+ 1。 -
如果
removed_rsrc_list
包含值(current_maximum_index)+ 1,则下一个索引将是下一个可用索引。
-
如果
检索替换裸机节点的 ID:
(undercloud)$ openstack baremetal node list
使用新索引更新替换节点的功能:
openstack baremetal node set --property capabilities='node:<role>-<index>,boot_option:local' <node>
-
将
<role>
替换为您要替换节点的角色的名称,如compute
。 -
将 &
lt;index&
gt; 替换为在第 5 步中计算的索引。 -
将
<node>
替换为裸机节点的 ID。
计算调度程序使用节点功能与部署时的节点匹配。
-
将
通过在
HostnameMap
配置中添加索引来为新节点分配主机名,例如:parameter_defaults: ControllerSchedulerHints: 'capabilities:node': 'controller-%index%' ComputeSchedulerHints: 'capabilities:node': 'compute-%index%' HostnameMap: overcloud-controller-0: overcloud-controller-prod-123-0 overcloud-controller-1: overcloud-controller-prod-456-0 1 overcloud-controller-2: overcloud-controller-prod-789-0 overcloud-controller-3: overcloud-controller-prod-456-0 2 overcloud-compute-0: overcloud-compute-prod-abc-0 overcloud-compute-3: overcloud-compute-prod-abc-3 3 overcloud-compute-8: overcloud-compute-prod-abc-3 4 ....
注意不要删除从
HostnameMap
中删除的节点映射。将替换节点的 IP 地址添加到网络 IP 地址映射文件
ips-from-pool-all.yaml
中的每个网络 IP 地址列表的末尾。在以下示例中,新索引overcloud-controller-3
的 IP 地址添加到每个ControllerIPs
网络的 IP 地址列表中,并分配与overcloud-controller-1
相同的 IP 地址,因为它替换了overcloud-controller-1
。新索引overcloud-compute-8
的 IP 地址也添加到每个ComputeIPs
网络的 IP 地址列表中,并分配与它替换的索引相同的 IP 地址:parameter_defaults: ControllerIPs: ... internal_api: - 192.168.1.10 1 - 192.168.1.11 2 - 192.168.1.12 3 - 192.168.1.11 4 ... storage: - 192.168.2.10 - 192.168.2.11 - 192.168.2.12 - 192.168.2.11 ... ComputeIPs: ... internal_api: - 172.17.0.10 5 - 172.17.0.11 6 - 172.17.0.11 7 ... storage: - 172.17.0.10 - 172.17.0.11 - 172.17.0.11 ...
- 1
- 分配给索引 0 的 IP 地址,主机名为
overcloud-controller-prod-123-0
。 - 2
- 分配给索引 1 的 IP 地址,主机名
overcloud-controller-prod-456-0
。此节点由索引 3 替代。不要删除此条目。 - 3
- 分配给索引 2 的 IP 地址,主机名为
overcloud-controller-prod-789-0
。 - 4
- 分配给索引 3 的 IP 地址,主机名为
overcloud-controller-prod-456-0
。这是替换索引 1 的新节点。 - 5
- 分配给索引 0 的 IP 地址,主机名为
overcloud-compute-0
。 - 6
- 分配给索引 1 的 IP 地址,主机名为
overcloud-compute-3
。此节点由索引 2 替代。不要删除此条目。 - 7
- 分配给索引 2 的 IP 地址,主机名为
overcloud-compute-8
。这是替换索引 1 的新节点。