3422e 发表于 2015-11-9 09:21:50

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

Keepalived 实现LVS-DR和nginx的同时高可用集群
第一步:安装LVS和Nginx,keepalived
                   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的配置文件。

#usernobody;worker_processes4; #启动的进程数,建议cpu的核数
#error_loglogs/error.log;#error_log logs/error.lognotice;#error_log logs/error.loginfo;
#pid      logs/nginx.pid;

events {             use epoll;
             worker_connections65535;#进程的最大连接数
                        }


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.logmain;

          server_tokens off;   #隐藏版本信息
          sendfile       on;
          #tcp_nopush    on;

          #keepalive_timeout0;
          keepalive_timeout65;

          #gzip on;
      upstream tomcat {
            ip_hash;
            server 10.10.1.60:8080 max_fails=2 fail_timeout=10s;
            server10.10.1.61:8080max_fails=2fail_timeout=10s;
            server10.10.1.63:8080max_fails=2fail_timeout=10s;



                                                      }

            server {
                listen       80;
                server_namelocalhost;

                #charset koi8-r;

               #access_log logs/host.access.logmain;


               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   #延迟时间
       }
    }




#=================nginx的HA========啊万恶的分割线啊!!==================================




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。



页: [1]
查看完整版本: Keepalived 实现LVS-DR和nginx的 同时 高可用集群