keepalived + lvs(DR) 高可用负载均衡
2017-06-07 17:25
579 查看
问题:
我上一篇博客写了lvs DR模式的配置及工作原理,最后发现它没有健康检测,就是当一台RS挂掉后,它不会将挂掉的那台机器踢除,而是继续向那台机器发送请求.而keepalived刚好能解决这个问题.
原理:
与lvs原理一致,只是添加了keepalived进行健康检测实现故障排除LVS DR模式配置及原理:
LVS (DR)模式基本配置keepalived原理:
keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成环境:
操作系统: redhat EL 6.5机器及软件:
server1: 172.25.12.1 VS(虚拟主机) 主 ipvsadm keepalived
server4: 172.25.12.4 VS(虚拟主机) 备 ipvsadm keepalived
server2: 172.25.12.2 RS(真正主机) arptables
server3: 172.25.12.3 RS(真正主机) arptables
keepalived软件包下载:
1.2.24版本(本文所用的版本)
其他版本下载地址
配置:
VS配置:
解压安装keepalived (源码安装)#解压安装包 tar zxf keepalived-1.2.24.tar.gz cd keepalived-1.2.24 #解决依赖性 yum install gcc openssl-devel -y #源码编译 制定安装位置 ./configure --prefix=/usr/local/keepalived #安装 make make install
keepalived文件配置:
ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ ln -s /usr/local/keepalived/etc/keepalived /etc ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ chmod +x /etc/init.d/keepalived ln -s /usr/local/keepalives/sbin/keepalived /sbin/
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived global_defs { notification_email { root@localhost ##接受警报的 email 地址,可以添加多个 } notification_email_from keepalived@server1 ##设置邮箱的发送地址 smtp_server 127.0.0.1 ##设置 smtp server 地址 smtp_connect_timeout 30 ##设置连接smtp服务器超时时间 router_id LVS_DEVEL ##load balancer 的标识 ID,用于 email 警报 } vrrp_instance VI_1 { state MASTER ##备机改为 BACKUP,此状态是由 priority 的值来决定的,当前priority 的值小于备机的值,那么将会失去 MASTER 状态 interface eth0 #HA 监测网络接口 virtual_router_id 51 #主、备机的 virtual_router_id 必须相同,取值 0-255 priority 100 ##主机的优先级,备份机改为 50,主机优先级一定要大于备机 advert_int 1 #主备之间的通告间隔秒数 authentication { #主备切换时的验证 auth_type PASS #设置验证类型,主要有 PASS 和 AH 两种 auth_pass 1111 #设置验证密码,在一个 vrrp_instance 下,MASTER 与 BACKUP 必须使用相同的密码才能正常通信 } virtual_ipaddress { #设置虚拟 IP 地址,可以设置多个虚拟 IP 地址,每行一个 172.25.12.200/24 } } virtual_server 172.25.12.200 80 { #定义虚拟服务器 delay_loop 6 #每隔 6 秒查询 realserver 状态 lb_algo rr #lvs 调度算法,这里使用轮叫 lb_kind DR #LVS 是用 DR 模式 # persistence_timeout 50 protocol TCP #指定转发协议类型,有 tcp 和 udp 两种 real_server 172.25.12.2 80 { #配置服务节点 weight 1 #配置服务节点的权值,权值大小用数字表示,数字越大,权值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统资源 TCP_CHECK { #realserve 的状态检测设置部分,单位是秒 connect_timeout 3 #3 秒无响应超时 nb_get_retry 3 #重试次数 delay_before_retry 3 #重试间隔 } } real_server 172.25.12.3 80 { weight 1 TCP_CHECK { connect_timeout 3 nb_get_retry 3 delay_before_retry 3 } } }
注意:
VS只之间是有主备区分的 ,区分之处在于下面这两处
主机 state 是MASTER
备机 state 是BACKUP
主机 priority 值一定要比备机高
state MASTER priority 100
启动服务:
/etc/init.d/keepalived start
因为RS还没有进行配置,所以我们会收到来自keepalived的邮件,提示我们检测不到真正主机,不过不影响,只要keepalived能正常启动,就说明我们配置已经成功了.
安装ipvsadm 查看状态:
ipvsadm 的安装需要配置yum源
yum源配置:
请修改自己的baseurl 改为自己的镜像挂载点
[root@server1 ~]# cat /etc/yum.repos.d/rhel-source.repo [Server] name=Red Hat Enterprise Linux $releasever - $basearch - Source baseurl=http://172.25.12.250/rhel6.5/Server enabled=1 gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release [HighAvailability] name=HighAvailability baseurl=http://172.25.12.250/rhel6.5/HighAvailability gpgcheck=0 [LoadBalancer] name=LoadBalancer baseurl=http://172.25.12.250/rhel6.5/LoadBalancer gpgcheck=0 [ResilientStorage] name=ResilientStorage baseurl=http://172.25.12.250/rhel6.5/ResilientStorage gpgcheck=0 [ScalableFileSystem] name=ScalableFileSystem baseurl=http://172.25.12.250/rhel6.5/ScalableFileSyste 4000 m gpgcheck=0
安装ipvsadm:
yum install -y ipvsadm #查看集群状态 ipvsadm -l
RS配置(与lvs中RS配置一样):
server2:#添加vip,不然数据包不能到达osi模型高层 ip addr add 172.25.12.200/24 dev eth0 #安装arptables yum install arptables_jf -y #安装apache yum install -y httpd cd /var/www/html/ echo server1 > index.html /etc/init.d/httpd start #配置arp策略 #拒绝网络里对于vip的arp请求 arptables -A IN -d 172.25.12.200 -j DROP #将本机上从VIP出去的arp数据包改为从RIP出去 arptables -A OUT -s 172.25.12.200 -j mangle --mangle-ip-s 172.25.12.2
server3:
ip addr add 172.25.12.200/24 dev eth0 yum install arptables_jf cd /var/www/html/ vim index.html arptables -A IN -d 172.25.12.200 -j DROP arptables -A OUT -s 172.25.12.200 -j mangle --mangle-ip-s 172.25.12.3 /etc/init.d/httpd start
测试:
1.高可用测试:停止 master 上的 keepalived 服务,看 backup 是否接管。2. 负载均衡测试:
[kiosk@groot Desktop]$ curl 172.25.12.200 server3 [kiosk@groot Desktop]$ curl 172.25.12.200 server2 [kiosk@groot Desktop]$ curl 172.25.12.200 server3 [kiosk@groot Desktop]$ curl 172.25.12.200 server2 [kiosk@groot Desktop]$ curl 172.25.12.200 server3
3 故障切换测试:任意关闭 realserver 上的 httpd 服务,Keepalived 监控模块是否能及时发现,然后屏蔽故障节点,同时将服务转移到正常节点来执行。
[kiosk@groot Desktop]$ curl 172.25.12.200 server3 [kiosk@groot Desktop]$ curl 172.25.12.200 server3 [kiosk@groot Desktop]$ curl 172.25.12.200 server3 [kiosk@groot Desktop]$ curl 172.25.12.200 server3
相关文章推荐
- 高可用与负载均衡(7)之聊聊Lvs-DR+Keepalived的解决方案
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- keepalived-lvs-dr-主主模型实现高可用负载均衡
- LVS(DR)+keepalived实现高可用负载均衡
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- CentOS6.2下搭建LVS(DR)+Keepalived实现高性能高可用负载均衡
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- LVS+Keepalived+Nginx+Tomcat高可用负载均衡集群配置(DR模式,一个VIP,多个端口)
- VM虚拟机上 实现CentOS 6.X下部署LVS(DR)+keepalived实现高性能高可用负载均衡(转)
- LVS-DR+keepalived实现高可用负载均衡
- 双主模型高可用负载均衡集群的实现(keepalived+lvs-dr)
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡(转)
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- 高可用负载均衡集群Keepalived+lvs-DR模式的搭建
- VM虚拟机上 实现CentOS 6.X下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- RHEL 5.4下部署LVS(DR)+keepalived实现高性能高可用负载均衡
- 部署LVS(DR)+keepalived实现高性能高可用负载均衡
- lvs(DR)+keepalived做一个小的负载均衡+高可用