6.3. 控制节点的位置
		默认情况下,director 为每个角色随机选择节点,通常基于它们的配置集标签(tag)。但是,director 也提供了指定特定节点的功能。它可以实现:
	
- 分配特定节点 ID,如controller-0、controller-1等
- 设置自定义的主机名
- 设置特定的 IP 地址
6.3.1. 分配特定的节点 ID
复制链接链接已复制到粘贴板!
			这个过程把节点 ID 分配 给特定节点。节点 ID 的示例包括 
controller-0、controller-1、novacompute-0、novacompute-1 等等。
		
			第一步是,分配 ID 作为每个节点的能力,从而使 Nova 调度程序可以在部署时进行匹配。例如:
		
ironic node-update <id> replace properties/capabilities='node:controller-0,boot_option:local'
ironic node-update <id> replace properties/capabilities='node:controller-0,boot_option:local'
			这会把能力 
node:controller-0 分配给节点。使用连续的索引值来为所有节点进行分配(以 0 开始)。确定对于一个特定角色(Controller、Compute 以及每个存储角色)的所有节点都以同样形式进行标记(tag),否则 Nova 调度程序将无法正确匹配能力。
		
			下一步是,创建一个 Heat 环境文件(例如,
scheduler_hints_env.yaml),它使用调度程序的 hint 来为每个节点匹配能力。例如:
		parameter_defaults:
  ControllerSchedulerHints:
    'capabilities:node': 'controller-%index%'
parameter_defaults:
  ControllerSchedulerHints:
    'capabilities:node': 'controller-%index%'
			要使用这些调度程序 hint,在进行 Overcloud 创建时在 
overcloud deploy command 中包括  scheduler_hints_env.yaml 环境文件。
		
			按照同样的方法,使用以下参数设置每个节点:
		
- ControllerSchedulerHints用于 Controller 节点。
- NovaComputeSchedulerHints用于 Compute 节点。
- BlockStorageSchedulerHints用于 Block Storage 节点。
- ObjectStorageSchedulerHints用于 Object Storage 节点。
- CephStorageSchedulerHints用于 Ceph Storage 节点。
注意
				节点位置的设置会比配置集匹配有更高优先级。为了避免调度失败,在部署时使用 
baremetal flavor,而不要使用针对于配置集匹配的 flavor(如 compute、control 等)。
			6.3.2. 自定义主机名
复制链接链接已复制到粘贴板!
			通过使用 第 6.3.1 节 “分配特定的节点 ID” 中介绍的节点 ID 配置,director 可以为每个节点分配一个特定的自定义主机名。如把系统的主机名设置为 
rack2-row12 来表示它所在的位置。
		
			在 
parameter_defaults 的部分中定义 HostnameMap,使用 HostnameFormat 参数设置 head 定义的原始主机名的映射信息(如 overcloud-controller-0),第二个值是那个节点的自定义主机名(如 overcloud-controller-prod-123-0)。
		
			通过使用这个方法以及节点 ID 的放置功能,每个节点将会有一个自定义主机名。
		
6.3.3. 分配可预测的 IP
复制链接链接已复制到粘贴板!
			为了可以对环境进行更好的控制,director 可以在每个网络中为 Overcloud 节点分配特定的 IP。使用核心 Heat 模板集合中的 
environments/ips-from-pool-all.yaml 环境文件,把这个文件复制到 stack 用户的 templates 目录中。
		cp /usr/share/openstack-tripleo-heat-templates/environments/ips-from-pool-all.yaml ~/templates/.
$ cp /usr/share/openstack-tripleo-heat-templates/environments/ips-from-pool-all.yaml ~/templates/.
ips-from-pool-all.yaml 文件包括两个主要部分。
		
			第一部分是一组 
resource_registry 用来覆盖默认设置。它们用来通知 director 在一个节点类型的指定端口上使用一个特定的 IP。修改每个资源来使用到代表它们的模板的绝对 URL。例如:
		
			默认的设置是,所有节点类型上的所有网络都使用预先配置的 IP。如果需要设置特定的网络或节点类型使用默认的 IP 分配设置,在环境文件中把与那个节点类型或网络相关的 
resource_registry 项删除。
		
			第二个部分是 parameter_defaults,它代表了实际分配的 IP 地址。每个节点类型都有一个相关的参数:
		
- ControllerIPs代表 Controller 节点。
- NovaComputeIPs代表 Compute 节点。
- CephStorageIPs代表 Ceph Storage 节点。
- BlockStorageIPs代表 Block Storage 节点。
- SwiftStorageIPs代表 Object Storage 节点。
			每个参数就是一个网络名称到地址列表的映射信息。每个网络类型需要最少有它们在网络中的节点数量相同的数量。director 会顺序分配地址。每个类型的第一个节点会被分配相关列表中的第一个地址,第二个节点被分配相关列表中的第二个地址,以此类推。
		
			例如,如果一个 Overcloud 将要包括三个 Ceph Storage 节点,CephStorageIPs 参数的设置会和以下类似:
		
			第一个 Ceph Storage 节点会接收两个地址:172.16.1.100 和 172.16.3.100。第二个节点接收 172.16.1.101 和 172.16.3.101,第三个节点接收 172.16.1.102 和 172.16.3.102。相同原则适用于其它节点类型。
		
			确定所选的 IP 地址位于环境文件中定义的每个网络的地址分配池之外(请参阅 第 6.2.2 节 “创建一个网络环境文件”)。例如,确定 
internal_api 分配的地址位于 InternalApiAllocationPools 的范围之外,这会避免与每个网络所选 VIP 的冲突。同样,确定分配的 IP 地址与为外部负载平衡环境定义的 VIP 配置没有冲突(请参阅 第 6.5 节 “配置外部负载平衡”)。
		
			要在部署的过程中应用这个配置,在 
openstack overcloud deploy 命令中包括这个环境文件。