nginx+keepalived实现高可用

  (1)准备三台服务器nginx

    正常来讲,应该准备四台,两台安装ngnix+keeplived实现高可用以及负载均衡,两台作节点服务器,这里78充当一台节点服务器,172.31.113.77(nginx+keepalived),172.31.113.78(nginx+keepalived+tomcat),172.31.113.79(tomcat)。vim

  (2)安装nginx服务器tomcat

    77,78服务器安装ngnix以及配置负载均衡能够查看以前的博文。bash

  (3)77节点,安装keepalived服务器

    1.首先安装keepalived rpm包:popt 以及popt-devel。负载均衡

    2.下载keepalived安装包jsp

cd /usr/local

wget http://www.keepalived.org/software/keepalived-1.2.8.tar.gz

    3.解压并编译keepalived测试

tar zvxf /usr/local keepalived-1.2.8.tar.gz

cd /usr/local/keepalived-1.2.8

./configure --prefix=/usr/local/keepalived --sysconf=/etc

    执行编辑的时候会报以下Openssl错误:spa

configure: error:  
  !!! OpenSSL is not properly installed on your system. !!!  
  !!! Can not include OpenSSL headers files.            !!!  

    解决方案:http://kusix.iteye.com/blog/1226892rest

    4.编译并安装

make && make install

    5.启动keepalived

cp /usr/local/keepalived/sbin/keepalived  /bin/

chkconfig --add keepalived

#设置开机启动
chkconfig keepalived on

#启动keepalive服务
/etc/init.d/keepalived start

  (4)配置keepalived

cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf_bak

vim /etc/keepalived/keepalived.conf

    (1)配置MASTER节点

global_defs {
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}
vrrp_script Monitor_Nginx {
         script "/root/monitor_nginx.sh" #执行脚本路径
         interval 2
         weight 2
}
vrrp_instance VI_1 {
    state MASTER  #标识为MASTER节点,从节点标识BACKUP
    interface eth0
    virtual_router_id 51 #两个节点的ID须要一致
    priority 100  #主、备机取不一样的优先级,主机值较大,备份机值较小,值越大优先级越高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.31.113.110 #虚拟IP
    }
        track_script {
                Monitor_Nginx #执行脚本名字
        }
 }

    (2)编辑监控脚本monitor_nginx.sh,vim /root/monitor_nginx.sh,内容以下,并赋予执行权限:chmod  +x  /root/monitor_nginx.sh

#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
   # /usr/local/nginx/sbin/nginx
   # sleep 2
   # counter=$(ps -C nginx --no-heading|wc -l)
   # if [ "${counter}" = "0" ]; then
        /etc/init.d/keepalived stop
   # fi
fi

  到此,keepalived的安装以及配置结束,78备用节点重复上面的操做,只是把配置文件keepalived.conf中的state修改成BACKUP , priority比MASTER稍低便可。

  (5)分别启动keepalived,nginx,以及tomcat服务器。

service keepalived restart

   在主服务器即78节点,能够经过 ip a查看虚拟IP,显示以下:

    

  (6)测试nginx+keepalive实现高可用

    访问172.31.113.110/index.jsp,首先将77服务器的nginx进程杀掉,查看77的keepalived进行也被中止掉了(由于上面咱们的脚本当nginx为零的时候,中止keepalived,只有中止keepalived,78备用服务器才能获得虚拟IP),这时候查看78的虚拟IP也为172.31.113.110,继续对外提供服务。

   总结:这种方案只能实现当主节点的nginx进程结束了,主节点的脚本monitor_nginx.sh执行后,中止keepalived进程,备用节点才能获得虚拟IP,进而对外继续提供服务。后面测试了一下,直接关闭主节点,备用节点没法获得虚拟IP,没法对外服务。因此当主节点直接宕机的话,这种方案就不可行了,难道这种方案就是高可用?百度搜了很久,都是这样实现的。

相关文章
相关标签/搜索