LVS-DR+Keepalived 高可用群集部署

ops/2024/10/20 1:26:41/

LVS-DR+Keepalived 高可用群集部署

      • Keepalived 的工作原理
      • LVS+Keepalived 高可用群集部署
        • 配置负载调度器(主、备相同)
          • 关闭防火墙和核心防护及准备IPVS模块
          • 配置keeplived(主、备DR 服务器上都要设置)
          • 启动 ipvsadm 服务
          • 调整 proc 响应参数,关闭Linux 内核的重定向参数响应
        • 配置节点服务器
        • 测试验证

Keepalived 的工作原理

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

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

Keepalived 体系主要模块及其功能:
keepalived 体系架构中主要有三个模块,分别是 core、check 和 vrrp 。

模块功能
core模块为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
vrrp模块是用来实现VRRP协议的。(调度器之间的健康检查和主备切换)
check模块负责健康检查,常见的方式有端口检查及URL 检查。(节点服务器的健康检查)

keepalived的工作模式:
抢占模式:keepalived 的默认模式,MASTER节点从故障中恢复后,会将 VIP 从 BACKUP 节点中抢占过来

非抢占模式:MASTER 节点恢复后不抢占VIP。(主备节点的 state 都配置为 BACKUP ,且都要添加 nopreempt 配置)

LVS+Keepalived 高可用群集部署

服务器IP
主DR 服务器192.168.110.70
备DR 服务器192.168.110.20
Web 服务器1192.168.110.50
Web 服务器2192.168.110.60
vip192.168.110.88

在这里插入图片描述

配置负载调度器(主、备相同)
关闭防火墙和核心防护及准备IPVS模块
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
#加载IP虚拟服务器(IPVS)模块
modprobe ip_vs
#检查IPVS的状态
cat /proc/net/ip_vs
#安装IPVS管理工具
yum -y install ipvsadm 
配置keeplived(主、备DR 服务器上都要设置)
#下载
yum -y install keepalived
cd /etc/keepalived/
#备份
cp keepalived.conf keepalived.conf.bakvim keepalived.conf
global_defs {						#定义全局参数
#10行,修改邮件服务指向本地smtp_server 127.0.0.1
#12行,修改指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02router_id LVS_01
#14行,注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接#vrrp_strict
}vrrp_instance VI_1 {				#定义VRRP热备实例参数
#20行,修改指定热备状态,主为MASTER,备为BACKUPstate MASTER
#21行,修改指定承载vip地址的物理接口interface ens33
#22行,修改指定虚拟路由器的ID号,每个热备组保持一致	virtual_router_id 10#nopreempt		#如果设置非抢占模式,两个节点state必须为BACKUP,并加上配置 nopreempt
#23行,修改指定优先级,数值越大优先级越高,这里设置主为100,备为90priority 100
#通告间隔秒数(心跳频率)advert_int 1					authentication {				#定义认证信息,每个热备组保持一致
#认证类型		auth_type PASS				
#27行,修改指定验证密码,主备服务器保持一致auth_pass abc123}virtual_ipaddress {				#指定群集vip地址192.168.110.88}
}
#36行(注意删减,行数为原文件行数),修改指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.110.88 80 {
#健康检查的间隔时间(秒)delay_loop 6
#指定调度算法,轮询(rr)			lb_algo rr						
#39行,修改指定群集工作模式,直接路由(DR)lb_kind DR
#连接保持时间(秒)persistence_timeout 0	
#应用服务采用的是 TCP协议protocol TCP					
#43行,修改指定第一个Web节点的地址、端口real_server 192.168.110.50 80 {
#节点的权重weight 1					
#45行,删除,添加以下健康检查方式		TCP_CHECK {
#添加检查的目标端口connect_port 80
#添加连接超时(秒)	connect_timeout 3
#添加重试次数nb_get_retry 3	
#添加重试间隔delay_before_retry 3	}}real_server 192.168.110.60 80 {		#添加第二个 Web节点的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
##删除后面多余的配置##
}#启动keepalived
systemctl start keepalived
#查看IP
ip a show ens33

主负载均衡器
备负载均衡器

启动 ipvsadm 服务
192.168.110.70
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C
ipvsadm -A -t 192.168.110.88:80 -s rr
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.50:80 -g
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.60:80 -g
ipvsadmipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务
systemctl restart keepalived192.168.110.80
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C
ipvsadm -A -t 192.168.110.88:80 -s rr
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.50:80 -g
ipvsadm -a -t 192.168.110.88:80 -r 192.168.110.60:80 -g
ipvsadmipvsadm -ln

主负载均衡器
备负载均衡器

调整 proc 响应参数,关闭Linux 内核的重定向参数响应
vim /etc/sysctl.confnet.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0#加载配置
sysctl -p
配置节点服务器

参考
https://blog.csdn.net/m0_67475830/article/details/142751772?fromshare=blogdetail&sharetype=blogdetail&sharerId=142751772&sharerefer=PC&sharesource=m0_67475830&sharefrom=from_link

测试验证
curl 192.168.110.88

在这里插入图片描述
关闭主负载均衡器的Keepalived

systemctl stop keepalived
#客户机
curl 192.168.110.88
#主负载均衡器
ip a show ens33
#备负载均衡器
ip a show ens33

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/ops/124922.html

相关文章

2024 - 两台CentOS服务器上的1000个Docker容器(每台500个)之间实现UDP通信(C语言版本)

两台CentOS服务器上的1000个Docker容器(每台500个)之间实现UDP通信(C语言版本) 给女朋友对象写得,她不会,我就写了一个 为了帮助您在两台CentOS服务器上的1000个Docker容器(每台500个)之间实现UDP通信&…

Web安全常用工具 (持续更新)

前言 本文虽然是讲web相关工具,但在在安全领域,没有人是先精通工具,再上手做事的。鉴于web领域繁杂戎多的知识点(工具是学不完的,哭),如果你在本文的学习过程中遇到没有学过的知识点&#xff0…

zookeeper kafka集群配置

一.下载安装包 地址:https://download.csdn.net/download/cyw8998/16579797 二.配置文件 zookeeper.properties dataDir/data/kafka/zookeeper_data/zookeeper # the port at which the clients will connect clientPort2181 # disable the per-ip limit on the…

新手如何打造抖音矩阵账号,矩阵账号的优势有哪些?如何搭建矩阵系统的源码开发oem部署

抖音新手如何打造爆款矩阵账号? 在当前数字媒体盛行的时代,抖音作为一个领先的短视频分享平台,为品牌和个人提供了展示自己的舞台。对于初学者而言,构建一个有效的抖音账号矩阵是提升影响力的关键策略!今天&#xff0c…

Python基础知识练习题详解

练习题 1.下面哪个是合法的Python变量名? A) 2ndPlace B) _myVar C) my-var D) for 2.在Python中,None属于哪种数据类型? A) int B) float C) NoneType D) bool 3.使用del关键字可以做什么? A) 删除整个程序 B) 删除指定的变量 C) 删除列表中的所有元素 D) 清空内存 4.Pyt…

【优选算法】(第三十五篇)

目录 验证栈序列(medium) 题目解析 讲解算法原理 编写代码 N叉树的层序遍历(medium) 题目解析 讲解算法原理 编写代码 验证栈序列(medium) 题目解析 1.题目链接:. - 力扣(L…

ros2 action相关

ros2 action相关 总体代码参考: 一定要先看这里的示例,后续是对这个示例的说明补充 重点关注execute中,思考action的客户端与服务端联动过程中需要的是,任务执行的一些状态信息交互,就能明补execute为什么这样写了 代…

02.07.链表相交 最简方法之一

面试题 02.07. 链表相交 已解答 简单 相关标签 相关企业 提示 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链…