添加节点
添加controllers
- bootstrap-servers command用于准备即将加入系统的新节点。他会添加新节点的entry到/etc/hosts,并且一些所有controller节点都需要的服务比如RabbitMQ,如果使用–limit选项,确保包含所有的controller节点,比如 --limit control。
kolla-ansible -i <inventory> bootstrap-servers [--limit <limit>]
- 拉取镜像,–limit参数可仅仅包含新节点
kolla-ansible -i <inventory> pull [--limit <limit>]
- 部署容器到新节点,如果使用–limit选项,全包包含所有的controller节点–limit control。
kolla-ansible -i <inventory> deploy [--limit <limit>]
- 到此新的管理节点及部署完毕。建议进行相应的测试以确保新管理节点的功能性是否正常。
- 部分资源可能并不会自动的平衡到新的管理节点上。可以手动进行再平衡部分负载到新的节点上。对于如何平衡的具体操作可参照移除管理节点中的操作进行。
添加计算节点
- 使用bootstrap-servers command进行新节点的准备工作。
kolla-ansible -i <inventory> bootstrap-servers [--limit <limit>]
- 镜像拉取
kolla-ansible -i <inventory> pull [--limit <limit>]
- 部署容器到新节点
kolla-ansible -i <inventory> deploy [--limit <limit>]
- 建议进行相应的测试进行功能性的检测。
- 实例并不会自动的平衡到该新节点,可手动热迁移实例到新节点上。
openstack server migrate <server> --live-migration --host <target-host> --os-compute-api-version 2.30
- 通常可使用Watcher工具来自动执行。
移除节点
移除controller
- 移除controller或其他节点时,需要考虑集群现在是否有足够的节点。比如集群有3节点的controller,仅仅只能移除一个controller。同时需要考虑在冗余层面的影响。
- 在从集群移除controller节点之前,建议先对其上的资源进行迁移。比如由Neutron DHCP agent提供的网络服务以及由Neutron L3 agent提供的路由服务。其他需要的操作根据你的实际运行环境和配置。
- 对于即将移除的节点,查找该节点上的Neutron routers并且移动他们。并禁用L3 agent。
L3 agent
l3_id=$(openstack network agent list --host <host> --agent-type l3 -f value -c ID)
target_l3_id=$(openstack network agent list --host <target host> --agent-type l3 -f value -c ID)
openstack router list --agent $l3_id -f value -c ID | while read router;do
openstack network agent remove router $l3_id $router --l3
openstack network agent add router $ $target_l3_id $router --l3
done
openstack network agent set $l3_id --disable
DHCP agents
dhcp_id=$(openstack network agent list --host <host> --agent-type dhcp -f value -c ID)
target_dhcp_id=$(openstack network agent list --host <target host> --agent-type dhcp -f value -c ID)
openstack network list --agent $dhcp_id -f value -c ID | while read network;do
openstack network agent remove network $dhcp_id $network --dhcp
openstack network agent add network $target_dhcp_id $network --dhcp
done
- 停止即将停止的节点上的服务
kolla-ansible -i <inventory> stop --yes-i-really-really-mean-it --limit <limit>
- 从ansible inventory中移除hosts。
- 重新配置剩下的controllers来更新集群的节点关系,比如mariadb、rabbitmq。使用适当的限制,比如–limit control。
kolla-ansible -i <inventory> deploy [--limit <limit>]
- 进行测试验证操作的正确性。
- 对每个节点清理服务:
openstack network agent list --host <host> -f value -c ID | while read id;do
openstack network agent delete $id
done
openstack compute service list --os-compute-api-version 2.53 --host <host> -f value -c ID | while read id;do
openstack compute service delete --os-compute-api-version 2.53 $id
done
移除计算节点
- 考虑负载分担到剩余节点是否导致过载。
- 移除计算节点之前,需要对实例进行迁移或者删除。
- 对于需要移除的节点,禁用compute服务确保不会有新的实例调度到该节点之上。
openstack compute service set <host> nova-compute --disable
- 如果可以,迁移实例到其他的节点
openstack server list --host <host> -f value -c ID | while read server;do
openstack server migrate --live-migration $server
done
- 确认是否迁移成功。
- 停止即将移除节点上的所有服务。
kolla-ansible -i <inventory> stop --yes-i-really-really-mean-it [--limit <limit>]
- 从ansible inventory中移除删除的主机
- 测试集群中剩余的主机操作正常。
- 对于每一个节点,清理其服务:
openstack network agent list --host <host> -f value -c ID|while read id;do
openstack network agent delete $id
done
openstack compute service list --os-compute-api-version 2.53 --host <host> -f value -c ID |while read id;do
openstack compute service delete --os-compute-api-version 2.53 $id
done