keepalive概述与lvs-dr

keepalive概述与lvs-dr

keepalive服务的重要功能

管理lvs负载均衡器的软件

可以通过读取自身的配置文件,实现通过更底层的接口直接管理lvs配置以及服务的启动 停止功能,这会使lvs应用更加简便

支持故障自动切换(failover)

两台主机同时安装好keepalive并且启动服务

当启动的时候master主机获得所有资源并且对用户提供服务,backup主机作为master主机的热备份,当master主机出现故障的时候,backup主机将自动接管master主机所有工作,包括接管VIP资源及相应的资源服务

当master主机修复故障之后,会自动接管回他原来处理的工作,backup主机则同时释放master主机失效时接管的工作,此时两台主机将恢复到最初启动时各自的原始工作状态

抢占模式:master主机从故障恢复后,会将VIP从backup节点中抢占过来

非抢占模式:master主机从故障恢复后,不抢占backup主机,backup主机升级为master主机

实现lvs集中节点的健康检查(health checking)

keepalived.conf文件配置lvs的节点ip和相关参数来实现对lvs直接管理

如果几个节点服务器同时发生故障,无法提供服务,keepalive会自动将失效的节点服务器从lvs正常转发的列中清除,并将请求调度到别的正常节点中,从而保证最终用户的访问不受影响,当故障的节点服务器修复以后,keepalive又会自动把他们加入到正常转发队列中,对外面客户提供服务

实现lvs负载调度器 节点服务器的高可用性

企业集群需要满足三个特点:负载均衡 健康检查 故障切换 lvs+keepalive

keepalive高可用故障切换转移的原理

keepalive 高可用服务集群之间的故障切换转移,是通过vrrp(虚拟路由器冗余协议)来实现的

VRRP通信原理

在keepalive服务正常工作时,master节点会不断向backup节点发送(多播的方式)心跳信息,用意是告诉backup节点自己还在工作,当master节点发生故障时就无法发送心跳消息,backup节点就会无法检测到来自master节点的心跳,于是调用了自身的接管程序,接管主节点的ip资源和服务,当master节点回复时,backup节点又会释放master节点故障时自身接管的ip资源服务,恢复到原来的备用角色

keepalive的体系主要模块和作用

core:keepalive的核心,负责主进程启动,维护全局配置文件,加载和解析

vrrp:来实现vrrp协议

check:负责健康检查,常见的检查方式:端口 URL

keepalive服务的工作原理

keepalive脑裂及解决方法

脑裂:在一个高可用系统中,当联系着的两个节点断开联系时,本来为一个整体的系统分裂为两个独立的几点,这个时候我们两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏

脑裂是如何产生的:在某一个故障切换之后,原本的master并没有真正的宕机,VIP还在master上,这个时候backup主机则已经开始抢占master,并也在本地配置了VIP

解决预防:

网络层面再加一条链路

本地通过脚本解决,写一个while循环,每一轮ping网关,累计连续失败的次数,当连续失败的次数到达一定的次数则运行systemctl stop keepalive

通过第三方监控软件:监控服务 监控网络流量

LVS+Keepalived 高可用群集

1.配置主副负载调度器

关闭防火墙与安全机制

[root@lvs1 ~]# systemctl stop firewalld.service
[root@lvs1 ~]# setenforce 0

安装相关软件并配置

[root@lvs1 ~]# yum -y install ipvsadm keepalived
[root@lvs1 ~]# modprobe ip_vs
[root@lvs1 ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

配置keepalive

[root@lvs1 ~]# cd /etc/keepalived/
[root@lvs1 keepalived]# cp keepalived.conf keepalived.conf.bak
[root@lvs1 keepalived]# vim keepalived.conf
 10    smtp_server 127.0.0.1    修改邮件服务指向本地
 12    router_id LVS_01
 14 #   vrrp_strict
 21     interface ens33
 22     virtual_router_id 10
 23     priority 100
 24     advert_int 1
 25     authentication {
 26         auth_type PASS
 27         auth_pass abc123
 28     }   
 29     virtual_ipaddress {
 30         192.168.116.180
 31     }
 32 }
 33 
 34 virtual_server 192.168.116.180 80 {
 35     delay_loop 6
 36     lb_algo rr
 37     lb_kind DR
 38     persistence_timeout 50
 39     protocol TCP
 40 
 41     real_server 192.168.116.14 80 {
 42         weight 1
 43     TCP_CHECK {
 44                         connect_port 80
 45                         connect_timeout 3
 46                         nb_get_retry 3
 47                         delay_before_retry 3
 48                 }
 49         }
 50 
 51         real_server 192.168.116.12 80 {
 52         weight 1
 53         TCP_CHECK {
 54                         connect_port 80
 55                         connect_timeout 3
 56                         nb_get_retry 3
 57                         delay_before_retry 3
 58                 }
 59         }
 60 }

配置虚拟网卡

[root@lvs1 keepalived]# vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.116.180
NETMASK=255.255.255.255

[root@lvs1 keepalived]# systemctl restart network
[root@lvs1 keepalived]# ifup  ens33:0 
[root@lvs1 keepalived]# systemctl start keepalived
[root@lvs1 keepalived]# ip addr

启动ipvsadm并配置

[root@lvs1 keepalived]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@lvs1 keepalived]# systemctl start ipvsadm
[root@lvs1 keepalived]# ipvsadm -C
[root@lvs1 keepalived]# ipvsadm -A -t 192.168.116.180:80 -s rr
[root@lvs1 keepalived]# ipvsadm -a -t 192.168.116.180:80 -r 192.168.116.14:80 -g
[root@lvs1 keepalived]# ipvsadm -a -t 192.168.116.180:80 -r 192.168.116.12:80 -g

调整 proc 响应参数,关闭Linux 内核的重定向参数响应

[root@lvs1 keepalived]# vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

2.配置节点服务器

关闭防火墙与安全机制

[root@web1 ~]# systemctl stop firewalld
[root@web1 ~]# setenforce 0

安装httpd并设置

[root@web1 ~]# yum -y install httpd
[root@web1 html]# systemctl start httpd
[root@web1 html]# echo 'this is kgc web!' > /var/www/html/index.html
[root@web1 /]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.116.180
NETMASK=255.255.255.255

[root@web1 /]# systemctl restart network
[root@web1 /]# ifup lo:0
[root@web1 /]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.116.180  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)
[root@web1 /]# vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

[root@web1 /]# sysctl -p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值