apache+tomcat+keepalived jsp網站高可用(主備切換)

 1、 測試環境

服務器:
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
 
 
 
 
 
 
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章