2

负载均衡之keepalived - 会飞的鱼aaa

 1 year ago
source link: https://www.cnblogs.com/casheww/p/16309916.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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 {  #设置报警邮件地址,可多行每行一个。
      [email protected]
       }
    
      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 {
      [email protected]
       }
    
      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集群解决这个问题。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK