负载均衡之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集群解决这个问题。

    原文作者:会飞的鱼aaa
    原文地址: https://www.cnblogs.com/casheww/p/16309916.html
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞