Keepalived 实现LVS-DRnginx的同时高可用集群

Keepalived 实现LVS-DR和nginx的 同时 高可用集群_keepalived LVS-DR  n

第一步:安装LVSNginxkeepalived

                   Yum–y install ipvsadm keepalived

                   编译安装nginx

                   ./configure–prefix=    make&&makeinstall

 

第二步:设置ipvsadm规则

                   Ipvsadm–A –t 10.10.1.62:3380 –s rr

                   Ipvsadm–a –t 10.10.1.62:3380 –r 10.10.1.60 –g –w1

                   Ipvsadm–a –t 10.10.1.62:3380 –r 10.10.1.61 –g –w1

                   Ipvsadm–a –t 10.10.1.62:3380 –r 10.10.1.63 –g –w1

                   Ipvsadm–A –t 10.10.1.88:80 –s rr

                   Ipvsadm–a –t 10.10.1.88:80 –r 10.10.1.80 –g –w1

                   Ipvsadm–a –t 10.10.1.88:80 –r 10.10.1.81 –g –w1

                   保存规则:ipvsadm –S< /jiaoben/ipvsadm.txt

 

第三步:配置nginx的配置文件。

                  

#user  nobody;

worker_processes  4; #启动的进程数,建议cpu的核数

 

#error_log  logs/error.log;

#error_log logs/error.log  notice;

#error_log logs/error.log  info;

 

#pid        logs/nginx.pid;

 

 

events {

             use epoll;

             worker_connections  65535;  #进程的最大连接数

                          }

 

 

http {

              include       mime.types;

              default_type application/octet-stream;

 

          #log_format main  '$remote_addr - $remote_user[$time_local] "$request" '

          #'$status $body_bytes_sent"$http_referer" '

          # '"$httpuser_agent""$http_x_forwarded_for"';

 

         #access_log logs/access.log  main;

 

          server_tokens off;   #隐藏版本信息

          sendfile       on;

          #tcp_nopush    on;

 

          #keepalive_timeout  0;

          keepalive_timeout  65;

 

          #gzip on;

      upstream tomcat {

            ip_hash;

            server 10.10.1.60:8080 max_fails=2 fail_timeout=10s;

            server10.10.1.61:8080  max_fails=2fail_timeout=10s;

            server10.10.1.63:8080  max_fails=2fail_timeout=10s;

        

 

 

                                                        }

 

            server {

                listen       80;

                server_name  localhost;

 

                #charset koi8-r;

 

               #access_log logs/host.access.log  main;

 

 

               location / {

                    root /tms;  

                    index login.jsp

                    proxy_set_header X-Frworded-For$remote_addr;

                    proxy_set_header Host $host;

                    proxy_pass http://tomcat;

 

                        }

                                      }

第四步:keepalived的配置文件的修改

 

! Configuration File for keepalived

 

global_defs {

  notification_email {

    root@localhost

    

   

   }

  notification_email_from Alexandre.Cassen@firewall.loc

  smtp_server 127.0.0.1

  smtp_connect_timeout 30

  router_id LVS_DEVEL

}

 

vrrp_instance VI_1 {

   state BACKUP         #从机

   interface eth0

   virtual_router_id 51

   priority 150         #定义优先级,数字大优先极高

   advert_int 1

    nopreempt            #不抢占

   authentication {

       auth_type PASS   #简单的连接样式

       auth_pass 1111   #简单的密码

    }

   virtual_ipaddress {

       10.10.1.62/32 dev eth0   

       10.10.1.88/32 dev eth1

       

    }

}

 

virtual_server 10.10.1.62 3380 {

   delay_loop 6

   lb_algo rr                 #LVS调度算法

   lb_kind DR                 #LVS集群模式

   nat_mask 255.255.255.255

 #  persistence_timeout 50    #绘画保持时间/

   protocol TCP               #使用的协议

 

   real_server 10.10.1.60 3380 {

       weight 1               #默认为1,0为失效

       inhibit_on_failure     #健康检查失败,将weight设为0失效,而不在ipvs里删除

       TCP_CHECK {

           connect_port 3380      #连接端口

             bindto 10.10.1.60      #绑定Ip

 

          # url {               可以检测多个url

          #  path /mrtg/

          #  digest9b3a0c85a887a256d6939da88aabd8cd

          # }

           connect_timeout 3      #连接超时

           nb_get_retry 3         #重试次数

           delay_before_retry 3   #重连间隔时间

       }

    }

   real_server 10.10.1.61 3380 {

       weight 1

        inhibit_on_failure     #健康检查失败,将weight设为0失效,而不在ipvs里删除

       TCP_CHECK {

           connect_port 3380      #连接端口

             bindto 10.10.1.61      #绑定Ip

          # url {              可以检测多个url

          #  path /mrtg/

          #  digest9b3a0c85a887a256d6939da88aabd8cd

          # }

           connect_timeout 3      #连接超时

           nb_get_retry 3         #重试次数

           delay_before_retry 3   #延迟时间

       }

    }

   real_server 10.10.1.63 3380 {

       weight 1

        inhibit_on_failure     #健康检查失败,将weight设为0失效,而不在ipvs里删除

       TCP_CHECK {

           connect_port 3380      #连接端口

             bindto 10.10.1.63

          # url {              可以检测多个url

          #  path /mrtg/

          #  digest9b3a0c85a887a256d6939da88aabd8cd

          # }

           connect_timeout 3      #连接超时

           nb_get_retry 3         #重试次数

           delay_before_retry 3   #延迟时间

       }

    }

 

 

 

 

#=================nginxHA========啊万恶的分割线啊!!==================================

 

 

 

 

virtual_server 10.10.1.88 80 {

   delay_loop 6

  

   nat_mask 255.255.255.255

 #  persistence_timeout 50

   protocol TCP

 

   real_server 10.10.1.80 80 {

       weight 1

       inhibit_on_failure     #健康检查失败,将weight设为0失效,而不在ipvs里删除

       TCP_CHECK {                #tcp检测

              connect_port 80       #连接端口

          # url {              可以检测多个url

          #  path /mrtg/

          #  digest9b3a0c85a887a256d6939da88aabd8cd

          # }

           connect_timeout 3      #连接超时

            nb_get_retry 3         #重试次数

           delay_before_retry 3   #延迟时间

       }

    }

   real_server 10.10.1.81 80 {

       weight 1

       inhibit_on_failure     #健康检查失败,将weight设为0失效,而不在ipvs里删除

       TCP_CHECK {                #tcp检测

              connect_port 80       #连接端口

          # url {              可以检测多个url

          #  path /mrtg/

          #  digest9b3a0c85a887a256d6939da88aabd8cd

          # }

           connect_timeout 3      #连接超时

           nb_get_retry 3         #重试次数

            delay_before_retry 3   #延迟时间

       }

    }

}

 

 

注意:keepalived.conf的配置

    stateBACKUP  的状态均为从,

    priority100         #定义优先级,数字大优先极高,决定主从。       


唯一的不足时当nginx的宕掉是,keepalived是不会漂移的,需要增加检测脚本,当nginx挂掉时,强制keepalived stop。