LVS+keepalived 群集

news2024/9/20 9:37:46

Keepalived及其工作原理

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

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

Keepalived体系主要模块及其作用

keepalived体系架构中主要有三个模块,分别是core、check和vrrp

●core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
●vrrp模块:是来实现VRRP协议的。
●check模块:负责健康检查,常见的方式有端口检查及URL检查

部署LVS+Keepalived 高可用群集

主DR 服务器:192.168.126.22
备DR 服务器:192.168.126.23
Web 服务器1:192.168.126.24
Web 服务器2:192.168.126.25
vip:192.168.126.88
客户端:192.168.126.21

实验原理图

实验步骤

LVS 部署

1.配置负载调度器(主、备相同)

systemctl stop firewalld.service
setenforce 0

#安装keepalived
[root@zy2 ~]# yum -y install keepalived  ipvsadm   #安装keepalived 和ipvsadm

[root@zy2 ~]# modprobe ip_vs    #加载ip_vs模块
[root@zy2 ~]# cat /proc/net/ip_vs
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port Forward Weight ActiveConn InActConn

[root@zy2 ~]# cd /etc/keepalived/
[root@zy2 keepalived]# ls
keepalived.conf
[root@zy2 keepalived]# cp keepalived.conf keepalived.conf.bak #备份

[root@zy2 keepalived]# vim keepalived.conf   #修改配置文件
! Configuration File for keepalived

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_01       #指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02   下面的vrrp_strict等四行内容删除
}

vrrp_instance VI_1 {
    state MASTER        #设为主   zy3设为BACKUP
    interface ens33           #物理网卡ens33
    virtual_router_id 51      #虚拟路由id 要和BACKUP一致
    priority 100              #优先级100   BACKUP设为90小于100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111       #密码可以默认
    }
    virtual_ipaddress {
        192.168.126.88         #VIP
    }
}
virtual_server 192.168.126.88 80 {   #设置VIP的策略
    delay_loop 6
    lb_algo rr              #算法轮询
    lb_kind DR               #调度器DR模式
    persistence_timeout 0    #不进行连接超时等待
    protocol TCP

    real_server 192.168.126.24 80 {      #添加节点服务器1的RIP
        weight 1
        TCP_CHECK {                       #添加健康检查方式
            connect_port 80              #添加检查的目标端口
            connect_timeout 3             #添加连接超时(秒)
            nb_get_retry 3                #添加重试次数
            delay_before_retry 3          #添加重试间隔
        }
    }
    real_server 192.168.126.25 80 {       #添加节点服务器2的RIP
        weight 1
        TCP_CHECK {
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        }
    }
}                                         #下面的内容不用可以删除

[root@zy2 keepalived]# systemctl start keepalived
[root@zy2 keepalived]# ip addr   #查看虚拟网卡vip

 

 而BACKUP的虚拟网卡VIP则没有起

启动 ipvsadm 服务

[root@zy2 ~]# ipvsadm-save > /etc/sysconfig/ipvsadm
[root@zy2 ~]# systemctl start ipvsadm   #启动 ipvsadm 服务
[root@zy2 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.126.88:80 rr
  -> 192.168.126.24:80            Route   1      0          0         
  -> 192.168.126.25:80            Route   1      0          0

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

[root@zy2 ~]# vim /etc/sysctl.conf
#末行添加  关闭转发和icmp重定向
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

[root@zy2 ~]# sysctl -p    #加载配置

2.配置节点服务器(两台节点服务器配置一样)

[root@zy4 ~]# systemctl stop firewalld
[root@zy4 ~]# setenforce 0
[root@zy4 ~]# yum -y install httpd
[root@zy4 ~]# systemctl start httpd


[root@zy4 ~]# echo 'this is test1 web!' > /var/www/html/index.html
#节点服务器2中写入test2以作区分

[root@zy4 ~]# vim /etc/sysconfig/network-scripts/ifcfg-lo:0  #配置lo接口
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.126.88
NETMASK=255.255.255.255

[root@zy4 network-scripts]# ifup lo:0
[root@zy4 network-scripts]# ifconfig lo:0
lo:0: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 192.168.126.88  netmask 255.255.255.255
        loop  txqueuelen 1  (Local Loopback)

[root@zy4 network-scripts]# route add -host 192.168.80.188 dev lo:0

修改内核参数

[root@zy4 network-scripts]# 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

[root@zy4 network-scripts]# sysctl -p

测试:客户端去访问VIP192.168.126.88

 此时已实现负载均衡,然后关闭主调度器的keepalived,查看是否还是能正常访问

客户端再次访问 

总结:

Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?

Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。
然后再对比所有服务器的优先级priority,谁的优先级高谁是最终的主服务器。
优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址。

keepalived的抢占与非抢占模式

抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP。
非抢占模式俩节点state必须为backup,且必须配置nopreempt
注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了

keepalived的脑裂现象

主备调度器都出现VIP(因为主备服务器之间的网络中断导致备服务器接收不到主服务器发送的vrrp通告报文。)

解决方案:

  1. 主备服务器之间使用双链路通信
  2. 通过脚本来实时监控主备的网络状态,然后再根据脚本逻辑采取措施(关掉主服务器的keepalived服务)
  3. 通过第三方监控系统来实时监控主备服务器及网络状态,然后再根据情况采取措施(关掉主服务器的keepalived服务)

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

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

相关文章

链接伪类选择器(上)

知识点&#xff1a; 代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta http-equiv"X-UA-Compatible" content"IEedge"> <meta name"viewport" c…

java方法的重载

java中有很多方法是可以通过重载的方式实现的&#xff0c;这是 Java语言的一大特色&#xff0c;但是同时也为开发人员带来了一些麻烦&#xff0c;不知道怎么去调用这些方法&#xff0c;而且还容易出现一种情况就是&#xff1a;明明已经调用过了一个方法&#xff0c;但为什么又要…

Ansys Zemax | 如何模拟双折射偏振器件

这篇文章介绍了什么是双折射现象、如何在OpticStudio中模拟双折射 (birefringence)、如何模拟双晶体的双折射偏振器以及如何计算偏振器的消光比。&#xff08;联系我们获取文章附件&#xff09; 什么是双折射现象 一般的光学材料都是均匀的各向同性的&#xff0c;也就是说无论光…

等级保护、风险评估和安全测评分别是什么?

2022-06-17 15:17 迈入“等保2.0时代”以后&#xff0c;我国对于等级保护的要求更为严格和具体。等级保护、风险评估和安全测评这三个词&#xff0c;也因此总是出现在人们的视野之中&#xff0c;还总是被混淆。那这三者究竟分别是什么呢&#xff1f;如何区分它们&#xff1f;它…

如何以产品经理思维打造一所高品质学校?

学校的建设与管理真不是一件容易事。2023年03月17日&#xff0c;山东菏泽市曹县一家长投诉某中学课业繁重&#xff0c;孩子经常写作业到半夜&#xff1b;2023年4月4日&#xff0c;张先生在华龙网重庆网络问政平台投诉万州区某中学伙食差&#xff0c;指出“发灰的洋葱&#xff0…

本地运行 minigpt-4

1.环境部署 参考官方自带的README.MD&#xff0c;如果不想看官方的&#xff0c;也可参考MiniGPT-4&#xff5c;开源免费可本地进行图像对话交互的国产高级大语言增强视觉语言理解模型安装部署教程 - openAI 当然&#xff0c;所有的都要按照作者说明来&#xff0c;特别是版本号…

练好基本功,优秀工程师成长第一步

计算机基础作用 举例1&#xff1a;若是我们要开发大规模应用系统&#xff0c;如电商服务系统&#xff0c;要考虑很多 1. 这个服务应用要用什么语言来编写&#xff1f; 2. 是采用单体进程&#xff0c;还是用多个进程来协同工作&#xff1f; 3. 如何管理长期使用的内存空间&a…

( 栈和队列) 155. 最小栈 ——【Leetcode每日一题】

❓155. 最小栈 难度&#xff1a;中等 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。…

WiFi电子标签简介

WiFi电子标签系统概述&#xff1a; WIFI电子办公标牌系统是一种先进的无线自动更新系统&#xff0c;取代了传统的纸质标牌/桌牌需要人工更换的方式。WIFI ESL系统只需要一个电子办公标志设备&#xff0c;让它在办公或会议空间工作&#xff0c;快速改变人员或会议信息。这是一种…

Docker -compose 安装使用

命令 总结 yum install docker-compose-plugin docker compose version docker compose up docker compose up -d相关的配置。 创建docker-conpose 目录&#xff0c;并创建docker-compose.yml文件 version: 3 services: mysql: image: mysql restart: always co…

【基础算法】二叉树相关题目

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本系列是个人整理为了秋招算法的&#xff0c;整理期间苛求每个知识点&#xff0c;平衡理解简易度与深入程度。 &#x1f970;来源&#xff1a;材料主要源于代码随想录进行的&#xff0c;每个算法代码参考leetcode高赞回答和…

[ICLR 2023] Token Merging: Your ViT But Faster

Contents IntroductionToken MergingExperimentsImage ExperimentsDesign choicesModel SweepComparison to Other WorksVisualizations Video ExperimentsAudio Experiments References Introduction 作者提出了一种 token 合并方法 Token Merging (ToMe)&#xff0c;能够在不…

【Tasking_IDE】-1-如何让目录下的C文件不参与编译

案例背景&#xff1a; 当您在使用Tasking TriCore Eclipse IDE集成开发环境编译时&#xff0c;是不是有时遇到这样一个问题&#xff1a;导入了一个算法/驱动文件夹&#xff0c;但文件夹里面不是所有的C文件都要参与编译&#xff0c;于是您可能想到把这些“不参与编译的文件”删…

Kafka3.0.0版本——生产者 数据去重

目录 一、数据传递语义1.1、至少一次1.2、最多一次1.3、精确一次 二、幂等性2.1、幂等性原理2.2、重复数据的判断标准2.3、如何使用幂等性 三、生产者 事务3.1、Kafka事务原理3.2、Kafka事务注意事项3.3、Kafka事务的5个API3.3.1、初始化事务API3.3.2、开启事务API3.3.3、在事务…

CMake Tutorial Step1

CMake Tutorial Step1 参考资料&#xff1a;Step 1: A Basic Starting Point — CMake 3.26.3 Documentation Tutorial工程&#xff1a;官方Tutorial工程 开发环境&#xff1a;CLion CMake简介 方便起见直接问New Bing。 为什么要学习CMake&#xff1f; CMake的最大特点和…

微服务---分布式搜索引擎 elasticsearch基础

分布式搜索引擎 elasticsearch基础 0.学习目标 1.初识elasticsearch 1.1.了解ES 1.1.1.elasticsearch的作用 elasticsearch是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 例如&#xff1a; 在GitH…

centos7操作yum命令失败

前言设置网卡开机自动启动设置国内dns服务器系统修改CentOS-Base.repo中的地址 前言 刚安装完的CentOS7的系统&#xff0c;发现无法使用yum命令进行更新&#xff0c;在更新的时候会出现下面这种内容&#xff0c;为此问题有以下这些解决方案可以尝试。 One of the configured r…

两段视频合成一个视频用什么软件 怎么把两段视频合成一段看不出来

两段视频合成一个视频用什么软件&#xff1f;无论是两段视频的合成&#xff0c;还是三段视频的合成&#xff0c;用视频编辑软件都能轻松搞定。但怎么把两段视频合成一段看不出来&#xff1f;这就比较考验制作者的功力了&#xff0c;不过我们还是有捷径的&#xff0c;下面一起来…

new和delete

目录 malloc: 开辟失败&#xff1a;返回值为空指针 new: 内置类型&#xff1a; 申请一个int对象&#xff08;开辟一块存储int类型数据的空间&#xff0c;只能存储一个int数据&#xff09;&#xff1a; 申请5个int对象&#xff08;开辟一块存储int类型数据的空间&#xff…

Blender3.5 边的操作

目录 1. 边操作1.1 边的细分 Subdivide1.2 边的滑移 Edge Slide1.3 边的删除1.4 边的溶解 Dissolve1.5 边线倒角 Bevel1.6 循环边 Loop Edges1.7 并排边 Ring Edges1.8 桥接循环边 1. 边操作 1.1 边的细分 Subdivide 在边选择模式&#xff0c;选中一条边&#xff0c;右键&…