• 负载均衡之keepalived


    DR实验存在的隐患

    1. DR可能会挂,单点故障
    2. RS可能会挂

    解决方案:

    • 解决单点故障

      • 主备:准备多个DR备用机,做好配置,主机挂掉备用机顶上
      • 主主
    • 解决RS会挂的问题

      给RS发送请求,如果收到200 ok回复则说明RS正常

    keepalived

    keepalived就是实现了上述解决方法的工具,检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

    主要用途:

    • 高可用:监控主机,主动替换备用机
    • RS的健康检测

    只需要给主机DR和备用机装keepalived监控DR,并且向RS发送请求检测RS。

    keepalived的使用:

    1. 安装

      yum install keepalived ipvsadm -y
      
    2. 备份和修改keepalived配置文件

      DR配置文件:

      cp keepalive.conf keepalived.conf.bak
      cat /etc/keepalived.conf
      global_defs {
      
        notification_email {  #设置报警邮件地址,可多行每行一个。
        xxxxxxx@qq.com
         }
      
        notification_email_from keepalived@localhost  #设置邮件的发送地址
      
        smtp_server 127.0.0.1                         #设置SMTP server地址
      
        smtp_connect_timeout 30                       #设置SMTP 超时时间
      
        router_id LVS_DEVEL                           #运行keepalived机器的一个标识
      
      }
      
      vrrp_instance VI_1 {                      #定义一个vrrp实例,不同实例的实例编号不一样。
      
         state MASTER        #定义在keepalived的角色MASTER表示为主服务器,BACKUP为备服务器。
      
         interface eth0      #指定HA检测的网络接口
      
         virtual_router_id 50     #虚拟路由标示,同一个实例里的路由标示相同,且唯一。MASTER和BACKUP的路由标识一样,且唯一。
      
         priority 100        #定义此服务器在此虚拟路由器中的优先级,优先级大权限高
      
         advert_int 1        #检测时间间隔
      
         authentication {    #设置验证类型和密码,主从的密码必须相同,要不两者不通讯。
      
             auth_type PASS
      
             auth_pass 1111
      
         }
      
         virtual_ipaddress {     #设置虚拟IP地址,可以设置多个虚拟IP地址。
      
             192.168.233.100/24 dev ens33 label  ens33:3
      
         }
      
      }
      //配置DR主机lvs,代替使用ipvsadm配置lvs
      virtual_server 192.168.233.100 80 {
          delay_loop 6  
          lb_algo rr
          lb_kind DR //模式,NAT,DR,TUN
          nat_mask 255.255.255.0  //子网掩码
          persistence_timeout 0  //
          protocol TCP
      
          real_server 192.168.150.12 80 {//负载机配置
              weight 1
              HTTP_GET {//对后端机进行健康检查的配置
                  url {
                      path /
                      status_code 200
                  }
                  connect_timeout 3
                  nb_get_retry 3
                  delay_before_retry 3
              }   
      	}
          //配置RS
          real_server 192.168.233.129 80 {
              weight 1
              HTTP_GET {
                  url {
                      path /
                      status_code 200
                  }
                  connect_timeout 3
                  nb_get_retry 3
                  delay_before_retry 3
              }
          }
      

      备用DR配置:

      global_defs {
      
        notification_email {
        xxxxxx@qq.com
         }
      
        notification_email_from keepalive@localhost
      
        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 50
      
         advert_int 1
      
         authentication {
      
             auth_type PASS
      
             auth_pass 1111
      
         }
      
         virtual_ipaddress {
      
             192.168.233.100
      
         }
      
      }
      //配置DR主机lvs,代替使用ipvsadm配置lvs
      virtual_server 192.168.233.100 80 {
          delay_loop 6  
          lb_algo rr
          lb_kind DR //模式,NAT,DR,TUN
          nat_mask 255.255.255.0  //子网掩码
          persistence_timeout 0  //
          protocol TCP
      
          real_server 192.168.150.12 80 {//负载机配置
              weight 1
              HTTP_GET {//对后端机进行健康检查的配置
                  url {
                      path /
                      status_code 200
                  }
                  connect_timeout 3
                  nb_get_retry 3
                  delay_before_retry 3
              }   
      	}
          //配置RS
          real_server 192.168.233.129 80 {
              weight 1
              HTTP_GET {
                  url {
                      path /
                      status_code 200
                  }
                  connect_timeout 3
                  nb_get_retry 3
                  delay_before_retry 3
              }
          }
      
    3. 启动keepalived服务

      service keepalived start
      

    最后,如果keepalived进程挂掉呢?

    使用zookper集群解决这个问题。

  • 相关阅读:
    【c语言】自定义类型-结构体
    15 个面向深度学习爱好者的开放数据集
    【MybatisPlus】简介与使用
    Linux中目录的概述以及 查看 切换 创建和删除目录
    Shadertoy基础教学01、画圆(smoothstep()函数讲解)
    使用VBS编写xshell/SecureCRT自动化脚本
    Service Worker 简单学习
    儿童写作业用的护眼灯哪种好?双十一写作业护眼灯推荐
    OSS存储开放接口规范 和 错误响应
    LeetCode每日一练 —— 剑指Offer 56 数组中数字出现的次数
  • 原文地址:https://www.cnblogs.com/casheww/p/16309916.html