天天看点

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也具有高可用性,这种情况下除非发生不可抗力,系统将永不停服。