keepalive

keepalive的高可用集群:

代理服务器和调度器都是单点模式,keepalive就是用来实现调度器的高可用集群。

原理

keepalive的工作原理:
keepalive是专门为了lvs集群开发出来的,但是适用场景不仅仅局限于lvs。
而且keepalive为后台的真实服务器做了一个健康检查,当服务不可用时,会自动的移除ipvs的转发策略,服务恢复时,会自动重新把策略加入到ipvs。
基于vrrp协议实现的调度器的高可用方案
vrrp:虚拟路由的冗余协议。
keepalive可以实现:
1、主备切换,根据优先级实现,当主故障时,可以自动切换到备,主恢复之后,如果主的优先级比备高,还是会自动的切换到主
2、故障检测和恢复功能
3、主备之间通过组播地址:224.0.0.18,互相发送健康检查的报文,确定主和备之间的通信(确定双方是否工作正常)
4、通过配置vip来实现集群的入口,vrrp是一个冗余协议,主在工作时,备完全不参与集群的工作,只是监听主的状态

keepalive配置过程
ubuntu-1 :主调度器
ubuntu-2:备调度器
vip:192.168.233.188
server-ubuntu-1:客户端
server-ubuntu-2:真实服务器1(双网卡配置)
server-ubuntu-3:真实服务器2(双网卡配置)

keepalived.conf配置文件:
global_defs:整个vrrp的全局配置
vrrp_instance VI_1: 指定网卡设备和vip地址的模块,以及确定vrrp中主备的关系
virtual_server:指定转发的策略,以及lvs的工作模式和负载均衡的算法
check:负责健康检查,只要是检查服务的端口。(监控服务状态一般都是监听端口)
script:文本模式,也可以支持脚本形式的监控
主调度器
apt -y install ipvsadm keepalived
cp /usr/share/doc/keepalived/samples/keepalived.conf.sample  /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
	全局配置
	第8行
	smtp_server 127.0.0.1
	第10行
	router_id LVS_01
	vrrp_iptables
	#配置了之后keepalive重启之后不会添加iptables策略
	网卡模块
	第15行添加
	satae MASTER
	interface ens33
	第21行虚拟IP
	192.168.42.100
	转发模块
	real_server 192.168.233.100 80 {
    weight 1
    TCP_CHECK {
        connect_port 80
        connect_timeout 3
        retry 3
        delay_before_retry 3
    	}
	}
	real_server 192.168.233.100 80 {
    weight 1
    TCP_CHECK {
        connect_port 80
        connect_timeout 3
        retry 3
        delay_before_retry 3
    	}
	}
systemctl restart keepalived
vim /etc/sysctl.conf

net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens37.send_redirects = 0

sysctl -p


备调度器
apt -y install ipvsadm keepalived
cp /usr/share/doc/keepalived/samples/keepalived.conf.sample  /etc/keepalived/keepalived.conf
vim /etc/keepalived/keepalived.conf
	第8行
	smtp_server 127.0.0.1
	第10行
	router_id LVS_02
	vrrp_iptables
	#配置了之后keepalive重启之后不会添加iptables策略
	网卡模块
	第15行添加
	satae BACKUP
	interface ens33
	第21行虚拟IP
	192.168.42.100
	转发模块
	real_server 192.168.233.100 80 {
    weight 1
    TCP_CHECK {
        connect_port 80
        connect_timeout 3
        retry 3
        delay_before_retry 3
    	}
	}
	real_server 192.168.233.100 80 {
    weight 1
    TCP_CHECK {
        connect_port 80
        connect_timeout 3
        retry 3
        delay_before_retry 3
    	}
	}
systemctl restart keepalived
vim /etc/sysctl.conf
	
:

sysctl -p


server-ubuntu-2和server-ubuntu-3
vim /etc/netplan/01-network-manager-all.yaml
	ens37:
	  dhcp4: no
	  addresses: [192.168.233.188/24]
netplan apply
vim /etc/sysctl.conf

net.ipv4.conf.ens37.arp_ignore = 1
net.ipv4.conf.ens37.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2

sysctl -p
route add -host 192.168.233.188 dev ens38

keepalived配置文件解析

! Configuration File for keepalived 
2 
3 global_defs { 
4 notification_email { 
5 acassen 
6 } 
7 notification_email_from Alexandre.Cassen@firewall.loc 
8 smtp_server 127.0.0.1
#本地邮件服务,可以删除不要
9 smtp_connect_timeout 30
#本地邮件服务,可以删除不要
10 router_id LVS_01
#确定主备服务器的id号,必须不同
11 vrrp_iptables
配置了之后keepalived重启之后不会添加iptables的策略。
12 } 
13 
14 vrrp_instance VI_1 { 
15 state MASTER
确定服务器的身份 主
16 interface ens33
指定网卡设备
17 virtual_router_id 50
虚拟路由的id,主备保持一致
18 priority 100
优先级。谁数字大就是主
19 advert_int 1
主备之间检查的心跳率
20 virtual_ipaddress { 
21 192.168.233.100
集群的vip地址
22 } 
23 } 
24 
25 virtual_server 192.168.233.100 80 {
26 delay_loop 6
健康检查的间隔时间
27 lb_algo rr
负载均衡的算法
28 lb_kind DR
lvs的模式
29 persistence_timeout 50
连接保持的时间
30 protocol TCP
服务采用的协议
31 #指定的后台真实的服务器 
32 real_server 192.168.233.61 80 { 
33 weight 1
负载算法的圈子
34 TCP_CHECK {
tcp的健康
35 connect_port 80
检查的目标端口是80
36 connect_timeout 3
连接检查的超时时间3秒
37 retry 3
重试的次数
38 delay_before_retry 3
重试的间隔时间
39 } 
40 } 
41 } 

keepalived.conf配置文件配置完成后,检查步骤:

1、检查配置的转发策略是否生效

2、检查主的vip是否生成

3、检查备服务器是否有vip地址

4、模拟故障切换,主的vip能否飘到备服务器

5、主恢复之后vip是否能够回到主服务器

keepalived和nginx的高可用
keepalived可以不依赖lvs的环境实现故障切换和高可用。

脑裂

脑裂:在HA系统,只要是通过vip这个机制实现,都有可能会出现问题。

vip地址同时出现在了主和备上

解决脑裂的办法:

1、防火墙屏蔽了主备之间的224.0.0.18的报文,导致互相都收不到,就认为对方都已经挂起了,都认为自己是主

2、网卡出现故障(硬件故障),配置出问题:ip地址冲突

3、心跳线:网线之间连接故障,断开,老化

4、keepalived的配置文件有问题,配置的相关项出现问题(80%)

软件成面:

1、抓包进行定位,查看组播的报文是否正常

2、配置文件进行排查(网卡配置,应用配置)

硬件成面:

1、更换心跳线(网线)进行测试

2、网卡硬件的问题

3、内存和cpu,磁盘空间不足,也会出现脑裂

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值