上一篇已经记录了给gitlab本地做自动备份的解决方案,但是源码安全关乎研发部门的生命,还是需要进一步提高容灾能力。首先研发部门暂时没有老法师能够在服务器挂了之后通过硬盘将服务器完全恢复,虽然服务器做了raid5,谨慎起见还是得实现远程自动备份的解决方案,当源码服务器出现灾难性故障时可以保证恢复源码的功能。
为了能够符合我的部署步骤,我将其中部分内容重新整理并修改,也增补了一点细节说明。
一、环境准备
1.gitlab所在的服务器A(centos7,192.168.1.1)
2.备份服务器B(centos7,192.168.1.2)
3.gitlab本地备份目录设置为/var/opt/gitlab/backups/log,本篇也是以此展开
gitlab已经配置了本地备份。如果没有配置,可以参考http://www.cnblogs.com/straycats/p/7671204.html。
二、通过密钥配对取消scp传输密码的限制
手动备份数据费时费力。最好的方法就是通过脚本实现远程自动备份。但远程无论是通过SSH登陆,还是通过scp拷贝文件都需要输入密码。
为了克服这个问题,首先需要实现不需要密码的SSH登陆,这样就可以使用 rsync,scp,rexec等命令来做的远程备份了。
2.1 生成密钥对
假设A,B两服务器,现在需要在A机上用root登陆B机,而不需要输入密码。那我们可按照下面的步骤来做:
1)在gitlab服务器A上生成rsa证书
ssh-keygen -t rsa
(这里需要增加截图,我第一次部署时忘记截了之后补)
1、生成的过程中提示输入密钥对保存位置,直接回车,接受默认值就行了。
2、因为之前已经有/root/.ssh/id_rsa 文件存在,因此提示你是否覆盖,输入y表示覆盖
3、接着会提示输入一个密码,直接回车,让它空着。当然,也可以输入一个密码。
4、接着输入确认密码,输入完之后,回车密钥对就生成完了。
这样,在/root/.ssh下生成id_rsa 和 id_rsa.pub 两个文件,其中公共密钥保存在 /root/.ssh/id_rsa.pub,私有密钥保存在/root/.ssh/id_rsa。
2)在gitlab服务器A上cp生成rsa公钥证书