Keepalived+Lvs(dr)调度器主备配置小实验

目录

前言

一、实验拓扑图

二、配置LVS(dr)模式

三、配置调配器热备

四、测试

总结



前言

Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。

Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。它使用VRRP(Virtual Router Redundancy Protocol)协议来实现服务器之间的冗余和故障恢复,确保服务的连续性。Keepalived还可以配合其他负载均衡软件(如LVS)一起使用,以提供更可靠的高可用性解决方案。

LVS(Linux Virtual Server)是一种用于构建高性能和可扩展的负载均衡集群的软件。LVS使用IP负载均衡技术将客户端的请求分发到多个后端服务器上,提高了整个系统的处理能力和吞吐量。LVS支持多种负载均衡算法(如轮询、加权轮询、最少连接等),可以根据实际需求灵活配置。LVS的工作模式有多种,其中DR(Direct Routing)模式是一种常用的模式,它通过修改数据包的目的MAC地址实现请求的转发,提高了转发的效率。

综合起来,使用Keepalived+LVS(dr)的解决方案可以实现高可用性和负载均衡的效果。Keepalived负责监控服务器的健康状态,并在主服务器发生故障时自动切换到备份服务器,保证服务的连续性。而LVS负责将客户端的请求分发到多个后端服务器上,提高系统的性能和可扩展性。通过结合使用这两个软件,可以构建出稳定可靠的高可用性和负载均衡的系统架构。


一、实验拓扑图

按要求准备好下列的设备

二、配置LVS(dr)模式

不多说了,开整!

1、配置2台web节点

##安装nginx
yum -y install epel
yum -y install nginx
##分别书写两台web服务器的测试页面
echo nginx1 > /usr/share/nginx/html/index.html
echo nginx2 > /usr/share/nginx/html/index.html
##启动nginx
systemctl start nginx

测试

2、调整web节点的APR参数

##调整ARP参数
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
##是它生效	
sysctl -p

3、配置web节点虚拟IP

##配置虚拟IP地址
cd /etc/sysconfig/network-scripts/
cp ifcfg-lo ifcfg-lo:0
vim ifcfg-lo:0
##插入
DEVICE=lo:0
IPADDR=192.168.115.200
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback:0
##重启网卡并添加路由
systemctl restart network
route add -host 192.168.115.200/32 dev lo:0

4、配置主调配器192.168.115.128

##设置APR参数
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
##配置网卡
cd /etc/sysconfig/network-scripts/
cp ifcfg-ens33 ifcfg-ens33:0
##插入
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.115.200
PREFIX=24
##安装ipvsadm
yum -y install ipvsadm
##加载查看模块
modprobe ip_vs
lsmod |grep ip_vs
##启动ipvsadm
touch /etc/sysconfig/ipvsadm
systemctl start ipvsadm.service 
##添加策略
ipvsadm -A -t 192.168.115.200:80 -s rr
ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.131:80 -g
ipvsadm -a -t 192.168.115.200:80 -r 192.168.115.134:80 -g
##保存策略
ipvsadm-save > /etc/sysconfig/ipvsadm
##重启网卡
systemctl restart network

浏览器验证

三、配置调配器热备

1、来到我们的负载调度器在两台调度器上下载keepalived

192.168.115.128作为主

192.168.115.131作为备

yum -y install keepalived

 2、配置主的keepalived

vim /etc/keepalived/keepalived.conf
####此处我就设置了一个虚拟IP192.168.115.200一个虚拟IP对应着我2个真实的web服务器IP
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL1       ##名字(主从不要一样)vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTER              ##身份为主interface ens33           ##网卡virtual_router_id 51      ##主从 id要一致priority 100              ##优先级advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.115.200     ###虚拟IP}
}virtual_server 192.168.115.200 80 {         ##虚拟ip,下面对应的是2台web的真实ipdelay_loop 6lb_algo rr                              ##轮询模式lb_kind DR                              ##这里我们是dr模式下进行的,所以设置为drpersistence_timeout 50protocol TCPreal_server 192.168.115.131 80 {        ##web1真实IPweight 1SSL_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.115.134 80 {       ##web2真实IPweight 1SSL_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}
#########如果想配置多个虚拟IP,那么参照上面的方法照猫画虎###########

3、配置从负载调配器(建议使用scp把主的传输过来后修改比较省事)安装ipvsadm服务

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.locfailover@firewall.locsysadmin@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_DEVEL2          ###服务名vrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUP                ###角色interface ens33virtual_router_id 51priority 90advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.115.200}
}virtual_server 192.168.115.200 80 {delay_loop 6lb_algo rrlb_kind DRpersistence_timeout 50protocol TCPreal_server 192.168.115.131 80 {weight 1SSL_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}real_server 192.168.115.134 80 {
weight 1SSL_GET {url {path /}connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

启动分别启动主备的keepalived并查看主备的ipvsadm策略,ip

##启动
systemctl start keepalived
##查看
ipvsadm -Ln

主ip

 策略

备IP

策略

 在这里说明一下,只要配置的keepalived是对的,启动keepalived后会自己根据配置文件生成策略

4、页面测试

 这里访问是没什么问题的,并且是轮询,我们抓个包看看只有200的地址符合DR模式

 四、测试

宕掉主调配器,观查是否还能实现轮询

查看备调度器IP,IP漂移说明主备生效了

 访问网页,可以访问并且轮询正常

 抓包,与之前一样

 ok,配置成功


总结

这里主要理解的是keepalived与ipvsadm的关系;一般情况下启动了keepalived后ipvsadm也会启动,并且会根据keepalived的文件生成策略;相对而言keepalived的配置文件很长需要理解记忆,可以参考我上面的配置,这里主要就是理解配置文件,理清思路,在本实验中配置了大量的IP地址容易混淆。

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

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

相关文章

身为程序员,你有哪些提高写代码效率的工具?

首先,每个程序员都是会利用工具的人,也有自己囊里私藏的好物。独乐乐不如众乐乐,今天笔者整理了3个辅助我们写代码的黑科技,仅供参考。如果你有更好的工具,欢迎评论区分享。 1、Google/Stackoverflow——搜索解决方案的…

【运维】linux安装oracle客户端、安装mysql

文章目录 一. 下载二. 配置1. 配置环境变量2. 配置tnsnames.ora文件 三. 测试1. 链接语法2. 连接测试 四. 通过rpm安装mysql 一. 下载 下载地址 基础包 连接工具 二. 配置 上传、解压、配置环境变量 这里安装在/data01目录下 unzip instantclient-sqlplus-linux.x64-19.2…

Spring Boot(Vue3+ElementPlus+Axios+MyBatisPlus+Spring Boot 前后端分离)【三】

😀前言 本篇博文是关于Spring Boot(Vue3ElementPlusAxiosMyBatisPlusSpring Boot 前后端分离)【三】的分享,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我…

keepalived+lvs(DR)

目录 一、作用 二、安装 1、在192.168.115.3 和192.168.115.4 上安装ipvs和keepalived: 2、配置keepalived 3、查看lvs节点状态 4、web节点配置 5、在web节点上调整ARP参数 6、配置虚拟IP地址与添加回环路由 7、配置nginx网页文档 8、启动服务 9、测试 一…

上位机采集8通道模拟量模块数据

模拟量模块和上位机的配合使用可以实现对模拟量数据的采集、传输和处理。下面是它们配合使用的一般步骤:1. 连接模拟量模块:将模拟量模块与上位机进行连接。这通常涉及将模拟量模块的输入通道与被监测的模拟信号源连接起来,如传感器、变送器等…

14. Docker中实现CI和CD

目录 1、前言 2、什么是CI/CD 3、部署Jenkins 3.1、下载Jenkins 3.2、启动Jenkins 3.3、访问Jenkins页面 4、Jenkins部署一个应用 5、Jenkins实现Docker应用的持续集成和部署 5.1、创建Dockerfile 5.2、集成Jenkins和Docker 6、小结 1、前言 持续集成(CI/CD)是一种…

18-使用钩子函数判断用户登录权限-登录前缀

钩子函数的两种应用: (1). 应用在app上 before_first_request before_request after_request teardown_request (2). 应用在蓝图上 before_app_first_request #只会在第一次请求执行,往后就不执行, (待定,此属性没调试通过) before_app_request # 每次请求都会执行一次(重点…

【Three.js + Vue 构建三维地球-Part One】

Three.js Vue 构建三维地球-Part One Vue 初始化部分Vue-cli 安装初始化 Vue 项目调整目录结构 Three.js 简介Three.js 安装与开始使用 实习的第一个任务是完成一个三维地球的首屏搭建,看了很多的案例,也尝试了用 Echarts 3D地球的模型进行构建&#xf…

设计模式中的关系

文章目录 一、依赖概念 二,关联概念 三、聚合概念 四、组合概念 五、实现概念 六、继承概念 图总结整体总结 一、依赖 概念 依赖是一种临时使用关系,代码层体现为作为参数。 具体体现:依赖者调用被依赖者的局部变量、参数、静态方法&#…

docker项目实战

目录 1、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。 1)拉取mysql:5.6和owncloud镜像 2)后台运行容器 3)通过ip:端口的方式访问owncloud 2、安装搭建私有仓库 Harbor 1)首先准备所需包 2)安装h…

Lua与C++交互(一)————堆栈

Lua与C交互(一)————堆栈 Lua虚拟机 什么是Lua虚拟机 Lua本身是用C语言实现的,它是跨平台语言,得益于它本身的Lua虚拟机。 虚拟机相对于物理机,借助于操作系统对物理机器(CPU等硬件)的一…

HTML番外篇(四)-HTML5新增元素-CSS常见函数-理解浏览器前缀-BFC

一、HTML5新增元素 1.HTML5语义化元素 在HMTL5之前,我们的网站分布层级通常包括哪些部分呢? header、nav、main、footer ◼ 但是这样做有一个弊端: 我们往往过多的使用div, 通过id或class来区分元素;对于浏览器来说这些元素不…

雅思作文复习

目录 我使用的词汇: 上升: 下降: 波动: 保持: 幅度 大变化: 小变化: 雅思评价标准改变 小作文一般花费20分钟,我觉得自己能在18分钟解决是最好 考生在雅思考试中的小作文&a…

嵌入式系统存储体系

一、存储系统概述 主要分为三种:高速缓存(cache)、主存和外存。 二、高速缓存Cache 高速缓冲存储器中存放的是当前使用得最多得程序代码和数据,即主存中部分内容的副本,其本身无自己的地址空间。在嵌入式系统中Cac…

别在说自己不知道docker了,全文通俗易懂的给你说明白docker的基础与底层原理

docker介绍 Docker 是一个开源的应用容器引擎,基于Go语言进行开发实现并遵从Apache2.0 协议开源,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作…

Redis.conf详解

Redis.conf详解 配置文件unit单位对大小写不敏感 包含 网络 bind 127.0.0.1 # 绑定的ip protected-mode yes # 保护模式 port 6379 # 端口设置通用 GENERAL daemonize yes # 以守护进程的方式运行 默认为no pidfile /var/run/redis_6379.pid #如果以后台的方式运行&#xff…

python+django+mysql旅游景点推荐系统-前后端分离(源码+文档)

系统主要采用Python开发技术和MySQL数据库开发技术以及基于OpenCV的图像识别。系统主要包括系统首页、个人中心、用户管理、景点信息管理、景点类型管理、景点门票管理、在线反馈、系统管理等功能,从而实现智能化的旅游景点推荐方式,提高旅游景点推荐的效…

javaee idea创建maven项目,使用el和jstl

如果使用el表达式出现下图问题 解决办法 这是因为maven创建项目时&#xff0c;web.xml头部声明默认是2.3&#xff0c;这个默认jsp关闭el表达式 办法1 在每个需要用到el和jstl的页面的上面加一句: <% page isELIgnored"false" %> 方法2 修改web.xml文件开…

睿思BI旗舰版V5.3正式发布

发布时间&#xff1a;2023-7-20 主要更新内容: 1.增加3D地图功能 2.增加水球图 3.增加扇形图&#xff0c;在数据大屏 - 自定义组件中定义。 4.增加指标引导线功能&#xff0c;在数据大屏 - 自定义组件中定义。 5.详情页增加回调函数功能。 6.大屏/仪表盘模版下载&#xff0c;…

【C++】C++ 引用详解 ⑨ ( 常量引用初始化 | C / C++ 常量分配内存的四种情况 )

文章目录 一、常量引用初始化1、使用 " 普通变量 " 初始化 " 常量引用 "2、使用 " 常量 / 字面量 " 初始化 " 常量引用 "3、C / C 常量分配内存的四种情况4、代码示例 - 常量引用初始化 一、常量引用初始化 1、使用 " 普通变量 &…