標籤:linux svn heartbeat
1.環境準備(以下是我虛擬機器設定):
伺服器一:192.168.227.145(RIP) 系統centos 6.5
伺服器二:192.168.227.146(RIP) 系統centos 6.5
VIP:192.168.227.147
以上內容VIP為虛擬IP,RIP為伺服器真實IP,我們訪問svn伺服器是通過VIP去訪問的
2.搭建流程:
2.1 配置yum源
在/etc/yum.repos.d/CentOS-Base.repo加上aliyun的yum源
[aliyun-base]name=Aliyun-Base-CentOS-$releaseverbaseurl=http://mirrors.aliyun.com/centos/6/os/x86_64/gpgcheck=0 [aliyun-epel]name=Aliyun-Epel-CentOS-$releaseverbaseurl=http://mirrors.aliyun.com/epel/6Server/x86_64/gpgcheck=0
2.2 配置ssh雙機信任(如果有則忽略這步)
192.168.217.145伺服器:
ssh-keygen -t rsa(一直按enter即可)
ssh-copy-id 192.168.217.146
192.168.217.146伺服器:
ssh-keygen -t rsa(一直按enter即可)
ssh-copy-id 192.168.217.145
2.3 安裝rsync
yum -y install rsync即可
2.4 安裝svn伺服器
我的svn repos目錄在/data/svn
兩台svn伺服器配置當然一樣
以一台舉例:
2.4.1.yum -y install subversion(安裝svn伺服器)
2.4.2.mkdir -pv /data/svn
2.4.3.svnadmin create /data/svn/mytest(建立svn repos目錄)
2.4.4.vim /etc/sysconfig/svnserve 檔案內容:
OPTIONS="-r/data/svn" 類似於svnserve -d -r /data/svn
2.4.5.在當前svn來源目錄(我的例子是/data/svn/mytest) hooks加個post-commit檔案,一定要給該檔案執行許可權,它是svn提交後的鉤子,作用主要是提交後將svn目錄同步到另外一台伺服器
post-commit檔案內容:
#!/bin/bashREPOS="$1"REV="$2" CPATH=$(/usr/bin/dirname $(cd $(/usr/bin/dirname $0)&& pwd))"/" #擷取svn目錄根目錄IPARR="192.168.217.145 192.168.217.146" #svn叢集的兩個ipfor ip in $IPARR; do if/sbin/ifconfig | /bin/grep -E "addr:${ip}" &>/dev/null; then continue fi /bin/ping-c1 -w1 $ip &>/dev/null && /usr/bin/rsync -aP $CPATH $ip:$CPATHdone exit 0
2.4.6.在svn來源目錄下再加個recovery.sh(該指令碼作用是匹配當前伺服器和另外一台伺服器的版本號碼,如果當前伺服器版本號碼老於另外一台伺服器,則會主動將另外一台伺服器的代碼同步過來)主svn伺服器宕機之後恢複好之後可以使用
該檔案路徑是/data/svn/mytest/recovery.sh
#!/bin/sh CPATH=$(cd $(/usr/bin/dirname $0) &&pwd)"/" #擷取svn目錄根目錄IPARR="192.168.217.145 192.168.217.146" #svn叢集的兩個ip for ip in $IPARR; do if /sbin/ifconfig| /bin/grep -E "addr:${ip}" &>/dev/null; then continue fi if/bin/ping -c1 -w1 $ip &>/dev/null; then ssh_command="/usr/bin/svnlook youngest $CPATH" me_repos=$($ssh_command) ip_repos=$(/usr/bin/ssh $ip $ssh_command) if[ $me_repos -lt $ip_repos ]; then #如果本機版本號碼小於對方版本號碼則要從對方伺服器同步 /usr/bin/rsync -aP $ip:$CPATH $CPATH fi fidoneexit 0
2.5 heartbeat搭建
在開始搭建之前
修改/etc/hosts加上兩行(兩台伺服器一致)
192.168.217.145 primary
192.168.217.146 backup
再把對應145(hostname primary), 146(hostname backup)
2.5.1. yum -y install heartbeat(兩台伺服器一致)
2.5.2.在/etc/ha.d目錄下建立3個檔案ha.cf, haresources, authkeys
ha.cf檔案(192.168.217.145)
logfacility local0keepalive 1deadtime 30 #確認節點的宕機時間warntime 10initdead 60 #從一個節點切到另一個節點的時間udpport 694ucast eth0 192.168.217.146auto_failback onnode primarynode backupping 192.168.217.1
ha.cf檔案(192.168.217.146)
logfacility local0keepalive 1deadtime 30warntime 10initdead 60udpport 694ucast eth1 192.168.217.145auto_failback onnode primarynode backupping 192.168.217.1
haresources檔案(兩台伺服器一致)
primary 192.168.217.147/24svnserve
authkeys檔案(兩台伺服器一致)
auth 33 md5 Hellotomtop!
3.兩台機器service heartbeat start
至此svn叢集架構完畢
本文出自 “風之韻” 部落格,請務必保留此出處http://chinalx1.blog.51cto.com/2334265/1834648
svn高可用叢集搭建