LVS+Keepalived 高可用群集

一、一.Keepalived工具介绍

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

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

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

• 官方网站:http://www.keepalived.org/

二、Keepalived工作原理

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

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

三、部署LVS+Keepalived 高可用群集

复制代码
主DR 服务器: 192.168.110.10
备DR 服务器: 192.168.110.20
Web 服务器1: 192.168.110.60
Web 服务器2: 192.168.110.70
客户端:192.168.110.200
vip:192.168.110.100

1.配置负载调度器(主、备相同;192.168.110.10;192.168.110.20)

复制代码
systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs
复制代码
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

sysctl -p
复制代码
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.121.100
NETMASK=255.255.255.255

systemctl restart network
复制代码
ifup ens33:0
ifconfig ens33:0
route add -host 192.168.110.100 dev ens33:0
复制代码
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C
ipvsadm -A -t 192.168.110.100:80 -s rr
ipvsadm -a -t 192.168.110.100:80 -r 192.168.110.60:80 -g
ipvsadm -a -t 192.168.110.100:80 -r 192.168.110.70:80 -g
ipvsadm

ipvsadm -ln

2.配置节点服务器

配置节点服务器(192.168.110.60;192.168.110.70)

复制代码
systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

--192.168.110.60---
echo '66666' > /var/www/html/index.html

--192.168.110.70---
echo '77777' > /var/www/html/index.html

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.110.100
NETMASK=255.255.255.255
复制代码
service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.110.100 dev lo:0
复制代码
vim /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

sysctl -p

3.配置keeplived(主、备DR 服务器上都要设置)(192.168.110.10;192.168.110.20

复制代码
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 123456
    }
    virtual_ipaddress {				#指定群集vip地址
        192.168.116.200
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.116.200 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.116.80 80 {
        weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		
        TCP_CHECK {
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 4	#添加重试间隔
		}
	}

real_server 192.168.116.90 80 {		#添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 4
		}
	}
##删除后面多余的配置##
}


systemctl start keepalived
ip addr show dev ens33				#查看虚拟网卡vip


主192.168.110.10



复制代码
scp /etc/keepalived/keepalived.conf root@192.168.110.20:/etc/keepalived/keepalived.conf
直接复制一份主DR服务器keepalived的配置文件到备DR服务器

备192.168.110.20



5.测试验证

主,从DR服务器都开启时访问

在客户端访问 http://192.168.110.100/ ,默认网关指向 192.168.110.100


再在主服务器关闭 keepalived 服务后在测试,systemctl stop keepalived;再在主服务器禁用网卡后再测试, ifdown ens33:0,依旧可以实现。

相关推荐
A小辣椒18 小时前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式