当主服务器有提交时,默认通过ssh协议向从服务器推送提交,完成主从同步.
无密码访问镜像服务器
生成无密码rsa公钥私钥对
SSH authentication must be by passwordless public key
gerrit@mirrorServer: ssh-keygen -t rsa #直接按三次回车键即可
将~/.ssh/id_rsa.pub文件服务器到镜像服务器~/.ssh/authorized_keys中
scp gerrit@masterServer:/home/gerrit/.ssh/id_rsa.pub ~/.ssh/master.pub
cat ~/.ssh/master.pub >> ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
#这是linux的安全要求,如果权限不对,自动登录将不会生效
If replicating over SSH (recommended), ensure the host key of the remote system(s) is already in the Gerrit user’s ~/.ssh/known_hosts file.
确保主服务器~/.ssh/known_hosts中包含镜像服务器的公钥,当镜像服务器ssh公私钥重新生成时,主服务器known_hosts的公钥也要更换.
#测试无密码能否登录
#添加镜像服务器的host key到known_hosts
gerrit@masterServer: ssh gerrit@mirrorServer
配置replication
vi etc/replication.config
[remote "mirrorServer"]
url = gerrit@mirrorServer:/home/gerrit/review_site/git/${name}.git
push = +refs/heads/*:refs/heads/*
push = +refs/tags/*:refs/tags/*
mirror = true
threads = 3
replicationDelay = 15
#重启主服务器
./bin/gerrit.sh restart
#查看replication日志
tail -f logs/replication_log
手动同步
ssh -p 29418 admin@127.0.0.1 gerrit --help
ssh -p 29418 admin@127.0.0.1 replication start --help
ssh -p 29418 admin@127.0.0.1 replication start --all
遇见的问题
cannot execute: git-upload-pack
ls -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
ls -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
clone镜像服务器仓库
Fatal : Could not fetch refs from ssh:admin@mirrorServer:29418/test_repo.git
#向主仓库提交一次修改,同步后就可以clone了
reject HostKey
vi ~/.ssh/config
Host mirror
User gerrit
IdentityFile /home/gerrit/.ssh/id_rsa #/path/to/the/private/key
StrictHostKeyChecking no
UserKnownHostsFile /dev/null