LVS+Keepalived群集

目录

一、Keepalived概述

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

1.1.1 管理 LVS 负载均衡软件

1.1.2 支持故障自动切换(Failover)

1.1.3 实现 LVS 集群中节点的健康检查(Health Checking)

1.2 集群要满足的三个特点

1.3 Keepalived高可用故障切换转移原理

1.4 Keepalived服务的工作原理

二、 Keepalived实现远离剖析

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

2.2 Keepalived体系主要模块及其作用

三、Keepalived案例讲解

3.1 配置Keepalived master服务器

3.2 配置Keepalived slave服务器

 四、实验部署

4.1 配置负载调度器(主:192.168.152.11)

4.2 配置负载调度器(备:192.168.152.15)

4.3 配置节点服务器web1(192.168.152.13)

4.4 配置节点服务器 web2(192.168.152.14)

4.5 测试验证 


一、Keepalived概述

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

  • 支持故障自动切换(Failover)
  • 支持节点健康状态检查(Health Checking)
  • 官方网站:http://www.keepalived.orgl

1.1.1 管理 LVS 负载均衡软件

早期的LVS软件,需要通过命令行或脚本实现管理,并且没有针对LVS节点的健康检查功能。为了解决LVS的这些使用不便问题,Keepalived诞生了,可以说,Keepalived软件起初是专为解决LVS的问题而诞生的。因此,Keepalived和LVS的感情很深,他们的关系如同夫妻一样,可以紧密地结合,愉快地工作。Keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动,停止功能,这使得LVS的应用更加简单方便了。

1.1.2 支持故障自动切换(Failover)

Keepalived可以实现任意两台主机之间,例如Master和Backup主机之间的故障转移和自动切换,这个主机可以是普通的不能停机的业务服务器,也可以是LVS负载均衡,Nginx反向代理这样的服务器。

Keepalived高可用功能实现的简单原理为,两台主机同时安装好Keepalived软件并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服务,角色为Backup的主机作为Master主机的热备;当角色为Master的主机失效或出现故障时,角色为Backup的主机将自动接管Master主机的所有工作,包括接管VIP资源及相应资源服务;而当角色为Master的主机故障修复后,又会自动接管回它原来处理的工作,角色为Backup的主机则同时释放Master主机失效时它接管的工作,此时,两台主机将恢复到最初启动时各自的原始角色及工作状态。

1.1.3 实现 LVS 集群中节点的健康检查(Health Checking)

Keepalived可以通过在自身的Keepalived.conf文件里配置LVS的节点IP和相关参数实现对LVS的直接管理;除此之外,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived服务会自动将失效的节点服务器从LVS的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响;当故障的节点服务器被修复以后,Keepalived服务又会自动地把它们加入到正常转发队列中,对客户提供服务。

1.2 集群要满足的三个特点

①负载均衡
②健康检查
③故障切换

1.3 Keepalived高可用故障切换转移原理

keepalived 高可用服务对集群之间的故障切换转移,是通过 VRRP(虚拟路由器冗余协议)来实现的。
  在 keepalived 服务正常工作时,主(Master)节点会不断地向备(Backup)节点发送(多播的方式)心跳消息,用以告诉备节点自己还活看,当主节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主节点的心跳了,于是调用自身的接管程序,接管主节点的 IP 资源及服务。而当主节点恢复时,备节点又会释放主节点故障时自身接管的 IP 资源及服务,恢复到原来的备用角色。

总结:

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

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

1.4 Keepalived服务的工作原理

Keepalived高可用之间是通过VRRP进行通信的,VRRP是通过竞选机制来确定主备的,主的优先级高于备,因此,工作时主会优先获得所有的资源,备节点处于等待状态,当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。

在Keepalived服务之间,只有作为主的服务器会一直发送VRRP广播包,告诉备它还活着,此时备不会抢占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性。接管速度最快可以小于1秒。

二、 Keepalived实现远离剖析

  • Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能

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

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

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

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

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

总结:
VRRP会把多台路由器组成一个虚拟路由组vrid,VRRP会生成一个虚拟路由(包含虚拟IP和虚拟MAC,局域网中,用户不关心哪一个是主或备,他们一般只用虚拟路由器的虚拟IP作为他们的网关),实际上虚拟IP是承载在Master路由器上,也就是说实际的数据包通过Master进行转发,Backup是通过优先级来决定哪个是Master路由,优先级最大的那台就是Master,Backup只是用来监听Master定时发来的VRRP报文,如果超时未收到Master发布的VRRP报文,Backup就会抢占Master,虚拟IP也会一起飘移到Backup。

2.2 Keepalived体系主要模块及其作用

Keepalived的主要模块作用
core模块为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析
vrrp模块来实现VRRP协议
check模块负责健康检查,常见的方式有端口检查及URL检查

三、Keepalived案例讲解

  •  Keepalived可实现多机热备,每个热备组可有多台服务器
  • 双机热备的故障切换是由虚拟IP地址的漂移来实现,适用于各种应用服务器
  • Keepalived配置目录位于/etc/keepalived/

3.1 配置Keepalived master服务器

  • keepalived.conf是主配置文件
    global_defs {...}区段指定全局参数
    vrrp_instance 实例名称{...}区段指定VRRP热备参数
    注释文字以"∵"符号开头
    目录samples,提供了许多配置样例作为参考
  • 常用配置选项
    router_id HA_TEST_R1:本路由器(服务器)的名称、主备名称要不一样
    vrrp_instance Vl_1∶定义VRRP热备实例
    state MASTER:热备状态,MASTER表示主服务器
    interface ens33:承载VIP地址的物理接口
    virtual_router_id 1 :虚拟路由器的ID号,每个热备组保持一致
    priority 100:优先级,数值越大优先级越高
    advert_int 1:通告间隔秒数(心跳频率)
    auth_type PASS:认证类型
    auth_pass 123456:密码字串
    virtual_ipaddress { vip}:指定漂移地址(VIP),可以有多个

3.2 配置Keepalived slave服务器

  • Keepalived备份服务器的配置与master的配置有三个选项不同
    router_id:设为自有名称
    state:设为BACKUP
    priority:值低于主服务器

  • 测试双机热备的效果 

    router_id:设为自有名称
    state:设为BACKUP
    priority:值低于主服务器

 四、实验部署

环境
主DR 服务器:192.168.152.11
备DR 服务器:192.168.152.15
Web 服务器1:192.168.152.13
Web 服务器2:192.168.152.14

4.1 配置负载调度器(主:192.168.152.11)

############################ 配置Keepalived master服务器 #################################
 
1. #关闭防火墙
systemctl stop firewalld.service
setenforce 0
 
2. #安装服务
yum -y install ipvsadm keepalived
 
3. #修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
 
......
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地
	smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
	router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
	#vrrp_strict
}

 
vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 10
--23行--修改,指定优先级,数值越大优先级越高,主为100,备为90
    priority 100
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {				#定义认证信息,每个热备组保持一致
		auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass 123123
    }
    virtual_ipaddress {				#指定群集vip地址
        192.168.152.12
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.152.12 80 {
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 50			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.152.13 80 {
        weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		
        TCP_CHECK {
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔
		}
	}
 
	real_server 192.168.152.14 80 {		#添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
}
##删除后面多余的配置##
 
4. #启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	
 
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
 
6. #刷新一下
sysctl -p

7.vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.190.180
NETMASK=255.255.255.255

ifup ens33:0   #开启网卡
ifconfig ens33:0 #查看网卡

 
############################# 配置ipvsadm #################################
 
8. #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
 
9.#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.152.12:80 -s rr
ipvsadm -a -t 192.168.152.12:80 -r 192.168.152.14:80 -g
ipvsadm -a -t 192.168.152.12:80 -r 192.168.152.13:80 -g
 
10. #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

 关闭防火墙

安装服务

修改配置文件keepalived.conf


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

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

刷新一下

配置ens33:0
  

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

 清空ipvsadm,并做策略

 保存设置

4.2 配置负载调度器(备:192.168.152.15)

将主配置的文件远程复制到备进行修改

修改以下配置

4.3 配置节点服务器web1(192.168.152.13)

1. #关闭防火墙
systemctl stop firewalld
setenforce 0
 
2. #安装并开启httpd服务
yum -y install httpd
systemctl start httpd
 
3. #配置站点文件
vim /var/www/html/index.html
this is fl!
 
4. #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.152.12
NETMASK=255.255.255.255
 
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
 
6. #设置路由
route add -host 192.168.152.12 dev lo:0
route -n
 
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
 
8. #刷新proc参数
sysctl -p

关闭防火墙

 安装并开启httpd服务

 
配置站点文件

 配置虚拟vip
 
重启网络服务,开启虚拟网卡

 设置路由

 调整 proc 响应参数

 刷新proc参数

4.4 配置节点服务器 web2(192.168.152.14)

1. #关闭防火墙
systemctl stop firewalld
setenforce 0
 
2. #安装并开启httpd服务
yum -y install httpd
systemctl start httpd
 
3. #配置站点文件
vim /var/www/html/index.html
this is dl!
 
4. #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.152.12
NETMASK=255.255.255.255
 
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
 
6. #设置路由
route add -host 192.168.152.12 dev lo:0
route -n
 
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
 
8. #刷新proc参数
sysctl -p

 关闭防火墙

 安装并开启httpd服务

 配置站点文件

 配置虚拟vip

 重启网络服务,开启虚拟网卡

 设置路由

调整 proc 响应参数

刷新proc参数

4.5 测试验证 

 访问测试

 

将主重新开启,成功抢占

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值