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

发表评论

相关文章