基本概念:
什么是Keepalived呢,keepalived观其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,那说到keepalived时不得不说的一个协议就是VRRP协议,可以说这个协议就是keepalived实现的基础。
VRRP( Virtual Router Redundancy Protocol )协议:
虚拟路由冗余协议(Virtual Router Redundancy Protocol,简称VRRP)是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议,Keepalived就是巧用VRRP协议来实现高可用性(HA)的。
1.用于实现路由器冗余的协议
2.解决静态路由单点故障问题
3.通过一种竞选(election)协议来实现虚拟路由器的功能
LVS提供负载均衡,keepalived提供健康检查,故障转移,提高系统的可用性! 采用这样的架构以后,很容易对现有系统进行扩展,只要在后端添加或者减少realserver,更改lvs的配置文件,就能实现无缝配置变更!
实验搭建:
server1:lvs调度服务器DS1:192.168.13.111
server2:后端服务器RS1:192.168.13.112
server3:后端服务器RS2:192.168.13.113
server4:lvs调度服务器DS2:192.168.13.114
VIP:192.168.13.100
1 . 在server1与server4上分别解压keepalived并编译安装:
tar zxf keepalived-2.0.6.tar.gz # 解压
yum install gcc openssl-devel -y # 解决依赖
cd keepalived-2.0.6
./configure --prefix=/usr/local/keepalived --with-init=systemd # 编译
make &&make install # 安装
装好之后会有这个keepalived目录,
其实不用两边都这么装,麻烦,一边装好之后直接scp传过去就好了。
2 . 配置启动配置文件 调度器(server1和server4)都进行相同操作:
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 /sbin/
3 . 配置keepalived:
编写主节点server1的配置文件
cd /etc/keepalived
vim keepalived.conf
global_defs {notification_email {root@localhost #节点宕机了将会接收到异常邮件的主机}notification_email_from keepalived@localohost #邮件发送人smtp_server 127.0.0.1 #发送的服务器smtp_connect_timeout 30 #指定连接超时时间router_id LVS_DEVELvrrp_skip_check_adv_addrvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER #主节点表示interface ens33 # 网卡名virtual_router_id 13priority 100 #权重advert_int 1 #检查的间隔1sauthentication {auth_type PASS #认证方式auth_pass 1111 #认证的密码}virtual_ipaddress {192.168.13.100}
}
virtual_server 192.168.13.100 80 {delay_loop 6 #连接失败六次之后,发送邮件lb_algo rr #lvs调度算法lb_kind DR #lvs该工作方式protocol TCP # 端口real_server 192.168.13.112 80 {TCP_CHECK {weight 1connect_port 80connect_timeout 3}}real_server 192.168.13.113 80 {TCP_CHECK {weight 1connect_port 80connect_timeout 3}}
}
编好之后
systemctl start keepalived
systemctl enable keepalived
再给server4 scp 过去
scp keepalived.conf root@192.168.13.114:/etc/keepalived/
在server4端只需要
state BACKUP
priority 50 ##修改这两个选项
改好之后
systemctl start keepalived
systemctl enable keepalived
3 . 真实服务器设置
1). 安装httpd 启动设置访问页面
注意:该处为了验证负载均衡的效果,后端真实服务器设置不同的访问内容,明显标示内容来自不同的后端服务器。
2). 添加VIP到各自的物理网卡中
ip addr add 192.168.13.100/24 dev ens33 # 临时添加ip到eth0网卡
3). 设置arptable策略,解决将用户所有针对VIP的请求发送到DS 而不是RS
yum install arptables -y # 安装管理工具
arptables -A INPUT -d 192.168.13.100 -j DROP
arptables -A OUTPUT -s 192.168.13.100 -j mangle --mangle-ip-s 192.168.13.112
在另一端RS修改记着ip
4 . 测试:
1). 设置完成真实服务器之后,在两个调度器上查看ipvsadm 全部自动生成负载均衡策略:
2). 使用客户端主机测试:
负载均衡正常
3 ). 关闭真实服务器172.25.13.140的http的服务。模拟该服务器故障,测试该真实服务器被踢除出列表,当服务正常的时候会自动添加到列表中
当打开服务时,恢复正常
4 ) . 目前负载均衡服务器工作在主服务器,主服务器上会添加vip,关闭主服务器的keepalived,模拟负载均衡主服务器异常,这时候会切换到由服务器提供负载均衡服务,并且vip会主动漂移到副服务器。
主服务器
负载均衡主服务器异常,将会由副服务器提供服务,vip会自动漂移到副服务器:
客户端测试服务正常: