高可用集群之keepalived+lvs实战-技术流ken

lvs在我之前的博客《 高负载集群实战之lvs负载均衡-技术流ken》中已经进行了详细的介绍和应用,在这里就不再赘述。这篇博文将把lvs与keepalived相结合使用,在实际工作中搭建高可用,高负载,高性能的服务器集群。

“Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。”--摘自360百科

2.keepalived的主要功能 1. healthcheck

检查后端节点是否正常工作

如果发现后端节点异常,就将该异常节点从调度规则中删除;

如果发现后端的异常节点恢复正常了,就将该节点重新加入到调度规则中;

2. failover

是对调度器的主节点做健康检测。

将备用节点升级为主节点

接管主节点上的资源(viplvs规则)

 

3.keepalived实现故障切换的原理

 

1.keepalived是基于vrrp写于实现的故障切换

 

2.正常情况下,主节点会每隔一段时间向备节点发送一个心跳信息,这个就是告诉备节点自己正常。

 

当主节点发生故障,那么备节点无法接收都心跳信息,就认定主节点故障,那么就会接收主节点的业务和资源(包括vip

 

当主节点又恢复的时候,那么备节点释放所接收到资源和业务

4.简单说说vrrp协议

 

1. VRRP(Virtual Router Redundancy Protocol),虚拟路由冗余协议,为了解决静态路由的单点故障问题

 

2. VRRP的工作机制是基于竞选机制选择一个路由来完成任务处理

 

3. VRRP协议是通过发送多播数据包实现竞选的(Multicat

 

4. 竞选出来主节点会一直发送广播包,backup节点一直监听这些广播包(处于监听状态)

 

5. 当备用节点无法接收到广播包的是时候,就会重新进行竞选,选出一个新的节点作为主节点

 

5.keepalived可以完成如下工作

 

1. 自动生成vipvip给用户提供服务)

 

2. 自动配置lvs规则

 

3. 可以实现各种服务的高可用

 

4. failover的时候,做vip漂移

6.keepalived的配置文件

 

第一段:global_defs,全局配置段 global_defs { notification_email { 237745635@qq.com } notification_email_from Alexandre.Cassen@firewall.loc smtp_server 192.168.200.1 smtp_connect_timeout 30 router_id id1 <<< 当前主机的ID值,这个值必须是唯一的[要确保标红的三处不同] } 第二段:vrrp_instance,实例配置段(虚拟服务段) 【该段是定义虚拟服务的vip等信息】 vrrp_instance VI_1 { <<< 指定实例的名称 state MASTER <<< 指定节点的状态,MASTER表示主,BACKUP表示备用节点 interface eth0 <<< 指定将VIP绑定在哪个网卡上 virtual_router_id 51 <<< 虚拟路由ID,用于标识哪些个节点是一组,同一组的主机的虚拟id需要相同 priority 100 <<< 指定该节点的优先级(主这节点的优先级大于备节点) advert_int 1 <<< 指定备节点在几秒之内没有接收到主节点的心跳信息,就接管其业务和资源 authentication { <<< 指定keepalived集群中各个主备节点做认证的方式 auth_type PASS auth_pass 1111 } virtual_ipaddress { <<< 指定用于提供服务的ip地址(也就是VIP) 10.220.5.233 } } 第三段:virtual_server,虚拟主机配置段 【该段主要是给lvs来用,用来定义后端RS节点】 virtual_server 10.220.5.222 80 { #指定实例对应的VIP delay_loop 6 # 对后端节点做健康检查的时间间隔 lb_algo rr # 指定负载均衡调度算法 lb_kind DR # 指定所使用的lvs模型 nat_mask 255.255.255.0 persistence_timeout 50 # 同一IP的请求50秒内被分配到同一台真实主机 protocol TCP # 用TCP协议对真实节点做健康检查 real_server 10.220.5.190 80 { # 指定一台真实服务器的IP和端口 weight 1 # 设置权重 TCP_CHECK { # 用建立tcp连接的方式做健康检测 connect_timeout 10 # 设置建立tcp连接的超时时间 delay_before_retry 3 # 超时后多久重试 nb_get_retry 3 # 重试次数 connect_port 80 # 健康检查使用的端口号 } } real_server 10.220.5.191 80 { weight 1 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wppdyj.html