跳到主要内容

多可用区服务配置

介绍在多个可用区(zone)下部署物理机管理服务(baremetal-agent), VMware管理服务(esxi-agent)以及宿主机管理服务(host)。

提示

该方式只适用于使用 ocboot 部署的环境。

平台有可用区(zone)的概念,可以理解为对应实际环境中的机房,刚部署完服务后会有一个默认的可用区 zone0 。

云平台的物理机管理服务(baremetal-agent), VMware管理服务(esxi-agent)以及虚拟机管理服务(host)是可用区级别的服务,如果实际环境中的服务器,物理机或者管理的 VMware 集群位于不同的机房,需要创建多个可用区,然后在不同的可用区部署这些服务。

接下来的文档介绍如何在多个可用区部署这些服务。

创建可用区

可用区的添加使用 onecloud-operator 这个服务来控制,直接修改 onecloud namespace 里面的 default onecloudcluster 资源就行,比如下面的命令添加 my-zone-1 这个可用区:

# 修改 default onecloudcluster 的 spec.customZones
# 添加需要增加的可用区
$ kubectl edit onecloudcluster -n onecloud default
...
customZones:
- my-zone-1
...

修改完后保存退出,然后使用 climc zone-list 看下是否有新建的可用区:

$ climc zone-list
+--------------------------------------+-----------+--------+----------------+
| ID | Name | Status | Cloudregion_ID |
+--------------------------------------+-----------+--------+----------------+
| d64ccd80-7643-454d-8d40-7f5a0d57107f | my-zone-1 | enable | default |
| 04f414a7-ce55-470a-8d64-c6e4e64ccdfc | zone0 | enable | default |
+--------------------------------------+-----------+--------+----------------+

物理机管理服务(baremetal-agent) 和VMware管理服务(esxi-agent)

发现已经有新建的可用区 my-zone-1 了,operator 服务也会自动创建对应可用区的物理机管理服务(baremetal-agent) 和VMware管理服务(esxi-agent) ,查看对应的 deployment,命令如下:

$ kubectl get deployments. -n onecloud | grep my-zone-1
default-baremetal-agent-my-zone-1 0/0 0 0 3m37s
default-esxi-agent-my-zone-1 1/1 1 1 3m42s

其中物理机服务(baremetal-agent)需要选择一个 k8s node 手动开启。

启用 baremetal-agent

# $listen_interface 指的是 baremetal-agent 监听的网卡名称
$ ocadm baremetal enable --node $node_name --listen-interface $listen_interface
# 观察 baremetal agent pod 状态查看是否启动成功
$ watch "kubectl get pods -n onecloud | grep baremetal"
default-baremetal-agent-7c84996c9b-hhllw 1/1 Running 0 3m10s
# 启动成功确认 baremetal-agent 注册到控制节点
$ climc agent-list
+--------------------------------------+--------------------------+----------------+-----------------------------+---------+------------+------------------------------------------+--------------------------------------+
| ID | Name | Access_ip | Manager_URI | Status | agent_type | version | zone_id |
+--------------------------------------+--------------------------+----------------+-----------------------------+---------+------------+------------------------------------------+--------------------------------------+
| f3c2c671-c41d-4f30-8d04-e022b49bb9b5 | baremetal-10.168.222.150 | 10.168.222.150 | https://10.168.222.150:8879 | enabled | baremetal | remotes/origin/master(5e415506120011509) | 6230b485-2e54-480e-8284-33360b8202a8 |
+--------------------------------------+--------------------------+----------------+-----------------------------+---------+------------+------------------------------------------+--------------------------------------+

宿主机服务

宿主机服务(host)管理一台宿主机上的虚拟机,默认情况下的宿主机属于可用区zone0,如果有其它机房的宿主机,需要新建可用区,然后创建一个属于这个可用区的二层网络(wire),再基于这个二层网络(wire)创建包含注册宿主机IP的子网(network),最后把宿主机添加进来就可以了。

创建二层网络

直接基于之前创建的可用区 my-zone-1 创建二层网络 my-wire-1,命令如下:

# 10000 表示的是带宽,假设是万兆的网络
$ climc wire-create my-zone-1 my-wire-1 10000

# 查看新建的二层网络
# 能看到二层网络在 my-zone-1 可用区下面
$ climc wire-list --details
+--------------------------------------+-----------+-----------+--------------------------------------+-----------+----------+---------+---------+--------------+-----------+
| ID | Name | Bandwidth | Zone_ID | Zone | Networks | VPC | VPC_ID | public_scope | domain_id |
+--------------------------------------+-----------+-----------+--------------------------------------+-----------+----------+---------+---------+--------------+-----------+
| f0582003-8a11-4200-8ffd-025bbe7bfc5a | my-wire-1 | 10000 | d64ccd80-7643-454d-8d40-7f5a0d57107f | my-zone-1 | 0 | Default | default | system | default |
+--------------------------------------+-----------+-----------+--------------------------------------+-----------+----------+---------+---------+--------------+-----------+
*** Total: 1 Pages: 1 Limit: 20 Offset: 0 Page: 1 ***

创建 IP 子网

根据上一步,已经创建好了二层网络 my-wire-1,接下来我们创建包含注册宿主机 IP 的子网,假设待注册宿主机的网络信息如下:

  • IP: 192.168.121.61
  • 默认网关:192.168.121.1
  • 掩码:24

根据需要注册的宿主机信息,创建一个 my-hostnet-1,网段为 192.168.121.61-192.168.121.62,这里也可以根据自己的环境变更网络的范围,对应命令如下:

$ climc network-create \
--server-type baremetal \
--gateway 192.168.121.21 \
my-wire-1 my-hostnet-1 192.168.121.61 192.168.121.62 24

添加计算节点

子网创建好后,就可以使用部署工具 ocboot 的 add-node 命令添加目标宿主机到平台了,详细添加方法可以参考添加计算节点,假设目标宿主机 IP 为 192.168.121.61 ,控制节点 IP 为 192.168.121.21,对应命令如下:

$ ./ocboot.py add-node 192.168.121.21 192.168.121.61

等待命令执行完成后,查看宿主机所属的可用区是否为 my-zone-1:

$ climc host-list --zone my-zone-1
+--------------------------------------+----------------------+-------------------+----------------+-----------------------------+---------+---------+-------------+----------+-----------+------------+---------------+--------------+------------+--------------------------------+--------------+-----------+--------------+
| ID | Name | Access_mac | Access_ip | Manager_URI | Status | enabled | host_status | mem_size | cpu_count | node_count | sn | storage_type | host_type | version | storage_size | domain_id | public_scope |
+--------------------------------------+----------------------+-------------------+----------------+-----------------------------+---------+---------+-------------+----------+-----------+------------+---------------+--------------+------------+--------------------------------+--------------+-----------+--------------+
| d80a4163-5466-43e3-8876-6bbcb042c911 | node2-192-168-121-61 | 52:54:00:e0:ed:9d | 192.168.121.61 | https://192.168.121.61:8885 | running | false | online | 3686 | 2 | 1 | Not Specified | rotate | hypervisor | release/3.8(4064385d922011109) | 29405 | default | system |
+--------------------------------------+----------------------+-------------------+----------------+-----------------------------+---------+---------+-------------+----------+-----------+------------+---------------+--------------+------------+--------------------------------+--------------+-----------+--------------+
*** Total: 1 Pages: 1 Limit: 20 Offset: 0 Page: 1 ***

发现 192.168.121.61 的宿主机已经添加到新建的可用区 my-zone-1 了。