1.Keepalived工具介绍

专为LVS和HA设计的一款健康检查工具

支持故障自动切换(Failover)

支持节点健康状态检查(Health Checking)

官方网站: http://www.keepalived.orgl

2.Keepalived及其工作原理

Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,

但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,

即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

2.1集群要满足的三个特点:

1. 负载均衡

2. 健康检查

3. 故障切换

对于节点服务器:健康检查如果发现有故障的节点就会其隔离或者剔除集群,待其恢复后再重新加入

的集群当中

负载均衡器:健康检查会定时检查主机的状态(包括主机和服务的状态),如果出故障就会自动切换到备主机上

待主的恢复重新让主承载业务请求

2.2VRRP (虚拟路由冗余协议)

是针对路由器的一种备份解决方案

由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务

每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态

若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

3.LVS+Keepalived 高可用群集

主DR 服务器:192.168.19.10

备DR 服务器:192.168.19.20

web 服务器1:192.168.19.33

web 服务器2:192.168.19.40

vip:192.168.19.188

客户端:192.168.19.100

3.1配置负载调度器(主:192.168.19.10)

LVS Keepalive 高可用集群_vim

2. #安装服务 yum -y install ipvsadm keepalived

LVS Keepalive 高可用集群_启动服务_02

3. #修改配置文件keeplived.conf

cd /etc/keepalived/

cp keepalived.conf keepalived.conf.bak vim keepalived.conf

LVS Keepalive 高可用集群_启动服务_03

LVS Keepalive 高可用集群_vim_04

LVS Keepalive 高可用集群_vim_05

LVS Keepalive 高可用集群_启动服务_06

启动服务、查看虚拟网卡vip

systemctl start keepalived

ip addr show dev ens33

LVS Keepalive 高可用集群_服务器_07


5. #调整proce响应参数,关闭Linux内核的重定向参数响应 vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

LVS Keepalive 高可用集群_启动服务_08

6. #刷新一下 sysctl -p

LVS Keepalive 高可用集群_vim_09

7. #配置负载分配策略,并启动服务

ipvsadm-save >/etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

LVS Keepalive 高可用集群_vim_10

8.  

#清空ipvsadm,并做策略

ipvsadm -C

ipvsadm -A -t 192.168.10.188:80 -s rr

ipvsadm -a -t 192.168.10.188:80 -r 192.168.59.33:80 -g

ipvsadm -a -t 192.168.10.188:80 -r 192.168.59.40:80 -g

LVS Keepalive 高可用集群_vim_11

LVS Keepalive 高可用集群_服务器_12

9. #保存设置

ipvsadm

ipvsadm -ln

ipvsadm-save >/etc/sysconfig/ipvsadm

LVS Keepalive 高可用集群_启动服务_13

3.2配置负载调度器 (192.168.19.20)

1. #关闭防火墙

systemctl stop firewalld.service

setenforce 0

LVS Keepalive 高可用集群_vim_14

2. #安装服务

yum -y install ipvsadm keepalived

LVS Keepalive 高可用集群_vim_15

3. #修改配置文件keeplived.conf

cd /etc/keepalived/

cp keepalived.conf keepalived.conf.bak

vim keepalived.conf

LVS Keepalive 高可用集群_服务器_16

LVS Keepalive 高可用集群_启动服务_17

LVS Keepalive 高可用集群_服务器_18


4. #启动服务、查看虚拟网卡vip

systemctl start keepalived

ip addr show dev ens33  

LVS Keepalive 高可用集群_服务器_19

5. #调整proce响应参数,关闭Linux内核的重定向参数响应

vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

net.ipv4.conf.all.send_redirects = 0

net.ipv4.conf.default.send_redirects = 0

net.ipv4.conf.ens33.send_redirects = 0

LVS Keepalive 高可用集群_服务器_20

6. #刷新一下

sysctl -p

LVS Keepalive 高可用集群_服务器_21

7. #配置负载分配策略,并启动服务

ipvsadm-save >/etc/sysconfig/ipvsadm

systemctl start ipvsadm.service

LVS Keepalive 高可用集群_服务器_22

8.  #清空ipvsadm,并做策略

ipvsadm -C

ipvsadm -A -t 192.168.19.188:80 -s rr

ipvsadm -a -t 192.168.19.188:80 -r 192.168.10.33:80 -g

ipvsadm -a -t 192.168.19.188:80 -r 192.168.10.40:80 -g

LVS Keepalive 高可用集群_启动服务_23

9. #保存设置

ipvsadm

ipvsadm -ln

ipvsadm-save >/etc/sysconfig/ipvsadm

LVS Keepalive 高可用集群_服务器_24

3.3配置节点服务器web1 (192.168.19.33)

1. #关闭防火墙

systemctl stop firewalld

setenforce 0

LVS Keepalive 高可用集群_启动服务_25

2. #安装并开启httpd服务

yum -y install httpd

systemctl start httpd

LVS Keepalive 高可用集群_vim_26

LVS Keepalive 高可用集群_服务器_27

3. #配置站点文件

vim /var/www/html/index.html



4. #配置虚拟vip

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

ONBOOT=yes

IPADDR=192.168.19.188

NETMASK=255.255.255.255

LVS Keepalive 高可用集群_vim_28

5. #重启网络服务,开启虚拟网卡

systemctl restart network

ifup lo:0

ifconfig lo:0

LVS Keepalive 高可用集群_服务器_29

6. #设置路由

route add -host 192.168.19.188 dev lo:0

route -n

LVS Keepalive 高可用集群_服务器_30

7. #调整 proc 响应参数

#添加系统只响应目的IP为本地IP的ARP请求

#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP

vim /etc/sysctl.conf

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

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

LVS Keepalive 高可用集群_服务器_31

8. #刷新proc参数

sysctl -p

LVS Keepalive 高可用集群_vim_32

 3.4配置节点服务器web2 192.168.19.40

1.#关闭防火墙

systemctl stop firewalld

setenforce 0

LVS Keepalive 高可用集群_启动服务_33

2. #安装并开启httpd服务

yum -y install httpd

systemctl start httpd

LVS Keepalive 高可用集群_启动服务_34

3. #配置站点文件

vim /var/www/html/index.html

4. #配置虚拟vip

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo:0

ONBOOT=yes

IPADDR=192.168.19.188

NETMASK=255.255.255.255

LVS Keepalive 高可用集群_启动服务_35

5. #重启网络服务,开启虚拟网卡

systemctl restart network

ifup lo:0

ifconfig lo:0

LVS Keepalive 高可用集群_服务器_36

6. #设置路由

route add -host 192.168.19.188 dev lo:0

route -n

LVS Keepalive 高可用集群_服务器_37

7. #调整 proc 响应参数

#添加系统只响应目的IP为本地IP的ARP请求

#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP

vim /etc/sysctl.conf

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

net.ipv4.conf.lo.arp_ignore = 1

net.ipv4.conf.lo.arp_announce = 2

LVS Keepalive 高可用集群_vim_38

8. #刷新proc参数

sysctl -p

LVS Keepalive 高可用集群_vim_39

4.测试

LVS Keepalive 高可用集群_vim_40

LVS Keepalive 高可用集群_vim_41

断开主DR服务器的Keepalived测试

systemctl stop keepalived.service

LVS Keepalive 高可用集群_服务器_42

LVS Keepalive 高可用集群_vim_43

LVS Keepalive 高可用集群_vim_44