keepalived介绍 IETF(Internet Engineering Task Force)推出了VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议,来解决局域网主机访问外部网络的可靠性问题。VRRP可以通过在一个路由器组(一个VRRP组)之间共享一个虚拟IP(VIP),此时仅需要客户端以VIP作为其默认网关即可。可以认为VRRP是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个MASTER和多个BACKUP,MASTER上有一个对外提供服务的VIP(该路由器所在局域网内其他机器的默认路由为该VIP),MASTER会发组播,当BACKUP收不到vrrp包时就认为MASTER宕掉了,这时就需要根据VRRP的优先级来选举一个BACKUP当MASTER,及时将业务切换到其它设备,从而保持通讯的连续性和可靠性,消除了静态路由配置的单点故障。VRRP协议对应的是RFC3768,该协议仅适用于IPv4。
keepalived工作原理-vrrp 1、一个VRRP路由器有唯一的标识: VRID,范围为0-255该路由器对外表现为唯一的虚拟MAC地址,地址的格式为00-00-5E- 00-01-[VRID]主控路由器负责对ARP请求用该MAC地址做应答这样,无论如何切换,保证给终端设备的是唯一一致的IP和MAC地址,减少了切换对终端设备的影响。 2、VRRP控制报文只有一种: VRRP通告(advertisement)它使用IP多播数据包进行封装,组地址为224.0.0.18,发布范围只限于同一局域网内。这保证了VRID在不同网络中可以重复使用。为了减少网络带宽消耗,只有主控路由器才可以周期性的发送VRRP通告报文,备份路由器在连续三个通告间隔内收不到VRRP或收到优先级为0的通告则启动新的一轮VRRP选举。 3、在VRRP路由器组中按优先级选举主控路由器: VRRP协议中优先级范围是0-255。若VRRP路由器的IP地址和虚拟路由器的接口IP地址相同,则称该虚拟路由器作VRRP组中的IP地址所有者。IP地址所有者自动具有最高优先级:255。优先级0一般在IP地址所有者主动放弃主控者角色时使用。可配置的优先级范围为1-254,优先级的配置原则可以依据链路的速度、成本、路由器性能和可靠性以及其它管理策略来设定。在主控路由器的选举中,高优先级的虚拟路由器获胜,因此,如果在VRRP组中有IP地址所有者,则它总是作为主控路由的角色出现。对于相同优先级的候选路由器,则按照IP地址大小顺序选举。VRRP还提供了优先级抢占策略,如果配置了该策略,高优先级的备份路由器便会剥夺当前低优先级的主控路由器而成为新的主控路由器。 4、为了保证VRRP协议的安全性,提供了两种安全认证措施: 明文认证和IP头认证明文认证方式要求:在加入一个VRRP路由器组时,必须同时提供相同的VRID和明文密码适合于避免在局域网内的配置错误,但不能防止通过网络监听方式获得密码IP头认证的方式提供了更高的安全性,能够防止报文重放和修改等攻击
VRRP的优势:
负载共享:允许来自LAN客户端的流量由多个路由器设备所共享;多VRRP组:在一个路由器物理接口上可配置多达255个VRRP组;抢占:在master故障时允许优先级更高的backup成为master;通告协议:使用IANA所指定的组播地址224.0.0.18进行VRRP通告; VRRP追踪:基于接口状态来改变其VRRP优先级来确定最佳的VRRP路由器成为master;冗余:可以使用多个路由器设备作为LAN客户端的默认网关,大大降低了默认网关成为单点故障的可能性;多IP地址:基于接口别名在同一个物理接口上配置多个IP地址,从而支持在同一个物理接口上接入多个子网;实验 环境:RHEL6 系列 selinux and iptables disabled 实验主机: LVS ‐ ACTIVE: 172.25.15.4 LVS ‐ BACKUP: 172.25.15.5 LVS ‐ VIP: 172.25.15.100 Realsever: 172.25.15.6 172.25.15.7 + vip
主机备机的软件安装与配置:
yum install ipvsadm kernel-devel openssl-devel popt-devel libnl-devel gcc make -y
tar zxf keepalived-1.2.5.tar.gz cd keepalived-1.2.5 ./configure –prefix=/usr/local/keepalived make make install mkir /etc/keepalived ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ ln -s /usr/local/keepalived/etc/keepalived /etc/ ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived
vim /etc/keepalived/keepalived.conf
real_server: 链接:lvs-dr配置 安装apache,写入不同的测试html,并开启服务 yum install arptables_jf -y arptables -A IN -d 172.25.15.100 -j DROP arptables -A OUT -s 172.25.15.100 -j mangle –mangle-ip-s 172.25.15.7 /etc/init.d/arptables_jf save
测试: ip addr show #查看是否有vip ipvsadmIP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 172.25.15.100:http rr -> 172.25.15.6:http Route 1 0 0 -> 172.25.15.7:http Route 1 0 0 1. 高可用测试:停止 master 上的 keepalived 服务,看 backup 是否接管。 2. 负载均衡测试:访问 vip`,看到页面在两个 realserver 上切换表示成功! 你也可以通过 ipvsadm -Lnc 查看详细连接情况! 3. 故障切换测试:任意关闭 realserver 上的 httpd 服务,Keepalived 监控模块是否能及时发现, 然后屏蔽故障节点,同时将服务转移到正常节点来执行。
添加ftp服务 vim /etc/keepalived/keepalived.conf
virtual_server 172.25.15.100 21 { delay_loop 6 lb_algo rr lb_kind DR persistence_timeout 10 protocol TCP real_server 172.25.15.6 21 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } real_server 172.25.15.7 21 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }