KingbaseES 高可用组件sys_securecmdd之一---sys_securecmdd应用介绍
背景:
sys_securecmdd是KingbaseES集群中自带的工具,集群监控、管理集群时通过sys_securecmdd安全执行命令。在一些禁止使用ssh的通用机或者是专用机环境中,可以通过sys_securecmdd工具实现节点之间远程连接后执行相应的命令。
集群组件:
一、sys_securecmdd介绍
在KingbaseES集群的启动、关闭及切换时,需要在节点间远程执行命令,通常可以通过ssh来实现,但是在一些生产环境中,为了系统安全,禁止主机之间建立ssh互信,集群节点之间无法执行远程命令,导致集群管理异常。
在禁用ssh互信的生产环境,可以通过sys_securecmdd工具实现节点之间的互信,并通过sys_securecmdd实现远程执行命令。
sys_securecmdd组成:
服务端:
sys_securecmdd 默认监听8890端口,接受客户端连接。
sys_secureftp 服务端调用,用于接收文件(用于集群部署)。
sys_HAscmdd.sh 脚本,管理服务端。
客户端:
sys_securecmd 客户端,用于连接服务端。
密钥文件:
accept_hosts 免密文件
key_file 私钥文件
其他文件:
securecmdd_config 服务端配置文件
securecmd_config 客户端配置文件
sys_HAscmdd.conf 脚本配置文件
securecmdd.service 服务模板文件,服务端可以使用此文件 注册为服务。
依赖库文件 libcrypto.so.10 依赖openssl编译,为了不同环境能够 使用,需要带上编译使用的库文件。
其中,sys_HAscmdd.conf是用于配置sys_securecmdd的文件,其中参数说明如下:
start_method:
启动sys_securecmdd进程并保证进程 高可用的方式。systemd,通用机集群默认值,通过service服务启动 sys_securecmdd;
crontab,专用机集群默认值,通过crond服务定时启动sys_securecmdd。 默认为crontab。
scmd_port:
进程sys_securecmdd的监听端口,修 改后,需要使用sys_HAscmdd.sh脚 本初始化。服务端口默认8890。
二、sys_securecmdd部署
在集群节点上部署securecmdd工具(all nodes)
1、查看数据库软件安装包(自带securecmdd工具)
[kingbase@node1 zip]$ pwd
/opt/Kingbase/ES/V8R6_054/ClientTools/guitools/DeployTools/zip
[kingbase@node1 zip]$ ls -lh
total 341M
-rw-rw-r--. 1 kingbase kingbase 338M Apr 7 16:18 db.zip
-rw-rw-r--. 1 kingbase kingbase 9.7K Apr 7 16:18 install.conf
-rw-rw-r--. 1 kingbase kingbase 2.1M Apr 7 16:18 securecmdd.zip
-rwxrwxr-x. 1 kingbase kingbase 4.0K Apr 7 16:18 trust_cluster.sh
-rwxrwxr-x. 1 kingbase kingbase 138K Apr 7 16:18 V8R6_cluster_install.sh
2、将securecmdd.zip拷贝到/home/kingbase/cluster下(集群安装目录)
[kingbase@node1 zip]$ cp securecmdd.zip /home/kingbase/cluster/
[kingbase@node1 cluster]$ unzip securecmdd.zip
查看可执行文件:
[root@node2 bin]# ls -lh
total 2.0M
-rwxr-xr-x 1 kingbase kingbase 34K Apr 7 16:18 sys_HAscmdd.sh
-rwxr-xr-x 1 kingbase kingbase 856K Apr 7 16:18 sys_securecmd
-rwxr-xr-x 1 kingbase kingbase 938K Apr 7 16:18 sys_securecmdd
-rwxr-xr-x 1 kingbase kingbase 149K Apr 7 16:18 sys_secureftp
查看配置文件信息:
[root@node2 share]# ls -lh
total 24K
-rw------- 1 kingbase kingbase 381 May 23 10:26 accept_hosts
-rw------- 1 kingbase kingbase 1.7K May 23 10:26 key_file
-rw------- 1 kingbase kingbase 315 May 23 10:26 securecmd_config
-rw------- 1 kingbase kingbase 586 May 23 10:26 securecmdd_config
-rw-r--r-- 1 kingbase kingbase 275 May 23 10:26 securecmdd.service
-rw-r--r-- 1 kingbase kingbase 246 May 23 10:26 sys_HAscmdd.conf
3、执行sys_HAscmdd.sh init
[root@node2 bin]# sh sys_HAscmdd.sh init
successfully initialized the sys_securecmdd, please use "sys_HAscmdd.sh start" to start the sys_securecmdd
4、启动sys_securecmdd服务
[root@node2 bin]# sh sys_HAscmdd.sh start
[root@node2 bin]# ps -ef |grep secure
root 30443 1 0 15:23 ? 00:00:00 sys_securecmdd: /home/kingbase/cluster/securecmdd/bin/sys_securecmdd -f /etc/.kes/securecmdd_config [listener] 0 of 128-256 startups
查看服务状态:
[root@node2 bin]# netstat -antlp |grep 8890
tcp 0 0 0.0.0.0:8890 0.0.0.0:* LISTEN 30443/sys_securecmd
tcp6 0 0 :::8890 :::* LISTEN 30443/sys_securecmd
在通用机环境sys_securecmdd通过systemd管理:
[root@node2 bin]# systemctl status securecmdd
● securecmdd.service - KingbaseES - sys_securecmdd daemon
Loaded: loaded (/etc/systemd/system/securecmdd.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2022-05-23 15:23:28 CST; 16min ago
Main PID: 30443 (sys_securecmdd)
CGroup: /system.slice/securecmdd.service
└─30443 sys_securecmdd: /home/kingbase/cluster/securecmdd/bin/sys_securecmdd -f /etc/.kes/securecmdd...
May 23 15:23:28 node2 systemd[1]: Started KingbaseES - sys_securecmdd daemon.
May 23 15:23:28 node2 systemd[1]: Starting KingbaseES - sys_securecmdd daemon...
5、测试节点之间的连接
如下所示,在通过客户端连接远程节点(192.168.1.202)或本节点后,并执行date命令,必须保证节点之间通过sys_securecmdd互联是互信,无需输入密码,并成功执行命令。
[kingbase@node201 bin]$ ./sys_securecmd root@192.168.1.202 'date'
Fri Jan 19 14:17:23 CST 2024
[kingbase@node201 bin]$ ./sys_securecmd kingbase@192.168.1.202 'date'
Fri Jan 19 14:17:31 CST 2024
[kingbase@node201 bin]$ ./sys_securecmd kingbase@127.0.0.1 'date'
Fri Jan 19 00:43:58 CST 2024
[kingbase@node201 bin]$ ./sys_securecmd root@127.0.0.1 'date'
Fri Jan 19 00:44:05 CST 2024
三、sys_securecmdd应用
sys_securecmdd用于集群或sys_backup.sh物理备份在节点上远程执行命令。
1、集群节点远程执行命令
1)repmgr.conf配置使用sys_securecmdd
[kingbase@node201 bin]$ cat ../etc/repmgr.conf |grep scmd
scmd_options='-q -o ConnectTimeout=10 -o StrictHostKeyChecking=no -p 8890 -o ServerAliveInterval=2 -o ServerAliveCountMax=3'
use_scmd='on' # on,使用sys_securecmdd;off,使用ssh。
2)集群节点远程执行命令
如下所示,集群sys_monitor.sh在启动时,远程通过sys_securecmdd执行数据库服务启动:
/home/kingbase/cluster/R6C8/HAC8/kingbase/bin/sys_securecmd -o StrictHostKeyChecking=no
-o ConnectTimeout=10 -q -o ConnectTimeout=10 -o StrictHostKeyChecking=no
-p 8890 -o ServerAliveInterval=2 -o ServerAliveCountMax=3 -l kingbase
-T 192.168.1.201 '/home/kingbase/cluster/R6C8/HAC8/kingbase/bin/sys_ctl
-D /home/kingbase/cluster/R6C8/HAC8/kingbase/data -w -t 60
-l /home/kingbase/cluster/R6C8/HAC8/kingbase/data/../logfile start'
如下所示,failover切换,远程卸载原主库vip:
[2024-01-03 16:20:29] [DEBUG] DoRemoteCommand():
sys_securecmd -o Batchmode=yes -q -o ConnectTimeout=10 -o StrictHostKeyChecking=no
-p 8890 -o ServerAliveInterval=2 -o ServerAliveCountMax=3 192.168.1.201 /home/kingbase/cluster/R6C8/HAC8/kingbase/bin/kbha -A unloadvip
2、sys_backup.sh物理备份
1)sys_backup.conf配置
[kingbase@node201 bin]$ cat sys_backup.conf |grep scmd
_use_scmd=on # on,使用sys_securecmdd;off,使用ssh。
2)sys_backup.sh init中远程执行命令
/home/kingbase/cluster/R6C8/HAC8/kingbase/bin/sys_securecmd -q -n -o ConnectTimeout=30 -o StrictHostKeyChecking=no
-o PreferredAuthentications=publickey -- kingbase@192.168.1.202 mkdir -p /home/kingbase/kbbr_repo/
四、总结
本文介绍了KingbaseES集群组件sys_securecmdd的初步应用,后续文档将介绍sys_securecmdd配置、故障案例分析等,帮助大家进一步加深了解sys_securecmdd工具的应用。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2022-01-19 KingbaseES V8R6集群运维案例之--- witness节点手工配置案例
2022-01-19 KingbaseES V8R6集群运维案例之---sys_monitor.sh change_password一键修改集群用户密码