首页 > 其他分享 >KingbaseES V8R6集群运维系列 -- 修改ssh通信为 sys_securecmdd 通信

KingbaseES V8R6集群运维系列 -- 修改ssh通信为 sys_securecmdd 通信

时间:2023-06-06 15:48:08浏览次数:30  
标签:03 V8R6 运维 19 通信 sys 2023 securecmdd 14

一、适用于:

本文档使用于KingbaseES V008R006版本。

二、关于SYS_SECURECMDD:

sys_securecmdd是KingbaseES集群自带的工具,集群监控、管理集群时通过sys_securecmdd安全执行命令而不使用ssh服务。

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, systemd 默认为crontab。
scmd_port 进程sys_securecmdd的监听端口,修 改后,需要使用 sys_HAscmdd.sh脚 本初始化。 INT,默认8890。

三、安装部署SYS_SECURECMDD服务:

进行安装部署SYS_SECURECMDD服务期间,不要停止数据库。

1. 部署SYS_SECURECMDD服务:

1.1 查询服务器防火墙是否开启:

所有的节点执行此操作:

systemctl status firewalld.service
# 如果active状态是running,表示防火墙是开启的。 
Active: active (running)

# 防火墙开启的话需要添加对应策略
# 其中10046是为sys_securecmdd服务预留的端口
firewall-cmd --permanent --add-port=10046/tcp
firewall-cmd --permanent --add-port=10046/udp
firewall-cmd --reload

# 添加完策略后可以使用以下命令查看是否生效
# 如果有添加的端口输出说明是生效的
firewall-cmd --list-port
54321/tcp 54321/udp 10046/tcp 10046/udp

1.2 上传securecmdd.zip到集群所有节点:

# zip包默认路径
../V008R006C007B0012/ClientTools/guitools/DeployTools/zip/Lin64/

$ ls -l
total 2260
drwxrwxr-x.  3 kes_v8r6c7b12 kes_v8r6c7b12      83 Feb 27 16:04 cluster
-rw-r--r--.  1 kes_v8r6c7b12 kes_v8r6c7b12 2115099 Mar  1 14:22 securecmdd.zip

# scp securecmdd.zip到node2节点
$ scp securecmdd.zip kes_v8r6c7b12@node2:~
The authenticity of host 'node2 (192.168.10.43)' can't be established.
securecmdd.zip                             100% 2066KB  14.8MB/s   00:00    

1.3 解压securecmdd.zip并安装securecmdd:

集群所有节点都执行以下操作:

# 解压securecmdd.zip包
$ unzip securecmdd.zip 
Archive:  securecmdd.zip
   creating: securecmdd/
   creating: securecmdd/lib/
  inflating: securecmdd/lib/libcrypto.so.10  
  inflating: securecmdd/lib/libssl.so.10  
   creating: securecmdd/bin/
  inflating: securecmdd/bin/sys_securecmd  
  inflating: securecmdd/bin/sys_secureftp  
  inflating: securecmdd/bin/sys_HAscmdd.sh  
  inflating: securecmdd/bin/sys_securecmdd  
   creating: securecmdd/share/
  inflating: securecmdd/share/sys_HAscmdd.conf  
  inflating: securecmdd/share/key_file  
  inflating: securecmdd/share/securecmdd_config  
  inflating: securecmdd/share/securecmdd.service  
  inflating: securecmdd/share/securecmd_config  
  inflating: securecmdd/share/accept_hosts

# 修改sys_HAscmdd.conf更改默认端口8890为10046
# sys_HAscmdd.conf配置文件在securecmdd/share目录下
vi sys_HAscmdd.conf
scmd_port=10046

# 执行sys_HAscmdd.sh init进行初始化
# 如果出现以下错误,需要切换为root用户执行
$ sys_HAscmdd.sh init
Only execute by root, current user is kes_v8r6c7b12

# init成功
 ./sys_HAscmdd.sh init
successfully initialized the sys_securecmdd, please use "./sys_HAscmdd.sh start" to start the sys_securecmdd

# 使用./sys_HAscmdd.sh start启动
 ./sys_HAscmdd.sh start
Created symlink /etc/systemd/system/multi-user.target.wants/securecmdd.service → /etc/systemd/system/securecmdd.service.

# 查看是否正常启动
 systemctl status securecmdd
● securecmdd.service - KingbaseES - sys_securecmdd daemon
   Loaded: loaded (/etc/systemd/system/securecmdd.service; enabled; vendor preset: disabled)
   Active: active (running) since Wed 2023-03-01 14:55:36 CST; 12s ago
 Main PID: 39535 (sys_securecmdd)
    Tasks: 1 (limit: 12498)
   Memory: 668.0K
   CGroup: /system.slice/securecmdd.service
           └─39535 sys_securecmdd: /home/kes_v8r6c7b12/securecmdd/bin/sys_securecmdd -f /etc/.kes/securecmdd_config [listener] 0 of 128-256 startups

Mar 01 14:55:36 node1 systemd[1]: Started KingbaseES - sys_securecmdd daemon.

# 测试连接是否正常
./sys_securecmd [email protected] date
Wed Mar  1 15:02:29 CST 2023
./sys_securecmd [email protected] date
Wed Mar  1 15:02:38 CST 2023

测试通过后,至此完成securecmdd的安装。

sys_securecmdd安装完成后,会在root、kingbase用户目录生成.es目录,包含以下文件(.es目录的文档建议不要修改):

key_file是sys_securecmdd服务私钥文件。

accept_hosts是sys_securecmdd服务密钥文件(集群节点互信使用)。

# root用户目录
[root@node2 ~]# ls -l .es/
total 8
-rw------- 1 root root  381 Mar  3 14:07 accept_hosts
-rw------- 1 root root 1675 Mar  3 14:07 key_file

# 数据库用户目录
[root@node2 ~]# ls -l /home/kes_v8r6c7b12/.es/
total 8
-rw------- 1 kes_v8r6c7b12 kes_v8r6c7b12  381 Mar  3 14:07 accept_hosts
-rw------- 1 kes_v8r6c7b12 kes_v8r6c7b12 1675 Mar  3 14:07 key_file
[root@node2 ~]# 

修改accept_hosts文件会导致集群节点互信失效,失效后的处理:

在所有的节点执行以下操作:

# 停止sys_securecmdd服务
./sys_HAscmdd.sh stop
# 重新初始化sys_securecmdd服务
./sys_HAscmdd.sh init
# 启动sys_securecmdd服务
./sys_HAscmdd.sh start

# 测试节点连通性
[root@node2 bin]# ./sys_securecmd root@node1 date
Fri Mar  3 14:07:33 CST 2023
[root@node2 bin]# ./sys_securecmd root@node2 date
Fri Mar  3 14:07:36 CST 2023
[root@node2 bin]# ./sys_securecmd [email protected] date
Fri Mar  3 14:07:45 CST 2023
[root@node2 bin]# ./sys_securecmd [email protected] date
Fri Mar  3 14:07:48 CST 2023

四、修改数据库集群使用SYS_SECURECMDD通信

1. 修改repmgr.conf配置文件使用SYS_SECURECMDD通信:

在集群所有节点进行以下操作:

# 修改repmgr.con文件里面use_scmd=off为on
# use_scmd=off 是不使用SYS_SECURECMDD通信,使用系统SSH进行通信。use_scmd=on 使用SYS_SECURECMDD通信
use_scmd=on
# 修改scmd_options 选项里面端口为sys_HAscmdd.conf文件里面scmd_port=10046
scmd_options='-q -o ConnectTimeout=10 -o StrictHostKeyChecking=no -o ServerAliveInterval=2 -o ServerAliveCountMax=5 -p 10046'

2. 修改完成后,使用sys_monitor.sh重启数据库集群。

[kes_v8r6c7b12@node1 ~]$ sys_monitor.sh restart
2023-03-03 14:19:38 Ready to stop all DB ...
Service process "node_export" was killed at process 9578
Service process "postgres_ex" was killed at process 9579
Service process "node_export" was killed at process 1344
Service process "postgres_ex" was killed at process 1345
2023-03-03 14:19:42 begin to stop repmgrd on "[192.168.10.40]".
2023-03-03 14:19:42 repmgrd on "[192.168.10.40]" stop success.
2023-03-03 14:19:42 begin to stop repmgrd on "[192.168.10.43]".
2023-03-03 14:19:43 repmgrd on "[192.168.10.43]" stop success.
2023-03-03 14:19:43 begin to stop DB on "[192.168.10.43]".
waiting for server to shut down.... done
server stopped
2023-03-03 14:19:43 DB on "[192.168.10.43]" stop success.
2023-03-03 14:19:43 begin to stop DB on "[192.168.10.40]".
waiting for server to shut down.... done
server stopped
2023-03-03 14:19:43 DB on "[192.168.10.40]" stop success.
2023-03-03 14:19:44 Done.
2023-03-03 14:19:44 Ready to start all DB ...
2023-03-03 14:19:44 begin to start DB on "[192.168.10.40]".
waiting for server to start.... done
server started
2023-03-03 14:19:44 execute to start DB on "[192.168.10.40]" success, connect to check it.
2023-03-03 14:19:45 DB on "[192.168.10.40]" start success.
2023-03-03 14:19:45 Try to ping trusted_servers on host 192.168.10.40 ...
2023-03-03 14:19:48 Try to ping trusted_servers on host 192.168.10.43 ...
2023-03-03 14:19:50 begin to start DB on "[192.168.10.43]".
waiting for server to start.... done
server started
2023-03-03 14:19:51 execute to start DB on "[192.168.10.43]" success, connect to check it.
2023-03-03 14:19:52 DB on "[192.168.10.43]" start success.
 ID | Name  | Role    | Status    | Upstream | Location | Priority | Timeline | LSN_Lag | Connection string                                                                                                                                
----+-------+---------+-----------+----------+----------+----------+----------+---------+---------------------------------------------------------------------------------------------------------------------------------------------------
 1  | node1 | primary | * running |          | default  | 100      | 1        |         | host=192.168.10.40 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3
 2  | node2 | standby |   running | node1    | default  | 100      | 1        | 0 bytes | host=192.168.10.43 user=esrep dbname=esrep port=54321 connect_timeout=10 keepalives=1 keepalives_idle=10 keepalives_interval=1 keepalives_count=3
2023-03-03 14:19:52 The primary DB is started.
2023-03-03 14:19:52 begin to start repmgrd on "[192.168.10.40]".
[2023-03-03 14:19:53] [NOTICE] using provided configuration file "/home/kes_v8r6c7b12/cluster/kingbase/etc/repmgr.conf"
[2023-03-03 14:19:53] [NOTICE] redirecting logging output to "/home/kes_v8r6c7b12/cluster/kingbase/log/hamgr.log"

2023-03-03 14:19:54 repmgrd on "[192.168.10.40]" start success.
2023-03-03 14:19:54 begin to start repmgrd on "[192.168.10.43]".
[2023-03-03 14:19:55] [NOTICE] using provided configuration file "/home/kes_v8r6c7b12/cluster/kingbase/etc/repmgr.conf"
[2023-03-03 14:19:55] [NOTICE] redirecting logging output to "/home/kes_v8r6c7b12/cluster/kingbase/log/hamgr.log"

2023-03-03 14:19:56 repmgrd on "[192.168.10.43]" start success.
 ID | Name  | Role    | Status    | Upstream | repmgrd | PID   | Paused? | Upstream last seen
----+-------+---------+-----------+----------+---------+-------+---------+--------------------
 1  | node1 | primary | * running |          | running | 10436 | no      | n/a                
 2  | node2 | standby |   running | node1    | running | 5932  | no      | 1 second(s) ago    
[2023-03-03 14:19:58] [NOTICE] redirecting logging output to "/home/kes_v8r6c7b12/cluster/kingbase/log/kbha.log"

[2023-03-03 14:20:00] [NOTICE] redirecting logging output to "/home/kes_v8r6c7b12/cluster/kingbase/log/kbha.log"

2023-03-03 14:20:01 Done.
[kes_v8r6c7b12@node1 ~]$ 

至此,集群通信切换完成。

五、验证是否切换成功:

使用KingbaseES备份进行验证,集群使用的通信服务:

执行以下命令,观察备份执行输出:

sh -x sys_backup.sh init
# 如果有以下内容输出说明集群通信服务切换成功
sys_securecmd -q -n -o ConnectTimeout=30 -o StrictHostKeyChecking=no -o PreferredAuthentications=publickey

标签:03,V8R6,运维,19,通信,sys,2023,securecmdd,14
From: https://www.cnblogs.com/kingbase/p/17195896.html

相关文章

  • KingbaseES V8R6 表空间加密
    透明存储加密优势透明存储加密可确保加密敏感数据满足合规性要求,并提供简化加密操作的功能,优势如下:作为安全管理员,您可以确保敏感数据已加密,因此在存储介质或数据文件被盗或入侵者试图从操作系统访问数据文件时,绕过访问控制数据库。使用透明存储加密可帮助您解决与安全相关......
  • KingbaseESV8R6 heap table末端垃圾页回收机制
    前言默认情况下,vacuum表不能释放磁盘空间,只是在deadtuple做个标记位,但heaptable末端的垃圾页可以被truncate,从磁盘中释放空间。例如表的末尾的100个数据块里面全是垃圾,那么这100个数据块可以truncate阶段,文件也会变小。而位于其他位置的垃圾页,不能回收,因为会影响寻址(ctid)的变化......
  • KingbaseES V8R6 几种不同的表复制方式
    前言当数据库遇到未知问题,有时候无法入手分析,在非生产数据库或者征得客户同意获得特殊时间,需要重建表解决,下面提供了多种不同的复制表的方法,我们了解一下他们的差异。测试1、CREATETABLEASSELECT语句用于复制表结构和数据,但是不会复制索引。我们可以使用以下语句基于t1......
  • KingbaseES V8R6集群运维案例--主库PITR恢复后备库无法连接到集群
    案例说明:KingbaseESV8R6集群,在主库执行PITR恢复后,clone备库;但是启动集群后,备库无法连接到主库,流复制状态和集群节点状态异常。适用版本:KingbaseESV8R6一、问题现象如下图所示,集群备库节点状态和流复制异常:二、问题分析1、检查备库数据库服务状态如下图所示,sys_log日......
  • 单片机+WiFi模块和主流物联网平台实现MQTT协议通信视频教程
    单片机+WiFi模块和主流物联网平台实现MQTT协议通信视频教程1、单片机+WiFi模块和阿里云物联网平台实现MQTT协议通信视频教程单片机+WiFi模块和阿里云物联网平台实现MQTT协议通信,阿里云物联网平台可以对单片机数字量输出、保持寄存器进行设置操作,单片机可以实时上报数字量输入、数......
  • 8种品牌PLC单片机实现自由格式协议串口通信主站视频教程
    8种品牌PLC单片机实现自由格式协议串口通信主站视频教程一、罗克韦尔ABMicro850​系列PLC实现自由格式协议串口通信主站视频教程:罗克韦尔ABMicro850系列PLC做ASCII串口通信主站、串口调试助手做从站,程序实现PLC和串口调试助手相互发送和接收8个字节数据功能,视频详细讲解了ASCII......
  • 8种品牌PLC单片机实现自由格式协议串口通信从站视频教程
    8种品牌PLC单片机实现自由格式协议串口通信从站视频教程一、罗克韦尔ABMicro850​系列PLC实现自由格式协议串口通信从站视频教程:罗克韦尔ABMicro850系列PLC做ASCII串口通信从站、串口调试助手做主站,程序实现PLC和串口调试助手相互发送和接收8个字节数据功能,视频详细讲解了ASCII......
  • Python自动化运维
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运算......
  • 系统化学习前端之Vue(vue2 组件通信)
    前言前文vue2基础中聊过,页面本质是DOM树,而在vue2中组件=vm实例对象=DOM。因此,页面其实也是组件树构成,组件之间形成父子关系,兄弟关系等,相互之间通信也是组件树的必须要求。vue2组件通信组件通信即组件之间的数据传递。props和$emit$attrs和$listener$parent......
  • 写给go开发者的gRPC教程-通信安全
    使用TLS安全传输数据什么是SSL/TLSSSL包含记录层(RecordLayer)和传输层[1],记录层协议确定传输层数据的封装格式。传输层安全协议使用X.509[2]认证,之后利用非对称加密演算来对通信方做身份认证,之后交换对称密匙作为会话密匙(Sessionkey[3])。这个会谈密匙是用来将通信两方交换......