LVS+Keepalived 群集及搭建

文章目录

  • 一.keepalived 概述
    • 1.keepalived服务重要功能
      • 1.1 管理LvS负载均衡器软件
      • 1.2 支持故障自动切换 (failover)
      • 1.3 实现LVS集中节点的健康检查 (health checking)
      • 1.4 实现LVS负载调度器 节点服务器的高可用性 (HA)
    • 2. keepalived 高可用故障切换转移原理及VRRP通信原理
    • 3.keepalived体系主要模块及作用
    • 4.keepalived 服务的工作原理
  • 二.部署LVS+keepalived高可用集群
    • 1.部署图示
    • 2.部署LVS+keepalived步骤
      • 2.1配置NFS共享(192.168.198.15)
      • 2.2 配置主DR服务器(192.168.198.11)
        • 2.2.1配置虚拟 IP 地址(VIP:192.168.198.180)
        • 2.2.2安装keepalived
        • 2.2.3配置keeplived
        • 2.2.4启动 ipvsadm 服务
        • 2.2.5调整 proc 响应参数,关闭Linux 内核的重定向参数响应
      • 2.3配置备DR服务器(192.168.198.12)
        • 2.3.1配置虚拟 IP 地址(VIP:192.168.198.180)
        • 2.3.2安装keepalived
        • 2.3.3配置keeplived
        • 2.3.4启动 ipvsadm 服务
        • 2.3.5调整 proc 响应参数,关闭Linux 内核的重定向参数响应
      • 3.配置节点服务器
      • 4.测试验证

一.keepalived 概述

1.keepalived服务重要功能

1.1 管理LvS负载均衡器软件

keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS配置以及服务的启动停止功能 这会使 LVS应用更加的简便。

1.2 支持故障自动切换 (failover)

(1)两台主机同时安装好keepalived并且启动服务,当启动的时候master主机获得所有资源并且对用户提供请求服务,当角色backup的主机做为master热备,当master主机挂了出现故障时,backup主机将自动接管master主机所有工作,包括接管VIP资源及相应资源服务。

(2)当master主机故障修复后,又会自动接管回它的原来处理的工作,backup主机则同时释放masgter主机失效时接管的工作,此时此刻,两台主机将恢复到最初的启动时各自的原始角色及工作状态。

(3)抢占模式: master 从故障恢复后,会将VIP从backup节点中抢占过来。

(4)非抢占: master从故障恢复后不抢占backup,backup升级为 master后的VIP。

1.3 实现LVS集中节点的健康检查 (health checking)

在keepalived.conf配置LVS节点(IP)和相关参数来实现对LVS的直接管理,如果几个节点服务器同时发生故障,无法提供服务,keepalived服务会自动将那个失效节点服务器从LVS正常转发列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响,当故障的节点服务器修复以后,keepalived服务又会自动把他们加入到正常转发列中,对外面客户提供服务。

1.4 实现LVS负载调度器 节点服务器的高可用性 (HA)

企业集群需要满足四个特点:负载均衡、健康检查、故障切换 、LVS+ keepalived,完全可以买需求

2. keepalived 高可用故障切换转移原理及VRRP通信原理

keepalived 高可用服务集群之间的故障切换转移,是通过VRRP (虚拟路由器元余协议)来实现的。

在keepalived服务正常工作时主 (master) 节点会不断地向备 (Backup) 节点发送(多播的方式) 心跳消息,用意告诉备节点自已还活着,当主节点发生故障事,就无法发送心跳消息,备节点也就因此无法检测到来自主节点的心跳,于是调用自身的接管程序,接管主节点的IP资源及服务。而当主节点恢复时,备主机又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

3.keepalived体系主要模块及作用

三个模块分别是core、check、vrrp

(1)core模块:为keepalived的核心 ,负责主进程启动,维护全局配置文件,加载和解析

(2)VRRP 模块:来实现VRRP协议

(3)check 模块:负责健康检查 常见的检查方式, 比如:端口 URL

4.keepalived 服务的工作原理

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

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

二.部署LVS+keepalived高可用集群

1.部署图示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jf8ORNBW-1688650765122)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230706142031207.png)]

2.部署LVS+keepalived步骤

主DR 服务器:ens33(192.168.198.11) ipvsadm 、keepalived(热备)

​ 虚拟IP:192.168.198.180 网卡 ens33:0
备DR 服务器:ens33(192.168.198.12) ipvsadm 、keepalived
​ 虚拟IP:192.168.198.180 网卡 ens33:0
Web 服务器1:ens33 192.168.13
​ lo:0(VIP)192.168.198.180
Web 服务器2:ens33 192.168.198.14
​ lo:0(VIP)192.168.198.180
NFS共享服务器:192.168.198.15

2.1配置NFS共享(192.168.198.15)

systemctl stop firewalld.service
setenforce 0yum -y install nfs-utils rpcbind
mkdir /opt/blue /opt/summer
chmod 777 /opt/blue /opt/summervim /etc/exports
/usr/share *(ro,sync)
/opt/blue 192.168.198.0/24(rw,sync)
/opt/summer 192.168.198.0/24(rw,sync)
systemctl start nfs.service
systemctl start rpcbind.service                                                                             

2.2 配置主DR服务器(192.168.198.11)

systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

2.2.1配置虚拟 IP 地址(VIP:192.168.198.180)

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
#若隧道模式,复制为ifcfg-tunl0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.198.180
NETMASK=255.255.255.255
ifup ens33:0
ifconfig ens33:0

注:此处如未配置成功,ifup ens33:0失败,可以直接重启网卡systemctl restart network,

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bnN2dfLh-1688650765123)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230706144814676.png)]

2.2.2安装keepalived

#安装keepalived
yum -y install ipvsadm keepalived
#加载 Linux 内核的 IPVS 模块
modprobe ip_vs
#查看当前 IPVS 的状态和信息
cat /proc/net/ip_vs

2.2.3配置keeplived

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
#定义全局参数
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.loc
#10行修改,邮件服务指向本地smtp_server 127.0.0.1smtp_connect_timeout 30
#12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01router_id LVS_01vrrp_skip_check_adv_addr
#14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}
#定义VRRP热备实例参数
vrrp_instance VI_1 {
#20行--修改,指定热备状态,主为MASTER,备为BACKUPstate MASTER
#21行--修改,指定承载vip地址的物理接口interface ens33
#22行--修改,指定虚拟路由器的ID号,每个热备组保持一致
#nopreempt		#如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreemptvirtual_router_id 51
#23行--修改,指定优先级,数值越大优先级越高,这里设置主为100    priority 100
#通告间隔秒数(心跳频率)    advert_int 1
#定义认证信息,每个热备组保持一致    authentication {
#认证类型auth_type PASS
#27行--修改,指定验证密码,主备服务器保持一致auth_pass 000000}virtual_ipaddress {
##指定群集vip地址192.168.198.180}
}
#修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.198.180 80 {
#健康检查的间隔时间(秒)delay_loop 6
#指定调度算法,轮询(rr)lb_algo rr
#修改,指定群集工作模式,直接路由(DR)lb_kind DR
##连接保持时间(秒)persistence_timeout 50
#应用服务采用的是 TCP协议protocol TCP
#修改,指定第一个Web节点的地址、端口real_server 192.168.198.13 80 {
#节点的权重weight 1
#删除,添加以下健康检查方式TCP_CHECK {
#添加检查的目标端口connect_port 80
#添加连接超时(秒)connect_timeout 3
#添加重试次数nb_get_retry 3
#添加重试间隔delay_before_retry 3}}
#添加第二个 Web节点的地址、端口
real_server 192.168.198.14 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
##删除后面多余的配置##
}
systemctl start keepalived
ip addr

2.2.4启动 ipvsadm 服务

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
#清空规则
ipvsadm -C
ipvsadm -A -t 192.168.198.180:80 -s rr
ipvsadm -a -t 192.168.198.180:80 -r 192.168.198.13:80 -g
ipvsadm -a -t 192.168.198.180:80 -r 192.168.198.14:80 -g
ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

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

vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p

在这里插入图片描述

2.3配置备DR服务器(192.168.198.12)

systemctl stop firewalld.service
setenforce 0
modprobe ip_vs
cat /proc/net/ip_vs
yum -y install ipvsadm

2.3.1配置虚拟 IP 地址(VIP:192.168.198.180)

cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
#若隧道模式,复制为ifcfg-tunl0
vim ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.198.180
NETMASK=255.255.255.255
重启网卡 systemctl restart network
ifup  ens33:0 
ifconfig

在这里插入图片描述

2.3.2安装keepalived

#安装keepalived
yum -y install ipvsadm keepalived
#加载 Linux 内核的 IPVS 模块
modprobe ip_vs
#查看当前 IPVS 的状态和信息
cat /proc/net/ip_vs

2.3.3配置keeplived

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
global_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_02vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 99advert_int 1authentication {auth_type PASSauth_pass 000000}virtual_ipaddress {192.168.198.180}
}virtual_server 192.168.198.180 80 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.198.13 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.198.14 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
systemctl start keepalived
ip addr

2.3.4启动 ipvsadm 服务

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C
ipvsadm -A -t 192.168.198.180:80 -s rr
ipvsadm -a -t 192.168.198.180:80 -r 192.168.198.13:80 -g
ipvsadm -a -t 192.168.198.180:80 -r 192.168.198.14:80 -g

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

vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p

3.配置节点服务器

Web 服务器1:ens33 192.168.13
lo:0(VIP)192.168.198.180
Web 服务器2:ens33 192.168.198.14
lo:0(VIP)192.168.198.180

systemctl stop firewalld
setenforce 0yum -y install httpd
systemctl start httpd--192.168.198.13---
echo 'this is blue web!' > /var/www/html/index.html--192.168.198.14---
echo 'this is summer web!' > /var/www/html/index.htmlvim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.198.180
NETMASK=255.255.255.255service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.198.180 dev lo:0vim /etc/sysctl.confnet.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 = 2sysctl -p

4.测试验证

在客户端访问 http://192.168.198.180/

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tG4446eB-1688650765125)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230706194710785.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4xCkVLSd-1688650765126)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230706194721466.png)]

再在主服务器关闭 keepalived 服务后再测试, systemctl stop keepalived
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BbRHxuNH-1688650765126)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230706194749281.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vi4t0TIv-1688650765127)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230706194815889.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hlNGmY7F-1688650765127)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230706194855162.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uPPdhwQd-1688650765128)(C:\Users\zhao\AppData\Roaming\Typora\typora-user-images\image-20230706194910123.png)]

keepalived的作用是解决单点故障、在调度器上配置keepalived即可相当于ARRP的主备份,主挂了,数据流就会转到备主机,keepalived可以用在组件中:mysql、nginx、Tomcat),高可用,实现故障转移。

主要的模块有三个:

(1)core模块:为keepalived的核心 ,负责主进程启动,维护全局配置文件,加载和解析

(2)VRRP 模块:来实现VRRP协议

(3)check 模块:负责健康检查 常见的检查方式, 比如:端口 URL

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/13467.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flink的状态是否支持任务间共享

背景: 在日常编写代码的过程中,我们经常会在方法内部new很多的其他类对象来进行编码工作,那么对于这种情况怎么让new出来的对象是一个我们特意创建出来的一个mock实例,从而让我们能完全控制new出来的对象的所有行为呢&#xff1f…

后端开发常见技术场景

文章目录 1、单点登录这块怎么实现的1.1 概述1.2 JWT解决单点登录1.3 回答要点 2、权限认证是如何实现的2.1 概述2.2 RBAC权限模型2.3 回答要点 3、上传数据的安全性你们怎么控制?3.1 概述3.2 对称加密3.3 非对称加密3.4 回答要点 4、你负责项目的时候遇到了哪些比较…

css:鼠标经过el-dropdown 组件上会出现一个蓝色的小框

问题描述 效果如下,原以为是浏览器的bug,升级后就好了,没想到一直有这个问题 页面刷新后,鼠标经过el-dropdown 组件上会出现一个蓝色的小框 原因 浏览器默认有一个样式,加了一个边框 :focus-visible {outline: -we…

RabbitMQ

一、初识 MQ 1. 同步通讯 时效性强,立即获取结果 微服务间基于 Feign 的调用就属于同步 方式,存在一些问题: ① 耦合度高 ② 性能和吞吐能力不如异步 ③ 额外资源消耗 ④ 级联失败问题 2. 异步通讯 异步调用常见实现就是事件驱动模式 优点…

IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码

IDEAJavaSpring BootMyBatisshiroLayuiMysql停车位管理系统源码 一、系统介绍1.环境配置 二、系统展示1.登录2.注册3.个人信息4.修改密码5.我的订单6.我的留言7.查车位8.管理员登录9.公告列表10.车位列表11. 订单列表12. 积分排行13. 留言列表14.管理员列表15. 用户列表16.修改…

当型循环和直到型循环(精讲)

目录 背景概念当型循环直到型循环 二维表对比图示与代码当型循环流程图N-S图(盒图) 直到型循环流程图N-S图(盒图) 例子当型图示代码 直到型图示代码 Do–Loop 和For –Next相同点:不同点:代码 总结 背景 两…

Java的数据结构

目录 数据结构: 1,数组 2,链表 3,哈希表 4,队列 5,堆 6,栈 7,树 8,图 数据结构: 1,数组 优点: 查找元素的速度很快; 按照索引来遍历数组的速度也很快。 缺点: 数组大小无法改变,一旦创建就无法扩容; 数组只能存储一种数据类型的数据; 插入、修改、删除时比较麻烦&…

第11章:C语言数据结构与算法初阶之排序

系列文章目录 文章目录 系列文章目录前言排序的概念及其运用排序的概念常见的排序算法 常见排序算法的实现1.直接插入排序2. 希尔排序(缩小增量排序)3. 直接选择排序4. 堆排序5. 冒泡排序6. 快速排序将区间按照基准值划分为左右两半部分的常见方式&#…

<Linux开发>驱动开发 -之- Linux I2C 驱动

<Linux开发>驱动开发 -之- Linux I2C 驱动 交叉编译环境搭建: <Linux开发> linux开发工具-之-交叉编译环境搭建 uboot移植可参考以下: <Linux开发> -之-系统移植 uboot移植过程详细…

flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel

flutter聊天界面-加号【➕】更多展开相机、相册等操作Panel 在之前实现了flutter聊天界面的自定义表情的展示,这里记录一下更多操作展开的相机、相册等操作功能实现。 一、查看效果 更多操作展开的相机、相册等操作功能实现。 二、代码实现 展开的操作按钮可能比…

嵌入式基础知识-总线带宽

带宽,最容易想到的是上网用的网络带宽,在嵌入式软件开发中,也会用到带宽,这个带宽的含义就不一样了,区别是什么?本篇就来介绍一下,并通过一些例子来进行带宽的计算。 先来简单看下不同领域的带…

第二节 给SpringBootAdmin的server端加入spring security安全控制

前言 本来想用一节就写完SpringBootAdmin的,但随着研究的深入发现一节应该是不够的,网上的资料也不会非常系统,官网的例子有些已经好几年没更新了,所以接下来还是系统性的来写下吧 第一节 完成基础配置,暴露所有端点…