LVS+keepalive高可用集群

news2024/9/29 23:24:15

keepalive简介

keepalive为LVS应用延伸的高可用服务。lvs的调度器无法做高可用。但keepalive不是为lvs专门集群服务的,也可以为其他的的代理服务器做高可用。
keepalive在lvs的高可用集群,主调度器和备调度器(可以有多个) 一主两备或一主一备。

VRRP: keepalived是基于vrrp协议实现Ivs服务的高可用。解决了调度器单节点的故障问题。
VRRP协议:提高网络路由器的可靠性开发的一种协议。

vrrp工作原理
·选举出主和备,预先设定主备的优先级。主的优先级较高,备的优先级低,一旦开启服务器,优先级高的,会自定抢占主的位置。
·VRRP组播通信: 224.0.0.18 VRRP协议当中的主备服务器通过组播地进行通信,交换主备服务器之间的运行状态。主服务会周期性的发送vrrp协议报文,告诉备:主的当前状态。
·主备切换:主服务器发生故障,或者不可达,VRRP协议会把请求转义到备服务器。通过组播地址,VRRP可以迅速的通知其他服务器发生了主备切换,确保新的主服务器可以正常处理客户端的请求。
·故障恢复: 一旦主服务器恢复通信,由组播地址进行通信,发现在恢复的主服务器优先级更高,会抢占原主服务器的位置,成为主服务器,调度和接受请求。

keepalive工作原理

主调度器能够正常运行时,由主调度器进行后端真实服务器的分配处理。其余的备用调度器处于冗余状态。
不参与集群的运转。主调度器故障无法运行,备调度器才会承担主调度器的工作。
一旦主调度恢复工作,继续由主调度器进行处理,备调度器又成了冗余。

keepalive的体系模块:

全局模块:core模块,负载整个keepalived启

动加载和维护
                  VRRP模块:实现vrrp协议,主备切换
                  check模块:负责后端真实服务器健康检查,配置真实服务器的模块当中。


安装keepalived                yum -y install keepalived ipvsadm

vim /etc/keepalived/keepalived.conf下配置说明

·邮箱地:smtp_server
·主备服务的id,主和备的id不能一致:router_id_01
·取消严格遵守vrrp协议功能,不取消VIP无法连接:#vrrp_strict
·标识主身份:state MASTER
·指定vip地址的物理接口:interface ens33
·虚拟路由器的id号:virtual_router_id 10
·发送报文的间隔时间:advert_int 30
·指定集群的vip地址:virtual_ipaddress
·健康检查的间隔时间:delay_loop 6		单位s
·负载均衡的调度算法:lb algo rr
·指定lvs集群的工作方式(要大写):lb_kind NAT
·连接保持:persistence_timeout 50 	单位s
·VIP模块:virtual server 192.168.233.100 80 
·后端真实服务器的轮询权重:real_server 192.168.233.30 80 
·检测目标的端口号:connect_port 80
·连接超时时间:connect_timeout 3		单位s
·重试的次数:nb_get_retry 3
·重试间隔秒数:delay_before_retry 4

实验(LVS-DR)-keepalive

主192.168.10.10

备192.168.10.40

web服务器

192.168.10.20----nginx

192.168.10.30----nginx

客户端访问:任意一台

主192.168.10.10

yum -y install keepalived ipvsadm
vim /etc/keepalived/keepalived.conf
.............

smtp_server 127.0.0.1

router_id LVS_01

vrrp_strict 注释掉

interface ens33

persistence_timeout 0

virtual_ipaddress {
        192.168.10.99
}
修改上面的,并删掉最后一个下面所有的内容,并添加以下内容

virtual_server 192.168.10.99 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.10.20 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4

        }
}
real_server 192.168.10.30 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
    }
}
}

.............

systemctl restart keepalived.service
systemctl restart ipvsadm.service
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service
ipvsadm -ln
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service


vim /etc/sysctl.conf 
.....................

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

.....................

sysctl -p 立即加载



备192.168.10.40

yum -y install keepalived ipvsadm
vim /etc/keepalived/keepalived.conf
.............

smtp_server 127.0.0.1

router_id LVS_02

priority 90

vrrp_strict 注释掉

state BACKUP

interface ens33

persistence_timeout 0

virtual_ipaddress {
        192.168.10.99
}
修改上面的,并删掉最后一个下面所有的内容,并添加以下内容

virtual_server 192.168.10.99 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    persistence_timeout 0
    protocol TCP

    real_server 192.168.10.20 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4

        }
}
real_server 192.168.10.30 80 {
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 4
    }
}
}

.............

systemctl restart keepalived.service
systemctl restart ipvsadm.service
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service
ipvsadm -ln
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadm.service


vim /etc/sysctl.conf 
.....................

net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

.....................

sysctl -p 立即加载

web服务器

192.168.10.20

192.168.10.30

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
.........................

DEVICE=lo:0
IPADDR=192.168.10.99
NETMASK=255.255.255.255
ONBOOT=yes

.........................

重启lo:0网卡
ifup ifcfg-lo:0 

绑定vip
route add -host 192.168.10.99 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

结果

停止主的
systemctl stop ipvsadm.service
systemctl stop keepalived.service

vip漂移到备服务器
ip addr 看

页面访问服务正常

keepalive基于nginx高可用

主192.168.10.10--nginx

yum -y install keepalived
vim /etc/keepalived/keepalived.conf
...................
global_defs模块中
   smtp_server 127.0.0.1
   router_id LVS_01
   #vrrp_strict
    

在global和vrrp_instance之间加
.......
vrrp_script check_nginx {
        script "/opt/check_nginx.sh"
        interval 5
}
.......

vrrp_instance模块中

virtual_ipaddress {
   192.168.10.99
}
vrrp_instance内最后加
track_script {
   check_nginx
}


...................

vrrp_instance模块后的都删除

chmod 777 /opt/check_nginx.sh
systemctl restart keepalived.service
传递nginx的状态
vim /opt/check_nginx.sh

#!/bin/bash
/usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ]
then
        systemctl stop keepalived
fi

备192.168.10.20--nginx

yum -y install keepalived
vim /etc/keepalived/keepalived.conf
...................
global_defs模块中
   smtp_server 127.0.0.1
   router_id LVS_02
   #vrrp_strict
    

在global和vrrp_instance之间加
.......
vrrp_script check_nginx {
        script "/opt/check_nginx.sh"
        interval 5
}
.......

vrrp_instance模块中

state BACKUP
priority 90
virtual_ipaddress {
   192.168.10.99
}
vrrp_instance内最后加
track_script {
   check_nginx
}


...................

vrrp_instance模块后的都删除

chmod 777 /opt/check_nginx.sh
systemctl restart keepalived.service
传递nginx的状态
vim /opt/check_nginx.sh

#!/bin/bash
/usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ]
then
        systemctl stop keepalived
fi

结果:

当主故障后切换到备,主要恢复需要

主故障
systemctl stop nginx.service


主恢复需要
systemctl restart nginx.service
systemctl restart keepalived.service

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

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

相关文章

【全国数据】全国各省点状地名(村)矢量数据下载

文章目录 全国数据预览分省数据预览 全国数据预览 分省数据预览 青海省: 甘肃省: 安徽省: 湖南省:

freeCAD不合并导入step文件

1.问题描述 在使用freeCAD导入step文件的时候,一开始会导入成一个成体,想隐藏某些部件,却只能隐藏整个装配体,就是图示位置无法展开。 2.解决方法 找到首选项把第5步里面的不打钩就可以了。 3.freeCAD的用处 这个主要的用处还是用…

NOIP2023模拟1联测22 爆炸

NOIP2023模拟1联测22 爆炸 题目大意 ​ 自己看 思路 当一个炸弹被引爆后,它的方向是固定的。如果被竖着引爆,那么应该选择横着引爆,否则选择竖着引爆,这是显然 的。 考虑对于每个炸弹 ( i , j ) (i , j) (i,j) 将第 i i i 行…

前端视角看 Docker : 加速开发和部署的利器

Docker 是一个开源的容器化平台,大大的降低了运维相关的工作。在日常开发中,中小公司很少有专职运维,所以在开发中通过使用 Docker,前端相关工作可以更加高效地构建、打包、部署和运行应用程序。此系列将从前端的视角出发&#xf…

LeetCode刷题---简单组(二)

文章目录 🍒题目一 14. 最长公共前缀🍒解法一🍒find函数 🍒题目二 13. 罗马数字转整数🍒解法一🍒题目三 9. 回文数🍒解法一 🍒题目一 14. 最长公共前缀 编写一个函数来查找字符串数组…

使用kettle进行正则表达式组件日志分析

使用Kettle(Pentaho Data Integration)进行日志分析是一种常见的数据处理任务,特别是当你需要从大量的日志文件中提取和分析数据时。以下是一般步骤: 准备数据源: 确保你有日志文件的数据源,这可以是本地文…

公司内部文件、文档、设计图、源代码、音视频等核心文件数据自动智能透明加密保护,防泄密软件 | 防止外泄系统

天锐绿盾是一种企业级数据加密解决方案,可以实现对办公终端电脑上的文件、文档、设计图、源代码、音视频等数据的透明加密,以防止数据泄露。 天锐绿盾的工作原理是采用内核级透明加密技术,在不影响员工正常工作的情况下,对需要保护…

Vulnhub系列靶机---mhz_cxf: c1f

靶机文档::mhz_cxf: c1f 下载地址:Download (Mirror): 网卡配置 靶机开机后按住shift,出现界面如图,按e键进入安全模式: 找到ro,删除该行后边内容,并将ro 。。。修改为&#xff1a…

Python绘制玫瑰花

程序员的节日到了,给各位程序员花一朵玫瑰吧。 from matplotlib import cm import matplotlib.pyplot as plt import numpy as npfig plt.figure() ax fig.add_subplot(projection3d) [x, t] np.meshgrid(np.array(range(25)) / 24.0, np.arange(0, 575.5, 0.5)…

EtherCAT从站转modbus RTU协议转换网关用modbus slave测试的方法

远创智控YC-ECT-RTU通讯网关具有EtherCAT从站功能,主要功能是将EtherCAT网络和Modbus-RTU网络连接起来。在使用方面,本网关可以连接到EtherCAT总线中作为从站使用,也可以连接到Modbus-RTU总线中作为主站或从站使用。这款通讯网关还支持多种不…

百度Comate代码助手全新上线SaaS服务,助力企业释放10倍软件生产力

❤️作者主页:小虚竹 ❤️作者简介:大家好,我是小虚竹。2022年度博客之星评选TOP 10🏆,Java领域优质创作者🏆,CSDN博客专家🏆,华为云享专家🏆,掘金年度人气作…

什么样的系统能够有效提升维修效率?报修工单管理系统哪家的好用?

维修派单系统的主要目标是为企业或组织提供一种更有效的方式来管理他们的维修任务。这个系统可以用来处理各种维修任务,包括分配任务、跟踪任务的执行情况以及评估任务的完成情况等等。通过使用这个系统,管理者可以全面地了解维修人员的工作情况&#xf…

【王道代码】【2.3链表】d4

关键字: AB归并,递增变递减(原表结点)、AB归并求交集到C(不破坏AB)、AB求交集到A

MySQL执行计划分析

执行计划中的常见的列的解释: type system/const :用户主键索引或者唯一索引查询时,只能匹配 1 条数据。一般可以对 sql 查询语句优化成一个常量,那么 type 一般就是 system 或者 const,system 是 const 的一个特例&…

“第六届世界声博会暨2023科大讯飞全球1024开发者节”开幕式回顾及舆情问题

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 2023年10月24日,笔者全程参加了在安徽合肥奥体中心举办的“第六届世界声博会暨2023科大讯飞全球1024开发者节”开幕式主论坛,下面来回顾一下。 一、会议简介 会议主题:“…

windows下使用springboot3.0 和 使用grallVM虚拟机

一:准备环境: JDK17 下载地址 :https://www.oracle.com/java/technologies/downloads/ GrallVM 虚拟机 下载地址:https://www.graalvm.org/downloads/ Gradle 7.5 or Maven 3.5 (以上版本) visual stud…

SolidworksSimulation完成对压力容器的强度分析

如何通过使用SolidworksSimulation完成对压力容器的分析并查看实 体的膜片应力强度以及弯曲应力强度,操作简单易学,让我们进入到操作界面。 我们以罐体底部实体模型为例,这里已经提前设置好了材料。 点击新算例,选择静应力分析 由…

【三维重建-PatchMatchNet复现笔记】

【三维重建-PatchMatchNet复现笔记】 1 突出贡献2 数据集描述3 训练PatchMatchNet3.1 输入参数3.2 制定数据集加载方式 1 突出贡献 在计算机GPU和运行时间受限的情况下,PatchMatchNet测试DTU数据集能以较低GPU内存和较低运行时间,整体误差位列中等&#…

Mac运行Docker报错

Mac运行Docker报错 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点…

利用扰动模型计算旋转矩阵的导数例题

深蓝学院《自动驾驶与机器人中的SLAM技术》第一次课习题 这里直接贴出图片了,懒得打字了。