资源池化网络双集群部署
内容简介
openGauss资源池化是openGauss推出的一种新型的集群架构.通过DMS和DSS组件,实现集群中多个节点的底层存储数据共享和节点间的内存实时共享,从而节省底层存储资源,并支持集群内部一写多读及实时一致性读。本文主要介绍基于资源池化部署双集群网络。
- 在社区上正式发布的企业版安装包中,如果需要搭建资源池化网络双集群,在硬件上需要准备磁阵,服务器和光交换机,且需要部署CM和OM组件。
手动部署网络双集群示例
资源池化部署通过om管理工具部署两个资源池化单集群,再配置容灾参数,从而搭建网络双集群。
说明: 此处的手动安装是指工程编译之后,可通过om管理工具执行相关命令进行资源池化集群安装部署,openGauss常规安装请参照《安装指南》。
-
前置条件
-
工程已完成代码编译,编译请参见软件安装编译。
- 主备存储已经挂载磁阵LUN设备,磁阵设备可用。
-
限制条件
-
一套正常的dorado存储,需要搭建两套资源池化集群(至少2+2计算节点)。
- 组网方式
| 生产中心 | 主端 | 业务计算节点0 | 10.0.0.10 | 主存储 | Dorado1 |
| 业务计算节点1 | 10.0.0.20 | ||||
| 容灾中心 | 备端 | 业务计算节点0 | 20.0.0.10 | 备存储 | Dorado2 |
| 业务计算节点1 | 20.0.0.20 | ||||
| - 操作步骤 |
第一步: 在主存储上创建资源池化需要的lun,并且所有lun全部映射到业务计算节点上
- 需要保证同一个Dorado lun在一个集群内多台机器上映射的盘符一致,若不一致可以通过建立软连接的方法,使其对openGauss暴露的盘符一致即可。
-
例如wwn为00000000000001的盘在主集群0节点的盘符为sda,在主集群1节点的盘符为sdb,我们可以通过
1. ll /dev/disk/by-id // 查看lun对应的wwn来确定具体的盘符 2. ln -s /dev/sda /dev/first // 在0节点执行 3. ln -s /dev/sdb /dev/first // 在1节点执行然后将/dev/first作为我们可用的盘
lun 盘符 data /dev/sda xlog /dev/sdb votingDiskPath /dev/sdc shareDiskDir /dev/sdd
第二步: 主存储上准备xml文件。
在《文档->安装指南->企业版安装->安装openGauss->创建XML配置文件->配置数据库名称及各项目录》中有配置说明, <https://docs.opengauss.org/zh/docs/5.0.0/docs/InstallationGuide/%E5%88%9B%E5%BB%BAXML%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.html>
根据配置说明准备资源池化集群需要的xml文件,以一主一备举例:
```
1.
2.
- ```
将xml保存在/opt/software/openGauss/cluster_config.xml中
Tips: 用户需要修改节点名称、节点IP、目录、盘符、端口号
第三步: 在主存储上执行如下操作安装部署主集群,安装用户omm。
执行《文档->安装指南->企业版安装->安装openGauss->初始化安装环境》中的步骤,<https://docs.opengauss.org/zh/docs/5.0.0/docs/InstallationGuide/%E5%88%9D%E5%A7%8B%E5%8C%96%E5%AE%89%E8%A3%85%E7%8E%AF%E5%A2%83.html>
简化步骤如下:
``` 1. su - root 2. mkdir -p /opt/software/openGauss 3. chmod 755 -R /opt/software 4. 将下载的安装包放置/opt/software/openGauss目录下
- cd /opt/software/openGauss
- tar -zxvf openGauss-All-x.x.x-openEuler20.03-x86_64.tar.gz
-
tar -zxvf openGauss-OM-x.x.x-openEuler20.03-x86_64.tar.gz
-
cd /opt/software/openGauss/script
-
./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --sep-env-file=/home/omm/env
-
su - omm
- source /home/omm/env
- gs_install -X /opt/software/openGauss/cluster_config.xml ```
参数解释:
- sep-env-file 分离环境变量,参数取值是一个安装用户omm可以访问到的文件目录
- omm 操作系统用户
- dbgrp 操作系统用户属组
第四步: 查询主集群状态。
建立容灾关系之后就是主集群,未建立容灾关系之前还是资源池化单集群。
``` [huawei@node1 dn_6001]$ cm_ctl query -Cvidp [ CMServer State ]
## node node_ip instance state
1 node1 10.0.0.10 1 /opt/huawei/install/cm/cm_server Primary 2 node2 10.0.0.20 2 /opt/huawei/install/cm/cm_server Standby
1. [ Defined Resource State ]
3. node node_ip res_name instance state
4. ---------------------------------------------------------
5. 1 node1 10.0.0.10 dms_res 6001 OnLine
6. 2 node2 10.0.0.20 dms_res 6002 OnLine
7. 1 node1 10.0.0.10 dss 20001 OnLine
8. 2 node2 10.0.0.20 dss 20002 OnLine
10. [ Cluster State ]
12. cluster_state : Normal
13. redistributing : No
14. balanced : Yes
15. current_az : AZ_ALL
17. [ Datanode State ]
19. node node_ip instance state | node node_ip instance state
20. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
21. 1 node1 10.0.0.10 6001 25400 /opt/huawei/install/data/dn P Primary Normal | 2 node2 10.0.0.20 6002 25400 /opt/huawei/install/data/dn S Standby Normal
22. ```
24. 第五步: 在备存储上准备lun和xml文件。同第1步和第2步一样。
26. `Tips`: 用户需要修改节点名称、节点IP、目录、盘符、端口号
28. 第六步: 在备存储上执行如下操作安装部署备集群,安装用户omm。
30. 简化步骤如下:
32. ```
33. su - root
34. mkdir -p /opt/software/openGauss
35. chmod 755 -R /opt/software
36. 将下载的安装包放置/opt/software/openGauss目录下
38. cd /opt/software/openGauss
39. tar -zxvf openGauss-All-x.x.x-openEuler20.03-x86_64.tar.gz
40. tar -zxvf openGauss-OM-x.x.x-openEuler20.03-x86_64.tar.gz
42. cd /opt/software/openGauss/script
43. ./gs_preinstall -U omm -G dbgrp -X /opt/software/openGauss/cluster_config.xml --sep-env-file=/home/omm/env
45. su - omm
46. gs_install -X /opt/software/openGauss/cluster_config.xml
47. ```
49. 第七步: 查询备存储上集群(建立容灾关系之后就是备集群)状态。
51. ```
52. 建立容灾关系之后就是备集群,未建立容灾关系之前还是资源池化单集群。
53. [omm@node1 dn_6001]$ cm_ctl query -Cvidp
54. [ CMServer State ]
56. node node_ip instance state
57. -------------------------------------------------------------------------
58. 1 node1 20.0.0.10 1 /opt/huawei/install/cm/cm_server Primary
59. 2 node2 20.0.0.20 2 /opt/huawei/install/cm/cm_server Standby
62. [ Defined Resource State ]
64. node node_ip res_name instance state
65. ---------------------------------------------------------
66. 1 node1 20.0.0.10 dms_res 6001 OnLine
67. 2 node2 20.0.0.20 dms_res 6002 OnLine
68. 1 node1 20.0.0.10 dss 20001 OnLine
69. 2 node2 20.0.0.20 dss 20002 OnLine
71. [ Cluster State ]
73. cluster_state : Normal
74. redistributing : No
75. balanced : Yes
76. current_az : AZ_ALL
78. [ Datanode State ]
80. node node_ip instance state | node node_ip instance state
81. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
82. 1 node1 20.0.0.10 6001 25400 /opt/huawei/install/data/dn P Primary Normal | 2 node2 20.0.0.20 6002 25400 /opt/huawei/install/data/dn S Standby Normal
83. ```
85. 第八步: 停止主集群,配置容灾参数,重新拉起主集群
87. ```
88. cm_ctl stop
90. 主节点
91. gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "application_name = 'dn_master_0'"
92. gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "ss_disaster_mode = stream"
93. gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=10.0.0.10 localport=25400 remotehost=20.0.0.10 remoteport=25400'"
94. gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=10.0.0.10 localport=25400 remotehost=20.0.0.20 remoteport=25400'"
96. gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host all all 20.0.0.10/32 trust"
97. gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host all all 20.0.0.20/32 trust"
99. 备节点
100. gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "application_name = 'dn_master_1'"
101. gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "ss_disaster_mode = stream"
102. gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=10.0.0.20 localport=25400 remotehost=20.0.0.10 remoteport=25400'"
103. gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=10.0.0.20 localport=25400 remotehost=20.0.0.20 remoteport=25400'"
105. gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host all all 20.0.0.10/32 trust"
106. gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host all all 20.0.0.20/32 trust"
108. 设置主集群cm参数
109. cm_ctl set --param --agent -k ss_double_cluster_mode=1
110. cm_ctl set --param --server -k ss_double_cluster_mode=1
112. 启动主集群
113. cm_ctl start
114. ```
116. 参数解释:
118. - \-N:指定节点名称,表示修改该节点的配置。
119. - \-D:指定数据库目录。
120. - \-c:指定修改或新增postgresql.conf文件内容。
121. - \-h:指定修改或新增pg\_hba.conf文件内容。
122. - application\_name:数据库节点名称。
123. - ss\_disaster\_mode:数据库容灾模式,stream为流复制,dorado为Dorado存储。
124. - cross\_cluster\_replconninfo:主备集群建立连接信息,localport为数据库HA端口(上述示例用的xml里的dataPortBase,当开启线程池enable\_thread\_pool时,需配置为实际HAPort),localhost为当前节点ip,remotehost为备集群IP。
125. - ss\_double\_cluster\_mode:集群模式,1为双集群的主集群,2为双集群的备集群,0为单集群,默认为0。
127. `Tips`: gs\_guc为openGauss提供的修改配置文件工具,也可以通过直接打开/opt/huawei/install/data/dn($PGDATA)下的postgresql.conf与pg\_hba.conf文件将上面双引号中的内容手动写入文件中。
129. 第九步:. 停止备存储上的资源池化单集群(建立容灾关系之后就是备集群),配置容灾参数
131. ```
132. cm_ctl stop
134. 主节点
135. gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "application_name = 'dn_standby_0'"
136. gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "ss_disaster_mode = stream"
137. gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=20.0.0.10 localport=25400 remotehost=10.0.0.10 remoteport=25400'"
138. gs_guc set -N node1 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=20.0.0.10 localport=25400 remotehost=10.0.0.20 remoteport=25400'"
140. gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host all all 10.0.0.10/32 trust"
141. gs_guc set -N node1 -D /opt/mpp/install/data/dn -h "host all all 10.0.0.20/32 trust"
143. 备节点
144. gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "application_name = 'dn_standby_1'"
145. gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "ss_disaster_mode = stream"
146. gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo1='localhost=20.0.0.20 localport=25400 remotehost=10.0.0.10 remoteport=25400'"
147. gs_guc set -N node2 -D /opt/mpp/install/data/dn -c "cross_cluster_replconninfo2='localhost=20.0.0.20 localport=25400 remotehost=10.0.0.20 remoteport=25400'"
149. gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host all all 10.0.0.10/32 trust"
150. gs_guc set -N node2 -D /opt/mpp/install/data/dn -h "host all all 10.0.0.20/32 trust"
151. ```
153. 第十步:. 拉起首备dssserver,执行build
155. ```
156. export DSS_MAINTAIN=TRUE // 打开dss手动模式
157. dssserver -D /opt/huawei/install/dss_home & // 拉起dssserver,-D 指定$DSS_HOME
158. gs_ctl build -D /opt/huawei/install/data/dn -b cross_cluster_full -q
159. dsscmd stopdss // 停止手动模式的dssserver
161. `Tips`: build必须需要加-q,指build成功后不拉起数据库。
162. ```
164. 第十一步: 配置备集群cm参数,重新拉起备集群
166. ```
167. cm_ctl set --param --agent -k ss_double_cluster_mode=2
168. cm_ctl set --param --server -k ss_double_cluster_mode=2
169. cm_ctl start
170. ```
172. 第十二步: 查询集群状态
174. ```
175. 主集群使用cm_ctl query -Cvidp查询出来同第七步一样
176. 备集群查询结果如下,备集群节点0从没有建立容灾关系时的primary变成建立容灾关系之后的Main Standby
178. [mpp@node2 dn_6002]$ cm_ctl query -Cvidp
179. [ CMServer State ]
181. node node_ip instance state
182. -------------------------------------------------------------------------
183. 1 node1 20.0.0.10 1 /opt/huawei/install/cm/cm_server Primary
184. 2 node2 20.0.0.20 2 /opt/huawei/install/cm/cm_server Standby
187. [ Defined Resource State ]
189. node node_ip res_name instance state
190. ---------------------------------------------------------
191. 1 node1 20.0.0.10 dms_res 6001 OnLine
192. 2 node2 20.0.0.20 dms_res 6002 OnLine
193. 1 node1 20.0.0.10 dss 20001 OnLine
194. 2 node2 20.0.0.20 dss 20002 OnLine
196. [ Cluster State ]
198. cluster_state : Normal
199. redistributing : No
200. balanced : Yes
201. current_az : AZ_ALL
203. [ Datanode State ]
205. node node_ip instance state | node node_ip instance state
206. ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
207. 1 node1 20.0.0.10 6001 25400 /opt/huawei/install/data/dn P Main Standby Normal | 2 node2 20.0.0.20 6002 25400 /opt/huawei/install/data/dn S Standby Normal
208. ```
210. 第十三步: . 在主集群主机和备集群首备执行查询,可观察到流复制信息
212. ```
213. 主集群主节点0
214. [omm@node1 dn]$ gs_ctl query -D /opt/huawei/install/data/dn
215. [2023-04-18 09:38:34.397][1498175][][gs_ctl]: gs_ctl query ,datadir is /opt/huawei/install/data/dn
216. HA state:
217. local_role : Primary
218. static_connections : 2
219. db_state : Normal
220. detail_information : Normal
222. Senders info:
223. sender_pid : 1456376
224. local_role : Primary
225. peer_role : StandbyCluster_Standby
226. peer_state : Normal
227. state : Streaming
228. sender_sent_location : 2/5C8
229. sender_write_location : 2/5C8
230. sender_flush_location : 2/5C8
231. sender_replay_location : 2/5C8
232. receiver_received_location : 2/5C8
233. receiver_write_location : 2/5C8
234. receiver_flush_location : 2/5C8
235. receiver_replay_location : 2/5C8
236. sync_percent : 100%
237. sync_state : Async
238. sync_priority : 0
239. sync_most_available : Off
240. channel : 10.0.0.10:25400-->20.0.0.10:43350
242. Receiver info:
243. No information
245. 备集群首备节点0
246. [omm@nodename pg_log]$ gs_ctl query -D /opt/huawei/install/data/dn
247. [2023-04-18 11:33:09.288][2760315][][gs_ctl]: gs_ctl query ,datadir is /opt/huawei/install/data/dn
248. HA state:
249. local_role : Main Standby
250. static_connections : 2
251. db_state : Normal
252. detail_information : Normal
254. Senders info:
255. No information
256. Receiver info:
257. receiver_pid : 1901181
258. local_role : Standby
259. peer_role : Primary
260. peer_state : Normal
261. state : Normal
262. sender_sent_location : 2/5C8
263. sender_write_location : 2/5C8
264. sender_flush_location : 2/5C8
265. sender_replay_location : 2/5C8
266. receiver_received_location : 2/5C8
267. receiver_write_location : 2/5C8
268. receiver_flush_location : 2/5C8
269. receiver_replay_location : 2/5C8
270. sync_percent : 100%
271. channel : 20.0.0.10:43350<--10.0.0.10:25400
272. ```
274. 参数解释:
276. - sync\_state: 同步状态,sync表示同步,Async表示异步,该状态由集群参数synchronous\_standby\_names控制。具体请参见[设置]($455f9b76f28cd0f5.md)中的synchronous\_standby\_names参数说明。
说明: 此处的手动安装是指工程编译之后,可通过om管理工具执行相关命令进行资源池化集群安装部署,openGauss常规安装请参照《安装指南》。