實驗平臺:virtualbox 4.12
創(chuàng)新互聯(lián)專注于企業(yè)
營銷型網站建設、網站重做改版、拉薩網站定制設計、自適應品牌網站建設、
H5響應式網站、
成都做商城網站、集團公司官網建設、外貿營銷網站建設、高端網站制作、響應式網頁設計等建站業(yè)務,價格優(yōu)惠性價比高,為拉薩等各大城市提供網站開發(fā)制作服務。
操作系統(tǒng):RHEL5.4
實驗拓撲:
兩臺Directory都有兩塊網卡,都設置為靜態(tài)地址,其中eth0用于網絡間通信,eth1用于兩臺Directory監(jiān)測彼此心跳信息,所以使用獨立的網絡進行連接,在實際應用中可以使用串行線進行連接,這里由于使用虛擬機就采用intnet的內部網予以實現(xiàn)。
本實驗用到的軟件包有:
heartbeat-2.1.4-9.el5.i386.rpm heartbeat-devel-2.1.4-9.el5.i386.rpm heartbeat-gui-2.1.4-9.el5.i386.rpm heartbeat-ldirectord-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm 一.首先安裝軟件包
[root@DIR ~]# yum localinstall *.rpm --nogpgcheck -y
按照拓撲圖設置兩臺主機的IP地址和主機名
分別修改兩主機/etc/hosts文件,添加下面的內容
192.168.56.10 node1.a.org node1
192.168.56.30 node2.a.org node2
為兩主機設置免密碼ssh連接
首先在node1上:
[root@DIR ~]# ssh-keygen -t rsa [root@DIR ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2 再在node2上:
[root@DIR2 ~]# ssh-keygen -t rsa [root@DIR2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1 這樣就可以免輸密碼自由連接了。
可以將node1上的軟件包直接拷貝至node2上進行安裝:
[root@node1 ~]# scp *.rpm node2:/root/ 然后同樣的安裝步驟:
[root@DIR2 ~]# yum localinstall -y *.rpm –nogpgcheck
準備工作基本結束,下面開始進行配置
二.配置Heartbeat
1.將heartbeat的配置文件拷貝到/etc/ha.d目錄下
[root@node1 ~]# cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,haresources,authkeys} /etc/ha.d/ [root@node1 ~]#cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ 2.首先編輯ha.cf
[root@node1 ha.d]# cd /etc/ha.d/
[root@node1 ha.d]# vim ha.cf
修改下面幾項:
logfile /var/log/ha-log //打開日志 bcast eth1 //監(jiān)測心跳的網卡 node node1.a.org node node2.a.org //定義集群節(jié)點 respawn hacluster /usr/local/lib64/heartbeat/ipfail apiauth ipfail gid=haclient uid=hacluster //定義隨heartbeat一起啟動的進程 3.然后編輯authkeys
[root@node1 ha.d]# vim authkeys
修改文件最后幾行為
auth 2 //這里是用來指定認證方式的
2 sha1 e781edf0090887bee14405fd48768ac6(隨機數(shù))
隨機數(shù)可以用下面的命令生成
[root@node1 ~]# dd if=/dev//urandom bs=512 count=1 | md5sum
修改該文件的權限為400或600
[root@node1 ha.d]# chmod 400 authkeys
4.接下來編輯haresources
[root@node1 ha.d]# vim haresources
在其中寫入:
node1.a.org 192.168.56.20/24/eth0/192.168.56.255 ipvs ldirectord
這條語句分別用來定義主節(jié)點,VIP,指定網卡,廣播地址和隨之啟動的服務
最后來配置ldirectord.cf
[root@node1 ~]# vim /etc/ha.d/ldirectord.cf quiescent=yes checktimeout=3 //檢測存活的時間 checkinterval=1 //查詢間隔 autoreload=yes //自動重讀配置文件 logfile="/var/log/ldirectord.log" //日志目錄 logfile="local0" virtual=192.168.56.20:80 //虛擬主機地址 real=192.168.56.11:80 gate //Realserver地址 real=192.168.56.12:80 gate fallback=127.0.0.1:80 gate //Realserver全部宕機時指向的地址 service=http //服務 request="test/index.html" //測試存活與否所用的頁面 receive="ok" //檢測關鍵字 scheduler=wlc //調度算法 protocol=tcp checktype=negotiate //檢測類型 checkport=80 5.拷貝配置文件至node2
由于兩臺主機的配置文件必須相同,這里直接將node1上編輯好的配置文件拷貝至node2
[root@node1 ha.d]# scp ha.cf haresources authkeys ldirectord.cf node2:/etc/ha.d/
首先來配置兩臺Directory和兩臺Realserver,分別安裝httpd服務,并添加測試頁
[root@R1 ~]#yum install httpd -y [root@R1 ~]#echo '
Realserver1
' > /var/www/html/index.html [root@R1 ~]# echo 'ok' > /var/www/html/test.html [root@R2 ~]#yum install httpd -y [root@R2 ~]#echo '
Realserver2
' > /var/www/html/index.html [root@R2 ~]# echo 'ok' > /var/www/html/test.html [root@node1 ~]# yum install httpd -y [root@node1 ~]# echo '
web service is under maintenance,please weat...
' > /var/www/html/index.html [root@node2 ~]# yum install httpd -y [root@node2 ~]# echo '
web service is under maintenance,please weat...
' > /var/www/html/index.htm 下面是在兩臺HA上進行的配置:
在兩臺Directory上分別安裝ipvsadm
[root@node1 ~]# yum install ipvsadm -y [root@node2 ~]# yum install ipvsadm -y
由于使用兩臺Directory搭建lvs,關于lvs的Directory的設置就必須依賴于腳本來實現(xiàn)了。先來編輯Directory腳本,該腳本用于在資源流向自己時自動設置自己為lvs的Directory,并在資源不屬于自己時取消關于lvs的各項設置
[root@node1 ~]#vim /etc/init.d/ipvs.sh #!/bin/bash . /etc/rc.d/init.d/functions VIP=192.168.56.20 RIP1=192.168.56.11 RIP2=192.168.56.12 PORT=80 case "$1" in start) /sbin/ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev eth0:1 echo 1 > /proc/sys/net/ipv4/ip_forward //開啟本機路由轉發(fā)功能 # 清除已有的iptables配置 /sbin/iptables -F /sbin/iptables -Z # 清除已有的ipvsadm 規(guī)則 /sbin/ipvsadm -C # 添加VIP /sbin/ipvsadm -A -t $VIP:80 -s wlc # 在Directory下添加Realserver /sbin/ipvsadm -a -t $VIP:80 -r $RIP1 -g -w 1 /sbin/ipvsadm -a -t $VIP:80 -r $RIP2 -g -w 2 /bin/touch /var/lock/subsys/ipvsadm &> /dev/null ;; stop) echo 0 > /proc/sys/net/ipv4/ip_forward /sbin/ipvsadm -C /sbin/ifconfig eth0:1 down /sbin/route del $VIP /bin/rm -f /var/lock/subsys/ipvsadm echo "ipvs is stopped..." ;; status) if [ ! -e /var/lock/subsys/ipvsadm ]; then echo "ipvsadm is stopped ..." else echo "ipvs is running ..." ipvsadm -L -n fi ;; *) echo "Usage: $0 {start|stop|status}" ;; esac [root@node1 ~]#chmod a+x /etc/init.d/ipvs.sh 將配置好的腳本拷貝至node2上
[root@node1 ~]# scp /etc/init.d/ipvs node2:/etc/init.d/
這里需要對haresources文件進行一下修改,將剛才的腳本設置為隨服務啟動
配置realservers的腳本(運行此腳本能夠實現(xiàn)快速配置realservers)
#vim /etc/init.d/realserver.sh #!/bin/bash # Script to start LVS DR real server. # description: LVS DR real server . /etc/rc.d/init.d/functions VIP=192.168.56.20 host=`/bin/hostname` case "$1" in start) # Start LVS-DR real server on this machine. /sbin/ifconfig lo down /sbin/ifconfig lo up 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 /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev lo:0 ;; stop) /sbin/ifconfig lo:0 down echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce ;; status) # Status of LVS-DR real server. islothere=`/sbin/ifconfig lo:0 | grep $VIP` isrothere=`netstat -rn | grep "lo:0" | grep $VIP` if [ ! "$islothere" -o ! "isrothere" ];then # Either the route or the lo:0 device # not found. echo "LVS-DR real server Stopped." else echo "LVS-DR real server Running." fi ;; *) # Invalid entry. echo "$0: Usage: $0 {start|status|stop}" exit 1 ;; esac [root@R1 ~]# chmod a+x /etc/init.d/realserver.sh
[root@R1 ~]# scp /etc/init.d/rs.sh 192.168.56.12:/etc/init.d/
啟動服務進行測試:
[root@node1 ~]# /etc/init.d/heartbeat start [root@node1 ~]# ssh node2 -- '/etc/init.d/heartbeat start' [root@node1 ~]# /etc/init.d/ldirectord start [root@node1 ~]# ssh node2 --'/etc/init.d/ldirectord start' [root@node1 ~]# /etc/init.d/ipvs start [root@R1 ~]# /etc/init.d/realserver.sh start [root@R2 ~]# /etc/init.d/realserver.sh start 查看一下LVS信息
[root@node1 ~]# ipvsadm -L -n
說明服務已經正常啟動,在瀏覽器上測試一下
這時停掉node1上的heartbeat,看服務是否正常
[root@node1 ~]# service heartbeat stop
刷新頁面可以看到
依然可以正常訪問,在node2上查看一下ipvsdam的信息
[root@node2 ~]# ipvsadm -L -n
把兩臺Realserver都停掉,刷新頁面可以看到
查看一下ipvs轉發(fā)信息
[root@node1 ~]# ipvsadm -L -n
停掉主節(jié)點node1,刷新頁面
[root@node2 ~]# ipvsadm -L -n
至此,配置完成。
不登高山,怎知天高;不臨深溪,焉知地厚!站在堅實的土地上,做著生命中最真實的事情;像一棵挺拔的大樹,認可自己的命運并敢于迎接屬于這一方天空的風風雨雨。
標題名稱:【轉載】IPVS-DR+HA+ldirectord高可用負載均衡集群-創(chuàng)新互聯(lián)
本文路徑:
http://weahome.cn/article/dosjjh.html