1. Gerrit镜像机器配置
安装与主Gerrit相同版本的Gerrit,认证方式跟主Gerrit保持一致。
gerrit.config增加如下配置
[cache "accounts" ] maxAge = 3 min [cache "groups" ] maxAge = 3 min [cache "sshkeys" ] maxAge = 3 min [cache "groups_byuuid" ] maxAge = 3 min [cache "projects" ] maxAge = 3 min |
#!/bin/bash ipaddr=192.168. IP echo "***" echo "Can't push commit to this server!" echo "please run the commands below and push again:" echo " git config --global --add url.\"\".pushinsteadof http://${ipaddr}:8080" echo " git config --global --add url.\"ssh://${uploader_name}@ gerritURL:29418\".pushinsteadof ssh://${uploader_name}@${ipaddr}:29418" echo "***" exit 1 |
2. Gerrit主机配置
配置gerrit主机到所有镜像服务器的ssh信任关系,主机和镜像机器均使用gerrit的安装账号。
ssh-copy-id linux@replication1 ssh-copy-id linux@replication2 ssh-copy-id linux@replication3 ssh-copy-id linux@replication4 |
[gerrit] autoReload = true replicateOnStartup = true [remote "mirror_xian" ] url = linux@replication1:/home/linux/review/git/${name}.git url = linux@replication2:/home/linux/review/git/${name}.git url = linux@replication3:/home/linux/review/git/${name}.git url = linux@replication4:/home/linux/review/git/${name}.git push = +refs/heads/*:refs/heads/* push = +refs/tags/*:refs/tags/* push = +refs/users/*:refs/users/* push = +refs/meta/external-ids:refs/meta/external-ids push = +refs/starred-changes/*:refs/starred-changes/* push = +refs/sequences/accounts:refs/sequences/accounts push = +refs/groups/*:refs/groups/* push = +refs/meta/group-names:refs/meta/group-names push = +refs/sequences/groups:refs/sequences/groups push = +refs/meta/config:refs/meta/config mirror = true threads = 3 |
配置完成最好重启下Gerrit。
3. 负载均衡主机
需要安装ipvsadm工具, apt install ipvsadm
创建/etc/start_lvs.sh,内容如下,保存后增加执行权限并手动运行一次。
#!/bin/bash sleep 15 echo 1 > /proc/sys/net/ipv4/ip_forward VIP=192.168. IP PORT=29418 ip addr add $VIP /32 broadcast $VIP dev enp3s0 label enp3s0:0 #ip route add $VIP dev enp3s0:0 ipvsadm -A -t $VIP:$PORT -s wrr ipvsadm -a -t $VIP:$PORT -r replication1:$PORT -g -w 2 ipvsadm -a -t $VIP:$PORT -r replication2:$PORT -g -w 2 ipvsadm -a -t $VIP:$PORT -r replication3:$PORT -g -w 2 ipvsadm -a -t $VIP:$PORT -r replication4:$PORT -g -w 1 exit 0 |
然后配置/etc/rc.local为以下内容实现开机启动。
#!/bin/bash /etc/start_lvs.sh & exit 0 |
4. Gerrit镜像机器配置
/etc/rc.local配置为以下内容。
#!/bin/bash echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce ip addr add 192.168.IP broadcast 192.168.IP dev lo label lo:0 ip route add 192.168.IP dev lo:0 exit 0 |
保存后增加执行权限并手动运行一次。
chmod +x /etc/rc . local /etc/rc . local |
5. 研发本地配置
因为使用的是ssh协议,所以所有研发需要在本地的~/.ssh/config文件增加如下配置,没有就新建这个文件,当然如果使用http协议的话则没有这个问题。
StrictHostKeyChecking no UserKnownHostsFile /dev/ null |
还要使用如下命令配置pushinsteadof,因为是读写分离,拉代码都是从镜像服务器上拉取,提交的时候则需要提交到主gerrit服务器。
git config --global --add url. "ssh://账号@gerritURL:29418" .pushinsteadof ssh://账号 @192 .168. IP : 29418 |