JumpServer 平滑迁移
大家好,我是秋意零。今天,分享一个生产JumpServer平滑迁移案例。
背景:生产环境中有一套通过Helm部署的JumpServer。因机房物理服务器规划调整,需某些物理服务器需回收,更换新的物理服务器。在物理服务器回收前,需将上面运行的服务进行迁移。
操作步骤
本文中旧新环境关系:旧环境中的JumpServer迁移到新环境。同时下列所说生产环境也指旧环境。
在执行迁移任务前,先捋清楚操作步骤。
在新K8s集群中,部署好与旧K8s集群中,相同的JumpServer版本。部署时数据层使用备份的MySQL、Redis中的数据。不与旧版本冲突。待测试完功能和数据正常之后,将所属域名解析切换即可。具体步骤如下:
- 准备备份的数据库地址(MySQL、Redis)
- 准备一个访问域名(可忽略,IP访问也行)
- 在新K8s集群中部署相同版本的JumpServer
- 测试功能是否正常
- 功能正常后切回数据库(MySQL、Redis)为生产数据库,同时切回为生产环境的域名
- 修改域名解析
平滑迁移步骤
说明:这里的JumpServer采用Helm方式部署的
1)拷贝旧环境中的JumpServer版本
首先需要在旧环境中将JumpServer部署的版本,拷贝到新环境中
scp -r /opt/jumpserver-3.10.9.tgz/ 192.168.200.10:/opt
在新环境中解压jumpserver-3.10.9.tgz
tar -xf jumpserver-3.10.9.tgz
Helm部署的JumpServer,只修改values.yaml文件进行配置即可。为了新环境与旧环境的JumpServer配置保持一致,可以直接拷贝旧环境的values.yaml文件
scp -r /opt/jumpserver/ 192.168.200.10:/opt
2)修改values.yaml文件
这个时候由于我们不能马上使用旧环境的values.yaml文件,因为需要先修改数据库与域名信息(先使用备份数据库与其他域名)
如果不知道旧环境与新环境的values.yaml改动在哪里的时候,可以通过进行文本文件对比工具区分查看。如图:
在线文本文件对比:https://www.qianbo.com.cn/Tool/File-Difference/
左边是默认未修改的values.yaml文件,右边是旧环境配置后的values.yaml文件
注意:values.yaml文件中Redis配置信息,不能配置Redis集群,否则会报错。如图:
新环境secretKey与bootstrapToken字段的值需与旧环境的保持一致,否则会导致数据库加密数据无法解密。
具体表现形式就是,之前配置的资产密码都解析不了,就需要每台机器手动输入密码了。
3)启动/验证
配置后就可以正常启动了
# 安装启动JumpServer
helm install jms-k8s jumpserver -n jumpserver
# 更新(配置有变动执行)
helm upgrade jms-k8s jumpserver -n jumpserver
# 查看安装的Chat
helm list -n jumpserver
# 删除JumpServer
helm uninstall jms-k8s -n jumpserver
4)切换数据库与域名
验证没有问题之后。修改values.yaml文件中的数据库与域名信息,使其新环境与旧环境保持一致即可。
修改后,再次启动JumpServer。
# 更新(配置有变动执行)
helm upgrade jms-k8s jumpserver -n jumpserver
5)开放SVC远程连接端口。紧接着就可以修改旧环境中JumpServer使用的域名的解析为新环境解析,从而达到平滑迁移的目标。
30222该端口服务是JumpServer的SSH终端连接端口
kubectl edit svc -n jumpserver jms-k8s-jumpserver-jms-koko
添加这部分内容
参考
在线安装 - JumpServer 文档:https://docs.jumpserver.org/zh/v4/installation/setup_kubernetes/helm_online_install/
迁移文档 - JumpServer 文档:https://docs.jumpserver.org/zh/v4/installation/migration/?h=迁移