zoukankan      html  css  js  c++  java
  • nginx+keepalive实现高可用负载均衡详解

     nginx+keepalive实现高可用负载均衡详解

    一、什么是keepalived?

             Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP (Virtual Router Redundancy Protocol ,虚拟路由器冗余协议)功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件

    二、如何实现故障转移?

            Keepalived高可用服务对之间的故障切换转移,是通过 VRRP 来实现的。在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

    实验环境配置如下:

            192.168.1.110:nginx + keepalived   master 主

      192.168.1.111:nginx + keepalived   backup 从

      192.168.1.111:tomcat_8080

      192.168.1.111:tomcat_8081

      虚拟ip(VIP):192.168.1.200,对外提供服务的ip,也可称作浮动ip,各个组件之间的关系图如下:

    三、安装及配置

    1. 下载地址:https://pan.baidu.com/s/1G7sLL-YkZGSMu8G76yz1Rw 密码:adbw。

    2.  keepalived安装步骤:192.168.1.110:nginx + keepalived   master节点:

          2.1 ./configure --prefix=/data/program/keepalived --sysconf=/etc

                ##因为keepalive启动时候会默认读取/etc/keepalived/keepalived.conf

           2.2. make && make install

    3. 修改/etc/keepalived/keepalived.conf配置文件信息

    1.  
      global_defs {             #全局配置
    2.  
       
    3.  
          notification_email {
    4.  
       
    5.  
              james@qq.com  #设置报警邮件地址,可以设置多个,每行一个。需要开启sendmail服务。
    6.  
       
    7.  
          }
    8.  
       
    9.  
          notification_email_from sns-lvs@gmail.com
    10.  
       
    11.  
          smtp_server smtp.hysec.com   #设置SMTP Server地址
    12.  
       
    13.  
          smtp_connection_timeout 30   #设置SMTP Server的超时时间
    14.  
       
    15.  
          router_id nginx_master       #表示运行Keepalived服务器的一个标识,唯一的
    16.  
       
    17.  
      }
    18.  
       
    19.  
      vrrp_script chk_http_port {
    20.  
       
    21.  
          script "/usr/local/src/check_nginx_pid.sh" #心跳执行的脚本
    22.  
       
    23.  
          interval 2                          #(检测脚本执行的间隔,单位是秒)
    24.  
       
    25.  
          weight 2
    26.  
       
    27.  
      }
    28.  
       
    29.  
      vrrp_instance VI_1 {        #vrrp 实例定义部分
    30.  
       
    31.  
          state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备
    32.  
       
    33.  
          interface ens33         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
    34.  
       
    35.  
          virtual_router_id 66    # 虚拟路由编号,主从要一直
    36.  
       
    37.  
          priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    38.  
       
    39.  
          advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    40.  
       
    41.  
          authentication {
    42.  
       
    43.  
              auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
    44.  
       
    45.  
              auth_pass 1111
    46.  
       
    47.  
          }
    48.  
       
    49.  
          track_script {
    50.  
       
    51.  
              chk_http_port            #(调用检测脚本)
    52.  
       
    53.  
          }
    54.  
       
    55.  
          virtual_ipaddress {
    56.  
       
    57.  
              192.168.1.200            # 定义虚拟ip(VIP),可多设,每行一个
    58.  
       
    59.  
          }
    60.  
       
    61.  
      }

    以上主节点的配置, 从节点backup配置和主节点一样,只是state要改成backup,  priority 值要比master小点即可

    四、启动keepalived

               /data/program/keepalived/sbin/keepalived

     启动顺序:

    1. 启动192.168.1.111服务器上的tomcat8080和tomcat8081

    2. 启动Master 192.168.1.110的Keepalived节点,sh脚本也会被执行并自动启动Nginx

    3.   启动Backup 192.168.1.111的Keepalived节点,sh脚本也会被执行并自动启动Nginx

    注:不需要手动启动Nginx

    4,查看keepalived日志: tail -f  /var/log/messages

    五、KEEPLIVED主从故障测试

        1.  两组Keepalied+Nginx应用都启动成功后,使用VIP以负载均衡方式访问两个Tomcat

        2.   停止192.168.1.110主节点的Nginx应用,观察Nginx状态,并访问Tomcat;

        3.    停止192.168.1.110主节点的Keepalived应用,观察日志/var/log/messages,并访问tomcat

        4.   观察1.111从节点的日志,角色变更情况。

  • 相关阅读:
    HDU4366 Successor 线段树+预处理
    POJ2823 Sliding Window 单调队列
    HDU寻找最大值 递推求连续区间
    UVA846 Steps 二分查找
    HDU3415 Max Sum of MaxKsubsequence 单调队列
    HDU时间挑战 树状数组
    UVA10168 Summation of Four Primes 哥德巴赫猜想
    UESTC我要长高 DP优化
    HDUChess 递推
    HDU4362 Dragon Ball DP+优化
  • 原文地址:https://www.cnblogs.com/wangsongbai/p/13444727.html
Copyright © 2011-2022 走看看