部署CLup的MMN架构集群
1. CLup的MMN架构
用户可能有这样的需求,用户有三个机房,但当一个机房出现故障之后,要求还可以通过CLup管理界面对数据库进行统一管理。这时我们可以在三个机房各部署一个CLup管理节点,这三个CLup管理节点组成一个集群,三个CLup管理节点在内部会自动选主,内部会有一个主管理节点,但是三个不同机房不同IP地址的CLup的Web管理界面看到的数据库信息都是一样的,在任意一个管理节点做的管理操作(包括切换操作)都是完全对等的,这种架构在CLup中我们称之为:MMN(Multi-management node)架构。而只有一个CLup管理节点的架构,我们称之为SMN(Single management node)架构。
在部署单个CLup管理节点下,也是可以避免单点故障的。当CLup管理节点停止了或出现故障时并不影响数据库的运行,只是这时数据库也出现故障了,高可用的自动切换失效了。而我们通常会在一台单独的主机上部署CLup管理节点,这样CLup管理节点和数据库节点同时除故障的概率很低了。所以SMN架构可以满足绝大多数的需求。
如果SMN架构不能满足要求时,用户可以考虑MMN架构。当前MMN架构必须是三个管理节点,不能是两个管理节点。MMN架构有点类似数据库的一主两备的高可用模式,其高可用切换的逻辑如下:
序号 | 故障节点 | 存活节点 | 服务是否可用 | 备注 |
---|---|---|---|---|
1 | 1备 | 1主1备 | 是 | 备节点重新启动服务后会自动修复 |
2 | 2备 | 1主 | 是 | 备节点重新启动服务后会自动修复 |
3 | 1主 | 2备 | 是 | 会自动选择一个备节点提升为主 |
4 | 1主1备 | 1备 | 否 | 如果主节点机器没有问题,开机后启动CLup服务即可恢复 |
注意
CLup 集群版部署仅CLup企业版本支持。
下面部署MMN架构的部署方式。
2. 安装部署CLup Server
示例环境:
序号 | IP | 主机名 | 初始角色 | 操作系统 |
---|---|---|---|---|
1 | 10.197.171.80 | CLup-Server01 | Primary | RockyLinux 8.8 |
2 | 10.197.171.81 | CLup-Server02 | Standby | RockyLinux 8.8 |
3 | 10.197.171.82 | CLup-Server03 | Standby | RockyLinux 8.8 |
2.1 部署CLup Server的主节点
部署的步骤分三个步骤,需要在主机(10.197.171.80)上执行:
- 安装CLup Server
- 查看CLup Server的状态
- 打开网页查看
第一步:安装CLup Server
在CLup-Server01
上使用有sudo权限的用户(通常是root
)安装CLup Server服务:
wget -qO /tmp/clup.sh --no-check-certificate https://get.csudata.com/csuinst/clup.sh && bash /tmp/clup.sh clup install
详情参考快速安装
提示
上面的shell需要wget和tar 命令,如果没有此工具请先安装
wget tar
。
第二步:查看CLup Server的状态
安装完后,查看CLup服务程序状态命令如下:
[root@CLup-Server01 opt]# systemctl status clup
● clup.service - clup
Loaded: loaded (/etc/systemd/system/clup.service; enabled; vendor preset: disabled)
Drop-In: /run/systemd/system/clup.service.d
└─zzz-lxc-service.conf
Active: active (running) since Fri 2024-08-09 06:04:44 UTC; 39s ago
Main PID: 2732 (clupserver)
Tasks: 31 (limit: 182297)
Memory: 71.1M
CGroup: /system.slice/clup.service
├─2732 /opt/clup/bin/clupserver start
├─2733 /opt/clup/bin/clupserver start
第三步:打开网页查看
我们可以打开网页 http://10.197.171.80:8090 查看下程序是否正常运行,默认的用户名和密码(admin/cstech)。
登录后看到的总览页面如下,此时CLup状态列表中可以看到CLup
和csumdb(旧版本为clupmdb)
服务都是running
。
2.2 部署CLup Server的备节点1
部署的步骤分三个步骤,需要在主机CLup-Server02
上执行:
- 安装CLup Server
- 查看CLup Server的状态
- 停止本机上的CLup Server
第一步:安装CLup Server
在CLup-Server02
上使用有sudo权限的用户(通常是root
)安装CLup Server服务:
wget -qO /tmp/clup.sh --no-check-certificate https://get.csudata.com/csuinst/clup.sh && bash /tmp/clup.sh clup install
提示
需要使用wget和tar 命令,如果没有此工具请先安装
wget tar
。
第二步:查看CLup Server的状态
安装完成后,我们查看下CLup Server的状态
[root@CLup-Server02 ~]# systemctl status clup
● clup.service - clup
Loaded: loaded (/etc/systemd/system/clup.service; enabled; vendor preset: disabled)
Drop-In: /run/systemd/system/clup.service.d
└─zzz-lxc-service.conf
Active: active (running) since Fri 2024-08-09 06:17:10 UTC; 6s ago
Main PID: 2040 (clupserver)
Tasks: 20 (limit: 182297)
Memory: 45.4M
CGroup: /system.slice/clup.service
├─2040 /opt/clup/bin/clupserver start
└─2041 /opt/clup/bin/clupserver start
Aug 09 06:17:10 CLup-Server02 systemd[1]: Starting clup...
Aug 09 06:17:10 CLup-Server02 clupserver[2036]: clup not running
Aug 09 06:17:10 CLup-Server02 clupserver[2038]: 2024-08-09 06:17:10,872 INFO ========== CLup starting ==========
Aug 09 06:17:10 CLup-Server02 su[2042]: (to csumdb) root on none
Aug 09 06:17:10 CLup-Server02 su[2042]: pam_unix(su-l:session): session opened for user csumdb by (uid=0)
Aug 09 06:17:10 CLup-Server02 systemd[1]: Started clup.
Aug 09 06:17:11 CLup-Server02 su[2042]: pam_unix(su-l:session): session closed for user csumdb
提示
Active:
栏显示active
表示服务正常启动,如状态异常,可以查看安装启动过程中是否有报错,或者查看CLup
服务的日志/opt/clup/logs/clupserver.log
。
第三步:停止本机上的CLup Server
现在先把服务停下来(后面集群部署需要修改配置文件,然后重新启动服务)。
systemctl stop clup
2.3 部署CLup Server的备节点2
部署的步骤分三个步骤,需要在机器CLup-Server03
上执行:
- 安装CLup Server
- 查看CLup Server的状态
- 停止本机上的CLup Server
第一步:安装CLup Server
在CLup-Server03
上使用有sudo权限的用户(通常是root
)安装CLup-Server服务。
wget -qO /tmp/clup.sh --no-check-certificate https://get.csudata.com/csuinst/clup.sh && bash /tmp/clup.sh clup install
提示
需要使用wget和tar 命令,如果没有此工具请先安装
wget tar
。
第二步:查看CLup Server的状态
安装完成后,我们查看下CLup Server的状态
[root@CLup-Server03 ~]# systemctl status clup
● clup.service - clup
Loaded: loaded (/etc/systemd/system/clup.service; enabled; vendor preset: disabled)
Drop-In: /run/systemd/system/clup.service.d
└─zzz-lxc-service.conf
Active: active (running) since Fri 2024-08-09 06:23:04 UTC; 5s ago
Main PID: 2047 (clupserver)
Tasks: 20 (limit: 182297)
Memory: 47.4M
CGroup: /system.slice/clup.service
├─2047 /opt/clup/bin/clupserver start
└─2048 /opt/clup/bin/clupserver start
Aug 09 06:23:04 CLup-Server03 systemd[1]: Starting clup...
Aug 09 06:23:04 CLup-Server03 clupserver[2043]: clup not running
Aug 09 06:23:04 CLup-Server03 clupserver[2045]: 2024-08-09 06:23:04,725 INFO ========== CLup starting ==========
Aug 09 06:23:04 CLup-Server03 su[2049]: (to csumdb) root on none
Aug 09 06:23:04 CLup-Server03 systemd[1]: Started clup.
Aug 09 06:23:04 CLup-Server03 su[2049]: pam_unix(su-l:session): session opened for user csumdb by (uid=0)
Aug 09 06:23:05 CLup-Server03 su[2049]: pam_unix(su-l:session): session closed for user csumdb
提示
Active:
栏显示active
表示服务正常启动,如状态异常,可以查看安装启动过程中是否有报错,或者查看CLup
服务的日志/opt/clup/logs/clupserver.log
。
第三步:停止本机上的CLup Server
现在先把服务停下来(后面集群部署需要修改配置文件,然后重新启动服务)。
systemctl stop clup
2.4 修改CLup Server配置
操作可以分为两个步骤,第二步需要在三台机器上都执行:
- 停止本机上的CLup Server
- 修改CLup Server配置文件
第一步:停止主节点上的CLup Server
在机器CLup-Server01
上停止CLup Server服务
systemctl stop clup
第二步:修改CLup Server配置文件
此操作需要在三台机器CLup-Server01、CLup-Server02、CLup-Server03
上都执行。
打开配置文件/opt/clup/conf/clup.conf
,找到如下配置并修改。
# ++++++++++++++++++++++++++++++++ 容灾三节点CLup配置 ++++++++++++++++++++++++++++++++# 如果在3台机器上安装CLup做集群,则需要做下面的设置
clup_host_list = 10.197.171.80,10.197.171.81,10.197.171.82
提示
clup_host_list
配置为三台CLup服务的IP,使用’,’分隔。
2.5 备节点重新搭建csumdb并启动CLup Server服务
此操作分为3步:
- 重搭备节点1(10.197.171.81)上的
csumdb
- 重搭备节点2(10.197.171.82)上的
csumdb
- 登录Web页面检查CLup集群的状态
第一步:重搭备节点1(10.197.171.81)上的csumdb
停止并删除掉
csumdb
数据库的目录su - csumdb
pg_ctl stop
rm -rf /home/csumdb/pgdata
重新搭建
csumdb
PGPASSWORD=csuMgr232 pg_basebackup -h10.197.171.80 -p3500 -Ucsuapp -P -Xs -D $PGDATA
修改数据库参数
/home/csumdb/pgdata/postgresql.conf
,文件末尾增加下面的内容primary_conninfo='user=csuapp password=csuMgr232 host=10.197.171.80 port=3500 application_name=10.197.171.81 sslmode=prefer sslcompression=1 krbsrvname=postgres'
提示
注意替换
application_name
的值为当前主机的IP(此示例为:10.197.171.81)。创建一个空文件,以表明此库是作为备库启动
touch /home/csumdb/pgdata/standby.signal
启动数据库
pg_ctl start
第二步:重搭备节点2(10.197.171.82)上的csumdb
停止并删除掉
csumdb
数据库的目录su - csumdb
pg_ctl stop
rm -rf /home/csumdb/pgdata
重新搭建
csumdb
PGPASSWORD=csuMgr232 pg_basebackup -h10.197.171.80 -p3500 -Ucsuapp -P -Xs -D $PGDATA
修改数据库参数
/home/csumdb/pgdata/postgresql.conf
,文件末尾增加下面的内容primary_conninfo='user=csuapp password=csuMgr232 host=10.197.171.80 port=3500 application_name=10.197.171.82 sslmode=prefer sslcompression=1 krbsrvname=postgres'
提示
注意替换
application_name
的值为当前主机的IP(此示例为:10.197.171.82
)。创建一个空文件,以表明此库是作为备库启动
touch /home/csumdb/pgdata/standby.signal
启动数据库
pg_ctl start
第三步:登录Web页面检查CLup集群的状态
登录Web页面查看,可以看到三个节点都正常了,至此CLup-Serve集群版就部署成功了。
上面的界面中我们看到有一条Clup-Check
的告警,我们可以将其清理掉(标记为已解决->确定)即可。
3. 安装部署CLup Agent
clup-agentX.Y.Z.bin安装包暂不支持直接指定多个CLup Server的地址,CLup集群版下安装部署clup-agent的步骤如下:
- 安装CLup Agent服务
- 修改CLup Agent配置文件
- 启动CLup Agent服务
- 登录CLup的Web页面查看主机状态
示例环境
序号 | IP | 主机名 | 操作系统 |
---|---|---|---|
1 | 10.197.171.83 | CLup-Agent01 | Rocky8.8 |
第一步: 安装CLup Agent服务
使用一键安装脚本快速安装,输入CLup Server的IP地址,这里我们先输入主节点的IP10.197.171.80
wget -qO /tmp/clup.sh --no-check-certificate https://get.csudata.com/csuinst/clup.sh && bash /tmp/clup.sh clup-agent install
==== Your ip is 10.197.171.83/20
Enter Clup Server IP Addr: 10.197.171.80
Clup Server ip is 10.197.171.80!
==== register systemd service
...
后面我们可以看到默认启动服务失败,查看日志/opt/clup-agent/logs/clup-agent.log
[root@CLup-Agent01 ~]# cat /opt/clup-agent/logs/clup-agent.log
2024-08-09 10:01:18,081 INFO clup-agent v5.1.3 Copyright (c) 2018-2023 CSUDATA.COM All rights reserved.
2024-08-09 10:01:18,844 INFO clup-agent v5.1.3 Copyright (c) 2018-2023 CSUDATA.COM All rights reserved.
2024-08-09 10:01:18,848 INFO ========== clup-agent starting ==========
2024-08-09 10:01:18,853 INFO clup return primary is 10.197.171.80, clup_host_list is ['10.197.171.80', '10.197.171.81', '10.197.171.82']
2024-08-09 10:01:18,853 CRITICAL clup is multiple clup mode, but clup-agent is not multiple clup mode, inconsistency config, so exit!
提示
从日志中可以看到CLup Server是集群模式,需要修改配置文件。
第二步:修改CLup Agent配置文件
修改配置文件/opt/clup-agent/clup-agent.conf
,修改下面这行
server_address = 10.197.171.80:4242,10.197.171.81:4242,10.197.171.82:4242
提示
替换IP地址为三台CLup Server的IP。
第三步:启动CLup Agent服务
启动clup-agent服务
systemctl start clup-agent
如果没有注册systemctl
系统服务,则使用下面的命令
/Sopt/clup-agent/bin/clup-agent start
第四步:登录CLup的Web页面查看主机状态
登录Web页面可以查看到clup-agent的状态