gerrit replication 负载均衡

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

hooks目录(gerrit安装目录下)下创建commit-received文件,并增加如下代码,保存执行chmod +x commit-received 增加执行权限。
这个hook脚本的作用就是禁止给镜像服务器提交代码。

#!/bin/bash

#ipaddr 为代理负责分配负载地址

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.\"http://gerritURL:8080\".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

在replication.config中配置所有镜像服务器的url地址,url的格式为 账户@地址:Gerrit安装目录/git/${name}.git

[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

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值