LVS+Keepalived 群集及搭建

news2024/11/20 1:24:08

文章目录

  • 一.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 0

yum -y install nfs-utils rpcbind
mkdir /opt/blue /opt/summer
chmod 777 /opt/blue /opt/summer

vim /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.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
#10行修改,邮件服务指向本地
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
#12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01
   router_id LVS_01
   vrrp_skip_check_adv_addr
#14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
  #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}
#定义VRRP热备实例参数
vrrp_instance VI_1 {
#20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER
#21行--修改,指定承载vip地址的物理接口
    interface ens33
#22行--修改,指定虚拟路由器的ID号,每个热备组保持一致
#nopreempt		#如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
    virtual_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 1
      TCP_CHECK {
                        connect_port 80
                        connect_timeout 3
                        nb_get_retry 3
                        delay_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.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_02
   vrrp_skip_check_adv_addr
  #vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
   auth_type PASS
        auth_pass 000000
    }
    virtual_ipaddress {
        192.168.198.180
    }
}

virtual_server 192.168.198.180 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

    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
                }
        }
  real_server 192.168.198.14 80 {
        weight 1
      TCP_CHECK {
                        connect_port 80
                        connect_timeout 3
                        nb_get_retry 3
                        delay_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 0

yum -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.html

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.198.180
NETMASK=255.255.255.255

service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.198.180 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

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.coloradmin.cn/o/726281.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【C++】提前声明(Forward declaration)好处

C中提前声明(Forward declaration)好处小结: 减少编译依赖:通过提前声明,可以减少对头文件的依赖。这样可以降低编译时间,因为编译器不需要查看完整的定义,而仅需要知道类型的名称和成员函数的…

利用langchain-ChatGLM实现基于本地知识库的问答应用

目录 1 原理 2 开发部署 2.1 安装环境 2.2 加载本地模型 刷B站的时候,无意中看到吴恩达的一个langchain的教程,然后去github上搜了下,发现别人利用langchain和chatGLM做的基于本地知识库的问答应用挺好的,学习下。 1 原理 基…

yolov8-mnn C++部署

权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/zaibeijixing/article/details/131581809 ———————————————— 目录 准备工作 1、MNN编…

【Android】CheckBox的自定义样式和使用

需求 在登录页面。我们需要有一个复选框,让用户进行勾选,同意我们的流氓政策和协议,不然就不让用。 实现效果 未选择 已选择 我们知道,这个CheckBox的默认样式是一个正方形,现在改成一个圆形的话,首先需…

我的创作纪念日——我与CSDN的1024天

今天是在CSDN创作的第1024天,是一个非常有意义的天数,故写下此篇文章以表纪念之意。 机缘 我为什么会在CSDN写文章呢,那滴从很久很久以前说起。记得是大一的时候,我们的组原课程的授课老师在一次课堂上问起我们,问我…

AIGC - Easy Diffusion (Stable Diffusion) 图像生成工具的环境配置

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/131524075 版本v2.5.41 Stable Diffusion 图像生成工具是一种基于深度学习的技术,可以从随机噪声中生成高质量的图像&#x…

HFSS仿真T型波导学习笔记

HFSS仿真T型波导 文章目录 HFSS仿真T型波导1、求解器设置2、建模3、激励方式设置4、边界条件设置5、扫频设置6、设计检查,仿真分析7、数据后处理 设计要求: 仿真工作频率为10GHz的T型波导 1、求解器设置 模式驱动求解 2、建模 整个T型波导结构分为2…

【NAS群晖drive异地访问】远程连接drive挂载电脑硬盘

文章目录 前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用 2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用 3. 结语 转载自cpolar极点云文章:【群…

java飞起基础----黑马程序员

阿里代码命名规约 【强制】方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格,必须遵从驼峰形式。正例: localValue / getHttpMessage() / inputUserId【强制】类名使用 UpperCamelCase 风格,必须遵从驼峰形式,…

在外远程访问NAS威联通(QNAP)-免费内网穿透

文章目录 前言1. 威联通安装cpolar内网穿透2. 内网穿透2.1 创建隧道2.2 测试公网远程访问 3. 配置固定二级子域名3.1 保留二级子域名3.2 配置二级子域名 4. 使用固定二级子域名远程访问 转载自cpolar极点云文章:无需公网IP,在外远程访问NAS威联通QNAP【内…

企业产品指导手册怎么弄成在线版本的啊?

企业产品指导手册作为企业宣传推广和产品销售的重要工具,传统上通常是以纸质形式发放给客户。但随着互联网技术的快速发展,越来越多的企业开始将产品指导手册转化为在线版本,以便更好地满足客户的需求。本文将介绍如何将企业产品指导手册弄成…

优维DevOps全新产品——双态部署重磅上线

优维又一全新产品上线啦! 最近,优维召开了一场发布会,宣布「DevOps全新产品——双态部署」重磅上线。发布会现场,重新审视了DevOps市场现状,深度剖析了行业面临的挑战与机遇,同时也深入浅出的揭晓了“双态…

图像增广:强化深度学习的视觉表现力

目录 摘要: 1. 图像增广简介 2. 图像增广的原理 3. 常见的图像增广技术 4. 如何在实际项目中应用图像增广 5.实际应用 摘要: 当今,深度学习已经在计算机视觉领域取得了令人瞩目的成就。图像增广作为一种数据处理技术,让我们…

【Cache】Redis的高可用与持久化

文章目录 一、Redis 高可用1. 概念2. 高可用技术以及作用2.1 持久化2.2 主从复制2.3 哨兵2.4 集群 二、Redis 持久化1. 持久化的功能2. Redis 持久化方式 三、RDB 持久化1. 概述2. 触发条件2.1 手动触发2.2 自动触发2.3 其他自动发机制 3. 执行流程4. 启动时加载 四、AOF 持久化…

【UEFI实战】UEFI图形显示(字符输出)

HII Font 接下来介绍EFI_HII_FONT_PROTOCOL,它在UEFI代码中完成了字符到像素的转换,本节主要介绍这个转换关系,它的实现代码在edk2\MdeModulePkg\Universal\HiiDatabaseDxe\HiiDatabaseDxe.inf中,除了EFI_HII_FONT_PROTOCOL&…

【Axure教程】多选树穿梭选择器

多选树在有分层的领域是经常用到的,例如不同城市下的门店、不同部门的员工等等,用多选树就可以让我们在不同层级快速挑选到对应的对象。 今天作者就教大家在Axure中如何制作多选树穿梭选择器的原型模板,我们会以不同部门之间挑选员工位案例。…

leetcode极速复习版-第二章链表

目录 链表 203.移除链表元素 707.设计链表 206.反转链表 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 面试题 02.07. 链表相交 链表部分总结 链表 203.移除链表元素 题意:删除链表中等于给定值 val 的所有节点。 示例 1: 输入&a…

基于Java在线电影评价系统设计实现(源码+lw+部署文档+讲解等)

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…

【Linux】十分钟理解软硬链接

目录 1.磁盘的物理结构2.磁盘的物理存储结构3.文件系统4.硬链接4.14.2 5.软链接6.三种时间 1.磁盘的物理结构 盘片:一片两面,有一摞盘片。磁头:一面一个磁头,一个磁头负责一面的读取(磁头是一起动的)。马达…

二叉树 — 返回二叉树最大距离

题目: 给定二叉树头结点head,任何两个节点之间都有距离,求整棵二叉树最大距离。 二叉树如下图所示,假设从x到b,中间节点只能走一次,我们人为规定距离就是整条路径的节点数量,所以距离是3&#x…