天天看點

java常用服務叢集搭建【9】keepalived+nginx的高可用性1、 環境限制2、 前提限制3、操作

我們已經做過tomcat叢集以及nginx負載均衡,但前提是nginx正常運作。如果nginx當機,則系統就沒有統一入口。本文将闡述如何保證nginx的高可用性,這時候就需要keepalived服務。

1、 環境限制

  • CentOS 6.4 64位 2台,作者ip各為192.168.100.134、192.168.100.136
  • nginx-1.5.0
  • keepalived

2、 前提限制

  • 完成nginx下的tomcat叢集部署 https://www.jianshu.com/nb/34743981

    注意:現在我們研究的是nginx的高可用性,可以不用安裝tomcat即配置tomcat高可用性

3、操作

3.1 通過yum安裝keepalived

yum -y install keepalived
           

3.2 修改/etc/keepalived/keepalived.conf

# 加入check_nginx.sh的配置節點
vrrp_script chk_nginx {
    script "/etc/keepalived/check_nginx.sh"
    interval 2
    weight -20
}
#修改vrrp_instance VI_1節點中的 virtual_ipaddress
    virtual_ipaddress {
        192.168.100.135
        192.168.100.137
    }
           

3.3 新增配置/etc/keepalived/check_nginx.sh

#!/bin/bash
COUNT=$(ps -C nginx --no-header |wc -l)
echo $COUNT
#判斷Nginx 是否都挂掉了
if [ $COUNT -eq 0 ]
then
        #如果挂掉了,就啟動nginx
        /usr/local/nginx/sbin/nginx start
        echo "重新開機nginx"
        #等5秒鐘後,再次檢視是否 啟動成功
        sleep 5
        #如果nginx沒有啟動起來,就直接幹掉keepalived
        COUNT=$(ps -C nginx --no-header |wc -l)
        if [ $COUNT -eq 0 ]
        then
                echo "幹掉keepalived"
                #如果killall指令不能使用,就需要安裝psmisc工具了
                #yum install -y psmisc
                killall keepalived
        fi
fi
           

3.4 分别啟動keepalived

/etc/init.d/keepalived start
           

至此,我們已經完成了nginx的高可用性,此時,我們通路http://192.168.100.135/或者http://192.168.100.137/都可以被配置設定請求到nginx。如果有一台機子的keepalived當機,135/137也能通路;如果有一台機子的nginx當機,135/137也能通路;如果有一台機子的tomcat當機,135/137也能通路。nginx保證了tomcat的高可用性; keepalived保證了nginx的高可用性; 多個nginx對應多個keepalved,keepalived也具有高可用性,這種情況下除非發生不可抗力,系統将永不停服。