1、 測試環境
apache+tomcat+keepalived jsp網站高可用(主備切換)
服務器:
master:centos 5.5 x86_64 10.10.0.38
backup: centos 5.5 x86_64 10.10.0.39
vip: 10.10.0.40
軟件:
httpd-2.2.6.tar.gz
jdk-6u4-linux-x64.bin
apache-tomcat-6.0.36.tar.gz
tomcat-connectors-1.2.37-src
keepalived-1.1.15.tar.gz
2、整合apche tomcat(省略、見jsp網站部署)
echo "10.10.0.38" > apache主目錄/ROOT/index.jsp
echo "10.10.0.39" > apache主目錄/ROOT/index.jsp
以上測試主備切換時用到
3、安裝keepalived(主、備機上)
#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure --prefix=/usr/local/keepalived
#make
#make install
#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
4、配置keepalived
1)主服務器:master
#mkdir /etc/keepalived
#vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
[email protected] #郵件通知地址
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_script chk_http_port {
script "/etc/keepalived/http.sh" #監控腳本
# script "/etc/keepalived/http1.sh"
interval 2 #監控時間
weight 2
}
vrrp_instance VI_1 {
state MASTER #設置爲主服務器
interface eth0 #監測網絡接口
virtual_router_id 51 #主、備必須一樣
mcast_src_ip 10.10.0.38 #(多播的源IP,設置爲本機外網IP,與VIP同一網卡)此項可不設置
priority 100 #(主、備機取不同的優先級,主機值較大,備份機值較小,值越大優先級越高)
advert_int 1 #VRRP Multicast廣播週期秒數
authentication {
auth_type PASS #VRRP認證方式,主備必須一致
auth_pass 1111 #(密碼)
}
track_script {
chk_http_port #調用http進程監控腳本
}
virtual_ipaddress {
10.10.0.40 #VRRP HA虛擬地址
}
2)備份服務器:BACKUP
只需要將主服務器配置做如下修改即可:
state BACKUP
priority 90
5、編寫監控腳本(主備機)
#vim /etc/keepalived/http.sh (監控apache)
#!/bin/sh
A=`ps -C httpd --no-header |wc -l`
if [ $A -eq 0 ];then
/usr/local/apache/bin/apachectl start
sleep 3
if [ `ps -C httpd --no-header |wc -l` -eq 0 ];then
killall keepalived
fi
fi
B=`ps aux | grep tomcat |wc -l`
if [ $B -eq 0 ];then
/usr/local/tomcat/bin/startup.sh
sleep 3
if [ `ps aux | grep tomcat |wc -l` -eq 0 ];then
killall keepalived
fi
fi
編寫監控腳本的原因:
當apache或tomcat服務不能正常運行,而keepalived或機器正常,則主備不會自動切換。
6、啓動服務
分別在主備機上啓動apache tomcat nginx
#/usr/local/apache/bin/apachectl start
#/usr/locat/tomcat/bin/startup.sh
#service keepalived start
主服務器上keepalived日誌:
#tail -f /var/log/message
Dec 21 14:49:09 monthplan Keepalived: Starting Keepalived v1.1.15 (12/21,2012)
Dec 21 14:49:09 monthplan Keepalived_vrrp: Using MII-BMSR NIC polling thread...
Dec 21 14:49:09 monthplan Keepalived_vrrp: Registering Kernel netlink reflector
Dec 21 14:49:09 monthplan Keepalived_vrrp: Registering Kernel netlink command channel
Dec 21 14:49:09 monthplan Keepalived_vrrp: Registering gratutious ARP shared channel
Dec 21 14:49:09 monthplan Keepalived: Starting VRRP child process, pid=1301
Dec 21 14:49:09 monthplan Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
Dec 21 14:49:09 monthplan Keepalived_vrrp: Configuration is using : 65382 Bytes
Dec 21 14:49:09 monthplan Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(7,8)]
Dec 21 14:49:09 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Dec 21 14:49:10 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Dec 21 14:49:10 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Dec 21 14:49:10 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.0.40
Dec 21 14:49:10 monthplan avahi-daemon[1829]: Registering new address record for 10.10.0.40 on eth0.
Dec 21 14:49:11 monthplan Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded
Dec 21 14:49:15 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.0.40
備服務器上keepalived日誌:
#tail -f /var/log/message
Dec 21 14:50:20 monthplan Keepalived: Starting Keepalived v1.1.15 (12/21,2012)
Dec 21 14:50:20 monthplan Keepalived_vrrp: Using MII-BMSR NIC polling thread...
Dec 21 14:50:20 monthplan Keepalived_vrrp: Registering Kernel netlink reflector
Dec 21 14:50:20 monthplan Keepalived_vrrp: Registering Kernel netlink command channel
Dec 21 14:50:20 monthplan Keepalived_vrrp: Registering gratutious ARP shared channel
Dec 21 14:50:20 monthplan Keepalived: Starting VRRP child process, pid=22788
Dec 21 14:50:20 monthplan Keepalived_vrrp: Opening file '/etc/keepalived/keepalived.conf'.
Dec 21 14:50:20 monthplan Keepalived_vrrp: Configuration is using : 65256 Bytes
Dec 21 14:50:20 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
Dec 21 14:50:20 monthplan Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(7,8)]
Dec 21 14:50:22 monthplan Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded
從日誌中可以看出主備服務正常啓動
7、測試
1)停掉主服務器keepalived
主日誌:
Dec 21 14:53:42 monthplan Keepalived: Stopping Keepalived v1.1.15 (12/21,2012)
Dec 21 14:53:42 monthplan Keepalived_vrrp: Terminating VRRP child process on signal
Dec 21 14:53:42 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) removing protocol VIPs.
Dec 21 14:53:42 monthplan avahi-daemon[1829]: Withdrawing address record for 10.10.0.40 on eth0.
備日誌:
Dec 21 14:53:46 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) Transition to MASTER STATE
Dec 21 14:53:47 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) Entering MASTER STATE
Dec 21 14:53:47 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) setting protocol VIPs.
Dec 21 14:53:47 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.0.40
Dec 21 14:53:47 monthplan avahi-daemon[1812]: Registering new address record for 10.10.0.40 on eth0.
Dec 21 14:53:52 monthplan Keepalived_vrrp: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 10.10.0.40
備份服務器已成功接管vip:10.10.0.40,同時訪問網頁也可以看出。
2)關閉任何服務器apache進程
日誌:
Dec 21 14:59:41 monthplan Keepalived_vrrp: VRRP_Script(chk_http_port) succeeded
apache進程自動啓動
3)掉主服務器,備份服務器成功接管vip
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.