LVS+Keepalived 高可用群集

一、Keepalived工具介绍

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

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

二、Keepalived实现原理剖析

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

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

  • 是针对路由器的一种备份解决方案
  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

三、Keepalived案例讲解

  • Keepalived可实现多机热备,每个热备组可有多台服务器

  • 双机热备的故障切换是由虚拟P地址的漂移来实现,适用于各种应用服务器

  • Keepalived配置目录位于/etc/keepalived/

  • 配置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),可以有多个

  • 配置Keepalived slave服务器

     Keepalived备份服务器的配置与master的配置有三个选项不同 
    
router_id:设为自有名称
state:设为BACKUP
priority:值低于主服务器
   其他选项与master相同
   测试双机热备的效果
router_id:设为自有名称
state:设为BACKUP
priority:值低于主服务器

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

环境
主DR 服务器:192.168.11.11
备DR 服务器:192.168.11.12
Web 服务器1:192.168.11.13
Web 服务器2:192.168.11.14

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


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
}
 
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				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass 123123
    }
    virtual_ipaddress {				#指定群集vip地址
        192.168.11.12
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.11.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.11.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.11.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
 
############################# 配置ipvsadm #################################
 
7. #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
 
8. 
#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.11.12:80 -s rr
ipvsadm -a -t 192.168.11.12:80 -r 192.168.11.13:80 -g
ipvsadm -a -t 192.168.11.12:80 -r 192.168.11.14:80 -g
 
9. #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

关闭防火墙
在这里插入图片描述
安装服务
在这里插入图片描述
修改配置文件keeplived.conf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动服务、查看虚拟网卡vip
在这里插入图片描述
调整proce响应参数,关闭Linux内核的重定向参数响应

在这里插入图片描述
在这里插入图片描述
刷新一下
在这里插入图片描述
配置负载分配策略,并启动服务
在这里插入图片描述
清空ipvsadm,并做策略
在这里插入图片描述
保存设置
在这里插入图片描述

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

############################ 配置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
}
 
vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state BACKUP
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 10
--23行--修改,指定优先级,数值越大优先级越高,主为100,备为99
    priority 99
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {				#定义认证信息,每个热备组保持一致
		auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass 123123
    }
    virtual_ipaddress {				#指定群集vip地址
        192.168.11.12
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.11.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.11.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.11.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
 
############################# 配置ipvsadm #################################
 
7. #配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service
 
8. 
#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.11.12:80 -s rr
ipvsadm -a -t 192.168.11.12:80 -r 192.168.11.13:80 -g
ipvsadm -a -t 192.168.11.12:80 -r 192.168.11.14:80 -g
 
9. #保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

在这里插入图片描述
安装服务
在这里插入图片描述
修改配置文件keeplived.conf
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
启动服务、查看虚拟网卡vip
在这里插入图片描述
调整proce响应参数,关闭Linux内核的重定向参数响应
在这里插入图片描述
刷新一下
在这里插入图片描述
在这里插入图片描述
配置负载分配策略,并启动服务
在这里插入图片描述
清空ipvsadm,并做策略
在这里插入图片描述
保存设置
在这里插入图片描述

4.3 配置节点服务器 web1(192.168.11.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 yxp web!
 
4. #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.11.12
NETMASK=255.255.255.255
 
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
 
6. #设置路由
route add -host 192.168.11.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服务

在这里插入图片描述
在这里插入图片描述
配置站点文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
重启网络服务,开启虚拟网卡

在这里插入图片描述
设置路由
在这里插入图片描述
调整 proc 响应参数
在这里插入图片描述
刷新proc参数
在这里插入图片描述

4.4 配置节点服务器 web2(192.168.11.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 dhc web!
 
4. #配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.11.12
NETMASK=255.255.255.255
 
5. #重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
 
6. #设置路由
route add -host 192.168.11.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 测试

1)当前使用的为主DR服务器
在这里插入图片描述
在这里插入图片描述
2) 断开主DR服务器的Keepalived测试

在这里插入图片描述
在这里插入图片描述
3)在客户段测试
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

达米安利拉德

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值