www.moko.cc ----李俊
QQ:5161155
最近學習了lvs+keepalived的高可用,個人覺得比heartbeat+ldirectord+lvs要簡單很多,下午沒什麼工作。
總結一下學習心得吧,大牛、老鳥們可以路過了 ·嘿嘿
至於什麼是lvs 什麼是heartbeat 什麼是keepalived ,如果不懂請GOOGLE一下,這裏就不多做說明了。
先做個兩者對比吧,僅LVS應用高可用模式進行兩者之間對比,純屬個人意見,如有不同觀點,請留言指點我,先謝謝了,呵呵
總結一下學習心得吧,大牛、老鳥們可以路過了 ·嘿嘿
至於什麼是lvs 什麼是heartbeat 什麼是keepalived ,如果不懂請GOOGLE一下,這裏就不多做說明了。
先做個兩者對比吧,僅LVS應用高可用模式進行兩者之間對比,純屬個人意見,如有不同觀點,請留言指點我,先謝謝了,呵呵
heartbeat+ldirectord+lvs
優點:可用rpm或yum方式直接安裝,尤其是ipvsadm不用以tarball方式安裝,我用的2.6.18 kernel直接用YUM安裝
不用單獨爲ipvsadm寫腳本,直接在ldirectord.cf中設置即可。
優點:可用rpm或yum方式直接安裝,尤其是ipvsadm不用以tarball方式安裝,我用的2.6.18 kernel直接用YUM安裝
不用單獨爲ipvsadm寫腳本,直接在ldirectord.cf中設置即可。
缺點:安裝設置比lvs+keepalived複雜,需要配置authkeys、ha.cf、haresources、ldirectord.cf 四個配置文件。新手上手比較生疏
檢測後端realserver需要在後端的站點中,單獨製作一個頁面,目的是爲了ldirectord檢測realserver的狀態用。
檢測後端realserver需要在後端的站點中,單獨製作一個頁面,目的是爲了ldirectord檢測realserver的狀態用。
lvs+keepalived
優點:配置文件只有一個keepalived.conf就搞定了,配置語法風格通俗易懂,新手上手快。當然,也利於維護。
檢測realserver的方式是基於端口狀態檢測,無需在realserver的站點中單獨製作頁面(像Squid或Nginx堆後端的話,這點就比HA要好)
缺點:安裝需要以tarball的方式,因爲keepalived是基於2.4.X kernel的,所以安裝的時候,要先安裝kelnel source源碼包(rpm,tarball都可以)
需要爲ipvsadm單獨寫腳本,ipvsadm 啓用並工作後,keepalived纔會接管控制ipvsadm。做到檢測realserver,同時LVS1和LVS2之間會相互檢測(個人見解)
理解也就這麼多了,呵呵,比較淺陋。
好了,廢話不說了。接下來講講lvs+keepalived的安裝過程及設置吧。
系統環境:
CentOS 5.2 (2.6.18-53.el5)
Nginx 使用80端口
Squid 使用80端口
軟件包:
kernel-2.6.18-53.el5.src.rpm *** 內核源碼包 ***
ipvsadm-1.24.tar.gz *** ipvsadm的tarball ***
keepalived-1.1.15.tar.gz *** keepalived的tarball ***
openssl-devel *** openssl的開發包 ***
kernel-devel *** 內核的開發包 ***
說明:測試機器共六臺
VIP1:192.168.2.130 *** 虛擬地址1 ***
VIP2:192.168.2.140 *** 虛擬地址2 ***
LVS1:192.168.2.131 *** 主LVS ***
LVS2:192.168.2.132 *** 備用LVS ***
RIP1:192.168.2.133 *** Nginx1 ***
RIP2:192.168.2.134 *** Nginx2 ***
RIP3:192.168.2.135 *** Squid1 ***
RIP4:192.168.2.136 *** Squid2 ***
RIP2:192.168.2.134 *** Nginx2 ***
RIP3:192.168.2.135 *** Squid1 ***
RIP4:192.168.2.136 *** Squid2 ***
登陸主lvs後,開始安裝軟件包
1.1 安裝內核源碼包
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 *修正rpm包安裝key警告*
# useradd mockbuild ***建立內核源碼包安裝所需用戶***
# rpm -ivh kernel-2.6.18-53.el5.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bp --target=i686 kernel-2.6.spec
#ln -s /usr/src/kernels/2.6.18-53.el5-i686 /usr/src/linux ***爲內核源碼包做鏈接***
# cd /usr/src/linux
# vi Makefile
修改 EXTRAVERSION = -prep
該成 EXTRAVERSION = -53.el5
# uname -r ***保持跟uname -r 的版本一致 檢測一下***
2.6.18-53.el5
# head -n4 Makefile ***看到一致了***
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 18
EXTRAVERSION = -53.el5
OK,內核源碼包安裝完了。
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 *修正rpm包安裝key警告*
# useradd mockbuild ***建立內核源碼包安裝所需用戶***
# rpm -ivh kernel-2.6.18-53.el5.src.rpm
# cd /usr/src/redhat/SPECS
# rpmbuild -bp --target=i686 kernel-2.6.spec
#ln -s /usr/src/kernels/2.6.18-53.el5-i686 /usr/src/linux ***爲內核源碼包做鏈接***
# cd /usr/src/linux
# vi Makefile
修改 EXTRAVERSION = -prep
該成 EXTRAVERSION = -53.el5
# uname -r ***保持跟uname -r 的版本一致 檢測一下***
2.6.18-53.el5
# head -n4 Makefile ***看到一致了***
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 18
EXTRAVERSION = -53.el5
OK,內核源碼包安裝完了。
1.2 安裝ipvsadm
#yum install openssl-devel *** 安裝openssl開發包***
#yum install kernel-devel *** 安裝kernel開發包***
#tar zxvf ipvsadm-1.24.tar.gz
#cd ipvsadm-1.24
#make && make install
#yum install openssl-devel *** 安裝openssl開發包***
#yum install kernel-devel *** 安裝kernel開發包***
#tar zxvf ipvsadm-1.24.tar.gz
#cd ipvsadm-1.24
#make && make install
1.3 安裝keepalived
#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
.#/configure –sysconf=/etc/
#make && make install
#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
.#/configure –sysconf=/etc/
#make && make install
如果剛纔你配置的時候沒加 --sysconf=/etc/ ,那麼就執行以下命令,把配置文件和執行文件拷貝到相應的目錄裏。
#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/sbin/keepalived /usr/sbin/
#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/sbin/keepalived /usr/sbin/
1.4 配置ipvsadm,編寫啓動腳本
#vi dlvs
輸入以下代碼
#vi dlvs
輸入以下代碼
#!/bin/bash
#2009-06-02 by Minyoni http://adidas.blog.51cto.com
#Nginx Realserver ipaddress
RIP1=192.168.2.133
RIP2=192.168.2.134
#Squid Realserver ipaddress
RIP3=192.168.2.135
RIP4=192.168.2.136
#2009-06-02 by Minyoni http://adidas.blog.51cto.com
#Nginx Realserver ipaddress
RIP1=192.168.2.133
RIP2=192.168.2.134
#Squid Realserver ipaddress
RIP3=192.168.2.135
RIP4=192.168.2.136
#Virtual ipaddress
VIP1=192.168.2.130
VIP2=192.168.2.140
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of DirectorServer"
# set the Virtual IP Address and sysctl parameter
/sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
/sbin/ifconfig eth0:1 $VIP2 broadcast $VIP2 netmask 255.255.255.255 up
VIP1=192.168.2.130
VIP2=192.168.2.140
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of DirectorServer"
# set the Virtual IP Address and sysctl parameter
/sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
/sbin/ifconfig eth0:1 $VIP2 broadcast $VIP2 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev eth0:0
/sbin/route add -host $VIP2 dev eth0:1
echo "1" >/proc/sys/net/ipv4/ip_forward
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
#Nginx Realserver
/sbin/ipvsadm -A -t $VIP1:80 -s wrr -p 600
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g
#Squid Realserver
/sbin/ipvsadm -A -t $VIP2:80 -s wrr -p 600
/sbin/ipvsadm -a -t $VIP2:80 -r $RIP3:80 -g
/sbin/ipvsadm -a -t $VIP2:80 -r $RIP4:80 -g
#Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
/sbin/ifconfig eth0:1 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
/sbin/route add -host $VIP2 dev eth0:1
echo "1" >/proc/sys/net/ipv4/ip_forward
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
#Nginx Realserver
/sbin/ipvsadm -A -t $VIP1:80 -s wrr -p 600
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g
#Squid Realserver
/sbin/ipvsadm -A -t $VIP2:80 -s wrr -p 600
/sbin/ipvsadm -a -t $VIP2:80 -r $RIP3:80 -g
/sbin/ipvsadm -a -t $VIP2:80 -r $RIP4:80 -g
#Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
/sbin/ifconfig eth0:1 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
好,:wq 保存退出。
這樣LVS的ipvsadm啓動腳本就寫好了,接着
#chmod 755 dlvs *** 賦予可執行權限***
這樣LVS的ipvsadm啓動腳本就寫好了,接着
#chmod 755 dlvs *** 賦予可執行權限***
1.5 配置keepalived
#mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.old
#vi /etc/keepalived/keepalived.conf
#mv /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.old
#vi /etc/keepalived/keepalived.conf
輸入以下代碼
! Configuration File for keepalived
global_defs {
notification_email {
[email protected] #如果本機沒有SMTP服務,報警信還是發不出去,汗
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #備份服務器上將MASTER改爲BACKUP
interface eth0 #HA監測網絡接口
virtual_router_id 51 #主、備機的virtual_router_id一定要相同,必須相同!!!
priority 100 #主、備機取不同的優先級,主機值較大,備份機值較小
advert_int 1 #VRRP Multicast廣播週期秒數
authentication {
auth_type PASS #VRRP認證方式
auth_pass 1111 #VRRP口令字
}
virtual_ipaddress {
192.168.2.130 #LVS虛擬地址,可寫多個VIP,一行一個VIP
192.168.2.140
}
}
virtual_server 192.168.2.130 80 {
delay_loop 2 #延時等待時間
lb_algo wrr #輪詢算法
lb_kind DR #傳輸模式
persistence_timeout 600 #單一鏈接重連保持時間,這裏設置600秒
protocol TCP
real_server 192.168.2.133 80 {
weight 1 #權重
TCP_CHECK { #realserve的狀態檢測設置部分,單位是秒
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.2.134 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
global_defs {
notification_email {
[email protected] #如果本機沒有SMTP服務,報警信還是發不出去,汗
}
notification_email_from root@localhost
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER #備份服務器上將MASTER改爲BACKUP
interface eth0 #HA監測網絡接口
virtual_router_id 51 #主、備機的virtual_router_id一定要相同,必須相同!!!
priority 100 #主、備機取不同的優先級,主機值較大,備份機值較小
advert_int 1 #VRRP Multicast廣播週期秒數
authentication {
auth_type PASS #VRRP認證方式
auth_pass 1111 #VRRP口令字
}
virtual_ipaddress {
192.168.2.130 #LVS虛擬地址,可寫多個VIP,一行一個VIP
192.168.2.140
}
}
virtual_server 192.168.2.130 80 {
delay_loop 2 #延時等待時間
lb_algo wrr #輪詢算法
lb_kind DR #傳輸模式
persistence_timeout 600 #單一鏈接重連保持時間,這裏設置600秒
protocol TCP
real_server 192.168.2.133 80 {
weight 1 #權重
TCP_CHECK { #realserve的狀態檢測設置部分,單位是秒
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.2.134 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 192.168.2.140 80 {
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 600
protocol TCP
real_server 192.168.2.135 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.2.136 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
delay_loop 2
lb_algo wrr
lb_kind DR
persistence_timeout 600
protocol TCP
real_server 192.168.2.135 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.2.136 80 {
weight 1
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
好,:wq保存退出。
1.5 配置sysctl.conf並使其新配置生效
#vi /etc/sysctl.conf
輸入以下代碼
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.eth0.send_redirects=1
輸入以下代碼
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=1
net.ipv4.conf.default.send_redirects=1
net.ipv4.conf.eth0.send_redirects=1
好,:wq保存退出。
#sysctl -p ***新配置生效了***
到這裏,主LVS的安裝和設置工作就完成了。
備用LVS的安裝和設置,和主LVS一樣,不同的是配置keepalived的時候,只要把主LVS的配置文件/etc/keepalived/keepalived.conf ,拷貝到備用LVS的對應位置/etc/keepalived/keepalived.conf。
然後更改以下兩項,其他安裝和配置和主LVS一樣。
1.
state MASTER #備份服務器上將MASTER改爲BACKUP,因爲備用LVS一定要
備用LVS的安裝和設置,和主LVS一樣,不同的是配置keepalived的時候,只要把主LVS的配置文件/etc/keepalived/keepalived.conf ,拷貝到備用LVS的對應位置/etc/keepalived/keepalived.conf。
然後更改以下兩項,其他安裝和配置和主LVS一樣。
1.
state MASTER #備份服務器上將MASTER改爲BACKUP,因爲備用LVS一定要
用BACKUP
更改完後就是這樣的
state BACKUP
2.
priority 100 #主、備機取不同的優先級,主機值較大,備份機值較小,所以備
更改完後就是這樣的
state BACKUP
2.
priority 100 #主、備機取不同的優先級,主機值較大,備份機值較小,所以備
用LVS我取90
更改完後就是這樣的
priority 90
更改完後就是這樣的
priority 90
OK,這樣,就可以了。主,備LVS,都已經安裝配置完了
現在我們設置realserver就可以了
現在我們設置realserver就可以了
2.1 配置realserver,編寫啓動腳本
我們先來配置Nginx應用的realserver。
登陸RIP1:192.168.2.133 (Nginx1)
#vi rs
輸入以下代碼
#!/bin/bash
#2009-06-02 by Minyoni http://adidas.blog.51cto.com
我們先來配置Nginx應用的realserver。
登陸RIP1:192.168.2.133 (Nginx1)
#vi rs
輸入以下代碼
#!/bin/bash
#2009-06-02 by Minyoni http://adidas.blog.51cto.com
VIP=192.168.2.130
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&1
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
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&1
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
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
好,:wq保存退出
#chmod 755 rs ***賦予可執行權限***
#chmod 755 rs ***賦予可執行權限***
登陸RIP3:192.168.2.134 (Nginx2)
重複剛纔的工作。
重複剛纔的工作。
2.2 現在我們來配置Squid應用的realserver。
登陸RIP1:192.168.2.135 (Squid1)
#vi rs
輸入以下代碼
#!/bin/bash
#2009-06-02 by Minyoni http://adidas.blog.51cto.com
登陸RIP1:192.168.2.135 (Squid1)
#vi rs
輸入以下代碼
#!/bin/bash
#2009-06-02 by Minyoni http://adidas.blog.51cto.com
VIP=192.168.2.140
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&1
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
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
/etc/rc.d/init.d/functions
case "$1" in
start)
ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
/sbin/route add -host $VIP dev lo:0
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
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $VIP >/dev/null 2>&1
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
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
好,:wq保存退出
#chmod 755 rs ***賦予可執行權限***
#chmod 755 rs ***賦予可執行權限***
登陸RIP4:192.168.2.136 (Squid2)
重複剛纔的工作。
重複剛纔的工作。
3.1 啓動keepalived+lvs
到此爲止,所有的安裝配置工作全部都做完了。我們來啓動keepalived+lvs,讓其工作
首先登陸
RIP1:192.168.2.133 *** Nginx1 ***
RIP2:192.168.2.134 *** Nginx2 ***
RIP3:192.168.2.135 *** Squid1 ***
RIP4:192.168.2.136 *** Squid2 ***
啓動相應的應用程序Nginx和Squid
然後在這4臺服務器上都執行rs腳本, 千萬要記得你的rs腳本保存在哪裏了
rs腳本的用法
#./rs start ***啓動realserver的虛擬IP***
#./rs stop ***停止realserver的虛擬IP***
RIP1:192.168.2.133 *** Nginx1 ***
RIP2:192.168.2.134 *** Nginx2 ***
RIP3:192.168.2.135 *** Squid1 ***
RIP4:192.168.2.136 *** Squid2 ***
啓動相應的應用程序Nginx和Squid
然後在這4臺服務器上都執行rs腳本, 千萬要記得你的rs腳本保存在哪裏了
rs腳本的用法
#./rs start ***啓動realserver的虛擬IP***
#./rs stop ***停止realserver的虛擬IP***
我們現在啓動realserver的虛擬IP
#./rs start
RealServer Start OK ***提示啓動虛擬IP成功***
接着查看一下
#ifconfig lo:0 ***查看虛擬IP信息,你會看到信息***
然後把其餘3臺都執行一次
#./rs star
#./rs start
RealServer Start OK ***提示啓動虛擬IP成功***
接着查看一下
#ifconfig lo:0 ***查看虛擬IP信息,你會看到信息***
然後把其餘3臺都執行一次
#./rs star
現在登錄
LVS1:192.168.2.131 *** LVS1 ( 主)***
LVS2:192.168.2.132 *** LVS2 備用)***
先在 LVS1:192.168.2.131 主LVS上執行dlvs腳本,用法
#./dlvs start ***啓動ipvsadm***
#./dlvs stop ***停止ipvsadm***
LVS2:192.168.2.132 *** LVS2 備用)***
先在 LVS1:192.168.2.131 主LVS上執行dlvs腳本,用法
#./dlvs start ***啓動ipvsadm***
#./dlvs stop ***停止ipvsadm***
執行
#./dlvs start ***現在ipvsadm已經啓動了***
執行
#service keepalived start ***啓動keepalived進入LVS的高可用模式***
在 LVS2:192.168.2.132 備用LVS上執行
#./dlvs start ***現在ipvsadm已經啓動了***
#service keepalived start ***啓動keepalived進入LVS的高可用模式***
#./dlvs start ***現在ipvsadm已經啓動了***
執行
#service keepalived start ***啓動keepalived進入LVS的高可用模式***
在 LVS2:192.168.2.132 備用LVS上執行
#./dlvs start ***現在ipvsadm已經啓動了***
#service keepalived start ***啓動keepalived進入LVS的高可用模式***
現在LVS已經運行在高可用模式了
回到主LVS上查看ipvsadm 運行情況
#watch ipvsadm -ln
#watch ipvsadm -ln
停掉RIP1:192.168.2.133 (Nginx1) 的 WEB服務
192.168.2.133 不在列表中了
啓動RIP1:192.168.2.133 (Nginx1) 的 WEB服務
192.168.2.133 恢復到列表中了
以上說明了keepalived會自動接管ipvsadm,自動檢測realserver的狀態
現在來測試主LVS和備用LVS之間的相互檢測
停掉主LVS
#./dlvs stop
#service keepalived stop
查看備用LVS的運行狀態
先查看下messages
#tail -f /var/log/messages
備用LVS已經接管了工作,狀態爲MASTER STATE
備用LVS上查看ipvsadm 運行情況
一切還是正常的,接管了工作
如果這時候啓動主LVS
#./dlvs start
#service keepalived start
查看messages日誌
#tail -f /var/log/messages
主LVS又主動接管了工作,狀態爲MASTER STATE
#./dlvs start
#service keepalived start
查看messages日誌
#tail -f /var/log/messages
主LVS又主動接管了工作,狀態爲MASTER STATE
這個時候,備用LVS的狀態一定是BACKUP STATE
測試到此就結束了,以上就是我對keepalived+lvs學習的一些總結。過程也許不夠好,有錯誤的地方,希望大家多指點我,我一定虛心受教,先謝謝了。
注:文中腳本和配置文件,我打包了。
下載附件即可更改使用