kingbaseES V8R3集群运维案例之---集群部署前后ssh端口修改
案例说明:
kingbaseES V8R3集群部署读写分离的集群是使用ssh的默认端口(22)部署,当改为非默认端口时,在部署中或部署后会因kingbasecluster脚本ssh的连接而失败,现提出以下解决方案。
适用版本:
KingbaseES V8R3
1、系统修改ssh监听端口
[root@node102 ~]# cat /etc/ssh/sshd_config|grep -i port
# If you want to change the port on a SELinux system, you have to tell
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
Port 2222
[root@node102 ~]# cat /etc/services |grep ssh
ssh 2222/tcp # The Secure Shell (SSH) Protocol
ssh 2222/udp # The Secure Shell (SSH) Protocol
重启sshd服务或主机后,ssh连接的端口会改为指定端口。
验证ssh互信:
2、部署kingbasecluster(修改ssh端口)
如上图所示,修改ssh端口为指定端口(如2222)。
3、部署kingbasecluster出现错误
查看" /home/kingbase/cluster/kha/log/cluster.log"日志,可以获取ssh通讯错误信息。
4、修改kingbasecluster部署脚本(ssh通讯)(在所有node上完成)
以上脚本分别位于集群安装目录的(db/bin和kingbasecluster/bin)目录下:
[kingbase@srv1 bin]$ pwd
/home/kingbase/cluster/kha/db/bin
[kingbase@srv1 bin]$ ls -lh *.sh
-rwxrwxr-x 1 kingbase kingbase 13K 9月 15 20:25 all_monitor.sh
-rwxr-xr-x 1 kingbase kingbase 2.9K 6月 21 17:30 change_vip.sh
-rwxr-xr-x 1 kingbase kingbase 2.8K 6月 21 17:30 esHAmodel.sh
-rwxr-xr-x 1 kingbase kingbase 8.6K 6月 21 17:30 kingbase_checkpoint.sh
-rwxr-xr-x 1 kingbase kingbase 14K 9月 15 20:25 kingbase_monitor.sh
-rwxr-xr-x 1 kingbase kingbase 8.4K 6月 21 17:30 kingbase_promote.sh
-rwxr-xr-x 1 kingbase kingbase 46K 9月 15 20:25 network_rewind.sh
-rwxr-xr-x 1 kingbase kingbase 5.4K 6月 21 17:30 sync_async.sh
-rwxr-xr-x 1 kingbase kingbase 8.2K 6月 21 17:30 timingbackup.sh
[kingbase@srv1 bin]$ pwd
/home/kingbase/cluster/kha/kingbasecluster/bin
[kingbase@srv1 bin]$ ls -lh *.sh
-rwxrwxr-x 1 kingbase kingbase 13K 9月 15 20:26 all_monitor.sh
-rwxrwxr-x 1 kingbase kingbase 15K 9月 15 20:26 failover_stream.sh
-rwxrwxr-x 1 kingbase kingbase 26K 6月 20 15:49 restartcluster.sh
用vi编辑器替换脚本中的ssh命令语句,如下所示:(其中2222为ssh通讯端口)。
Tips:
在所有node上,替换完成后需做以下操作后,才能继续完成部署。
5、删除备库目录,重新创建备库"data"目录并授权
因为在部署kingbasecluster之前database已经部署完成,修改完脚本后会重新部署数据库,如果备库data目录存在,在做sys_basebackup时会报错,备库创建失败。如下图所示:
所以需要手工删除备库data目录,重新通过sys_basebackup创建备库:
备库执行以下操作:
[kingbase@srv2 db]$ rm -rf data
[kingbase@srv2 db]$ mkdir data
[kingbase@srv2 db]$ chmod 700 data
重新创建备库目录后,点击“继续”部署,完成集群的部署。
6、部署完成
7、查看主备复制状态
[kingbase@srv1 cluster]$ ksql -Usystem -W123456 TEST
ksql (V008R003C002B0061)
Type "help" for help.
TEST=# select usename,application_name,client_addr, client_hostname,sync_state from sys_stat_replication;
usename | application_name | client_addr | client_hostname | sync_state
---------+------------------+-------------+-----------------+------------
SYSTEM | node2 | 192.168.1.3 | | sync
(1 row)
8、查看ip分配信息(主库节点)
9、通过脚本kingbase_monitor.sh一键启停
[kingbase@srv2 bin]$ ./kingbase_monitor.sh restart
-----------------------------------------------------------------------
2020-09-16 10:26:19 KingbaseES automation beging...
...
now we check again
=======================================================================
| ip | program| [status]
[ 192.168.1.2]| [kingbasecluster]| [active]
[ 192.168.1.3]| [kingbasecluster]| [active]
[ 192.168.1.2]| [kingbase]| [active]
[ 192.168.1.3]| [kingbase]| [active]
=======================================================================
Tips:
以上测试是在CentOS 7 及x86环境下完成,其他系统环境需要进一步测试,部署成功后,后续的主备故障切换还需要继续测试。
10、总结
以上案例是在部署前修改了ssh端口,如果是部署完成后,再修改ssh端口,对于集群,只需要修改对应脚本即可,脚本修改,参考文档中的内容。