keepalived

keepalived

作用: 防止单点故障 实现集群高可用

lvs :负载均衡
haproxy: 可以对后端进行检查 get /index.html 会剔除掉不健康的主机
keepalived:起初就是为了搭配lvs使用的,因为lvs本身对后端没有健康检查的作用,如果服务端有一个主机宕机,lvs还会将请求交给该主机,为了避免这种情况的发生,所有使用keepalived搭配lvs使用,让其能够对后端有健康检查的功能,从而剔除不正常的主机

之后为了解决更多的问题。对keepalived进行了优化,让其实现vrrp协议(虚拟路由冗余协议)从而能够解决单点故障,保证集群的一个高可用状态
高可用:防止集群的一个高可用状态
高并发:能够供多个客户端访问
单点故障:集群中一个节点坏掉

原理:
keepalived如何实现对故障的转移,解决单点故障,是因为keepalived可以设置虚拟ip,这个虚拟ip是实际工作的ip,当keepalived配置了虚拟ip,这个虚拟ip就会有一定的特定,会变成漂移ip,这个ip漂移到那个主机上,就是由那个主机正在工作,keepalived分为主和备(master和backup),主会定期给备份发送消息(消息时间为1s)从而证明自己在工作,如果当备份接收不到主的消息,则会认为主宕机,之后这个vip将会漂移到备份上,从而由备份进行工作,保证集群的高可用
当主恢复以后,漂移ip又会漂移到主上面,继续为整个集群工作

环境:

client192.168.10.30
lvs+keepalived主ip 192.168.10.2 漂移ip 192.168.10.100
lvs+keepalived备ip 192.168.10.3
web1192.168.10.10 lo:1 192.168.10.100
web2192.168.10.20 lo:1 192.168.10.100

准备:
web1:

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo 11111 > /var/www/html/index.html
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# curl 192.168.10.10
11111

web2:

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# echo 22222 > /var/www/html/index.html
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]# curl 192.168.10.20
22222

lvs+keepalived:(两台上操作一样)

[root@localhost ~]# yum -y install popt-devel kernel-devel openssl-devel
[root@localhost ~]# tar -zxf keepalived-1.2.13.tar.gz 
[root@localhost ~]# cd keepalived-1.2.13/
[root@localhost keepalived-1.2.13]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernel && make && make install
[root@localhost keepalived-1.2.13]# echo $?   #检测安装是否成功
0

实验:lvsDR模式

web:(两台操作一样)

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vim ifcfg-lo:0
1 DEVICE=lo:0
2 IPADDR=192.168.10.100
3 NETMASK=255.255.255.255
9 NAME=one 
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# vim /etc/sysctl.conf 
[root@localhost network-scripts]# sysctl -p
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_announce = 2
[root@localhost network-scripts]# route add -host 192.168.10.100 dev lo:0

lvs+keepalived:(两台上操作一样)

[root@localhost ~]# yum -y install ipvsadm
[root@localhost ~]# cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.bak
[root@localhost ~]# modprobe ip_vs

lvs+keepalived主:

[root@localhost ~]# vim /etc/keepalived/keepalived.conf
17     interface ens33
25     virtual_ipaddress {   #漂移ip
 26         192.168.10.100
 27     }
 #下面这块只是在基于lvs时才做
 30 virtual_server 192.168.10.100 80 {
 31     delay_loop 6
 32     lb_algo rr 
 33     lb_kind DR   #工作模式
 34     nat_mask 255.255.255.0   #子网掩码
 35     persistence_timeout 0  #会话保持时间
 36     protocol TCP  #tcp连接
 37     
 38     real_server 192.168.10.10 80 {   #后端的真实主机
 39         weight 1  #权重
 40         connect_port 80  #连接端口
 41             connect_timeout 3  #超时时间
 42             nb_get_retry 3  #与节点连接的成功次数
 43             delay_before_retry 3 #每隔多久建立连接
 44     }
 47     real_server 192.168.10.20 80 {
 48         weight 1
 49         connect_port 80
 50             connect_timeout 3
 51             nb_get_retry 3
 52             delay_before_retry 3
 53     }
 54 }
#下面其余部分全部删除
[root@localhost ~]# scp /etc/keepalived/keepalived.conf root@192.168.10.3:/etc/keepalived/keepalived.conf 
#
The authenticity of host '192.168.10.3 (192.168.10.3)' can't be established.
ECDSA key fingerprint is 72:3f:c7:4d:d7:98:b1:59:0e:0b:da:99:07:25:d8:63.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.10.3' (ECDSA) to the list of known hosts.
root@192.168.10.3's password: 
keepalived.conf      100% 1039     1.0KB/s   00:00

lvs+keepalived备:

[root@localhost ~]# vim /etc/keepalived/keepalived.conf
16     state BACKUP
17     interface ens33
19     priority 90

回到主 两边启动:

[root@localhost ~]# service keepalived start 
Starting keepalived (via systemctl):                       [  确定  ]
[root@localhost ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.100:80 rr
  -> 192.168.10.10:80             Route   1      0          0         
  -> 192.168.10.20:80             Route   1      0          0 

lvs+keepalived主:

[root@localhost ~]# ip a
inet 192.168.10.100/32

注:备份的那台主机是没有漂移ip的

客户端验证:

[root@localhost ~]# curl 192.168.10.100
22222
[root@localhost ~]# curl 192.168.10.100
11111

注:如果将主关闭,那么漂移ip将会自动转移到备份上。但当主重新启动,漂移ip又将会回到主上

实际环境当中
不会设置主和备
而是会设置两个备份 这样他们会根据优先级来选择主 承接漂移ip 并且会设置非抢占模式 节省主恢复后,备份会将漂移ip交给主的时间,当主恢复后,不会主去抢占主的位置还是备份进行工作
16 state BACKUP
17 nopreempt #开启非抢占模式
需要先结束掉所有的keepalived
[root@localhost ~]# service keepalived stop
Stopping keepalived (via systemctl): [ OK ]
然后启动服务:
[root@localhost ~]# service keepalived start
Stopping keepalived (via systemctl): [ OK ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值