LVS+Keepalived 的群集

一、 Keepalived 工具介绍

  • 专为 LVS 和 HA 设计的一款健康检查工具
  • 支持故障自动切换( Failover )
  • 支持节点健康状态检查( Health Checking )
  • 官方网站:http://www.keepalived.org/

1.1 Keepalived

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

一个 LVS 服务器集群中通常有主服务器( Master )和备用服务器( Backup )两种角色的服务器,但对外表现为一个虚拟 IP ,主服务器会发送 VRRP 通告信息给备份服务器,当备份服务器收不到 VRRP 消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟 IP ,继续提供服务,从而保证了高可用性。

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

  • Keepalived 体系架构中主要有三个模块,分别是 corecheckvrrp
    • core 模块:为 keepalived 的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
    • vrrp 模块:是来实现 VRRP 协议的。
    • check 模块:负责健康检查,常见的方式有端口检查及 URL 检查。

keepalived只有一个配置文件keepalived.conf,里面主要包括以下几个配置区域,分别是global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance和virtual_server。

1.3 群集要满足的三个特点

  1. 负载均衡
  2. 健康检查
  3. 故障切换

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

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

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

二、 Keepalived 原理剖析

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 上。
    

三、 配置 Keepalived master 服务器

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

3.1 keepalived.conf 是主配置文件

  • global_defs{…} 区段指定全局参数
  • vrrp_instance 实例名称 {…} 区段指定 VRRP 热备参数
  • 注释文字以“ ! ” 符号开头
  • 目录 samples,提供了许多配置样例作为参数

3.1.1 常用配置选项

配置说明
router_id HA_TEST_R1本路由器(服务器)的名称
vrrp_instance VI_1定义 VRRP 热备实例
state MASTER热备状态,MASTER 表示主服务器
interface ens33承载 VIP 地址的物理接口
virtual_router_id 1虚拟路由器的 ID 号,每个热备组保持一致

3.2 Keepalived备份服务器的配置与master的配置有三个选项不同

router_id:设为自有名称
state:设为BACKUP
priority:值低于主服务器
其他选项与master相同

3.3 测试双机热备的效果

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

四、搭建 LVS+Keepalived 高可用群集

主 DR 服务器:ens33(192.168.10.13)ipvsadm、keepalived(热备)
备 DR 服务器:ens33(192.168.10.14)ipvsadm、keepalived
Web 服务器1:192.168.10.15
Web 服务器2:192.168.10.16
lo:0(VIP):192.168.10.100
VIP:192.168.10.188
客户端:192.168.10.17

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

配置Keepalived master服务器

1. 关闭防火墙

systemctl stop firewalld.service
setenforce 0
systemctl enable firewalld.service

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
}

vrrp_instance VI_1 {		——定义VRRP热备实例参数

20行——修改,指定热备状态,主为MASTER,备为BACKUP
state MASTER

21行——修改,指定承载vip地址的物理接口
interface ens33

22行——修改,指定虚拟路由器的ID号,每个热备组保持一致	
virtual_router_id 10

23行——修改,指定优先级,数值越大优先级越高,主为100,备为99
priority 100
advert_int 1				——通告间隔秒数(心跳频率)
authentication {			——定义认证信息,每个热备组保持一致
	auth_type PASS			——认证类型

priority 100
advert_int 1
authentication {
	auth_type PASS	



27行——修改,指定验证密码,主备服务器保持一致

    	auth_pass 123123
	}
	virtual_ipaddress {			——指定群集vip地址
    	192.168.10.200
	}
}

36行——修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.10.200 80 {
delay_loop 6			——健康检查的间隔时间(秒)
lb_algo rr			——指定调度算法,轮询(rr)

virtual_server 192.168.10.200 80 {
delay_loop 6
lb_algo rr


39行——修改,指定群集工作模式,直接路由(DR)
lb_kind DR
persistence_timeout 0			——连接保持时间(秒)
protocol TCP			——应用服务采用的是 TCP协议

lb_kind DR
persistence_timeout 0
protocol TCP


43行——修改,指定第一个Web节点的地址、端口
  real_server 192.168.10.12 80 {
      weight 1			——节点的权重

  real_server 192.168.10.12 80 {
      weight 1

45行——删除,添加以下健康检查方式		
    TCP_CHECK {
		connect_port 80			——添加检查的目标端口
		connect_timeout 3		——添加连接超时(秒)
		nb_get_retry 3			——添加重试次数
		delay_before_retry 3	——添加重试间隔
	}
}

real_server 192.168.10.17 80 {	——添加第二个 Web节点的地址、端口
    weight 1
    TCP_CHECK {
		connect_port 80
		connect_timeout 3
		nb_get_retry 3
		delay_before_retry 3
	}
}
}

删除后面多余的配置

4. 配置虚拟ip

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0

vim ifcfg-ens33:0
DEVICE=ens33:0
IPADDR=192.168.10.200
NETMASK=255.255.255.255
NETWORK=127.0.0.0

systemctl restart network

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

systemctl start keepalived
ip addr show dev ens33	

6. 调整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

7. 刷新一下

sysctl -p


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

ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service

9. 清空ipvsadm,并做策略

ipvsadm -C
ipvsadm -A -t 192.168.10.200:80 -s rr
ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.12:80 -g
ipvsadm -a -t 192.168.10.200:80 -r 192.168.10.17:80 -g

10. 保存设置

ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm
  1. 关闭防火墙

在这里插入图片描述

  1. 安装服务
    在这里插入图片描述

  2. 备份及修改配置文件
    在这里插入图片描述
    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值