LVS+keepalived——高可用集群

lvs+keepalived:高可用集群

keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,于是keepalived这个软件。实现的是调度器的高可用。但是:keepalived不是专门为lvs集群服务的,也可以做其他代理服务器的高可用。

lvs的高可用集群:主调度器和备调度器(可以有多个)一主两备 一主一备

主调度器能够正常运行时,由主调度器进行后端真实服务器的分配处理,其余的备用调度器处在冗余状态。

不参与集群的运转,主调度器出现了故障无法运行,备调度器才会承担主调度器的工作。一旦主调度器恢复工作,继续由主调度器进行处理,备调度器又成了冗余。

VRRP:keepalived是基于vrrp协议实现lvs服务的高可用。解决了调度器单节点的故障问题

VRRP协议:提高网络路由器的可靠性开发的一种协议

选举出主和备,预先设定好了主和备的优先级。主打优先级较高,备的优先级低。一旦开启服务器,优先级高的,会自定抢占主的位置,

VRRP组播通信:224.0.0.18 VRRP协议当中的主备服务器通过组播地址进行通信,交换主备服务器之间的运行状态。主服务器会周期性的发送VRRP报文消息,以告知其他备服务器,主服务器现在的状态。

主备切换:主服务器发生故障或者不可达,VRRP协议会把请求转移到备服务器,通过组播地址,VRRP可以迅速的通知其他服务器发生了主备切换,确保新的主服务器可以正常的处理客户端的请求。

故障恢复:一旦主服务器恢复通信,由组播地址进行通信,发现在恢复的主服务器优先级更高,会抢占原主服务器的位置,成为主服务器,调度和接受请求。

lvs-DR模式结合keepalived

keepalived的体系模块:

全局模块:core模块,负责整个keepalived启动加载和维护

VRRP模块:实现vrrp协议,包括主备切换

check模块:负责健康检查,检查后端真实服务器的健康检查。配置真实服务器的模块当中

Test1:主调度器 192.168.120.10

Test2:备调度器 192.168.120.70

后端真实服务器1:192.168.120.30

后端真实服务器2:192.168.120.40

VIP地址:192.168.120.100    客户端:192.168.120.60

关闭防火墙

配置主调度器test1:

安装服务

yum -y install ipvsadm keepalived

修改配置文件

 vim /etc/keepalived/keepalived.conf

smtp_server 127.0.0.1

 主备服务的id,主和备的id不能一致

 router_id LVS_01

取消严格遵守vrrp协议功能,不取消vip无法连接

#vrrp_strict

标识身份,主备:MASTER/BACKUP

state MASTER

指定VIP地址的物理接口

interface ens33

虚拟路由器的id号

 virtual_router_id 10

发送报文的间隔时间

advert_int 1

指定集群的vip地址

 virtual_ipaddress {

        192.168.120.10  }

健康检查的间隔时间

 delay_loop 6

负载均衡的调度算法

lb_algo rr

指定lvs集群的工作方式,要大写

 lb_kind DR

连接保持50秒

 persistence_timeout 50

后端真实服务器的轮询权重

 real_server 192.168.120.30 80 {

        weight 1

检测目标的端口号

connect_port 80

连接超时时间

connect_timeout 3

重试的次数

 nb_get_retry 3

重试的间隔描述

 delay_before_retry 4

刷新

systemctl restart keepalived.service

查看策略

ipvsadm -ln

配置备服务器

远程复制

scp root@192.168.120.10:/etc/keepalived/keepalived.conf /etc/keepalived/

修改配置文件

vim /etc/keepalived/keepalived.conf

刷新

systemctl restart keepalived.service

配置后端真实服务器1

Yum安装nginx

vim /usr/local/nginx/html/index.html

This is test1

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

DEVICE=lo:0

ONBOOT=yes

IPADDR=192.168.120.100

NETMASK=255.255.255.255

刷新

ifup ifcfg-lo:0

标识

route add -host 192.168.120.100 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

配置后端真实服务器2

跟上面操作一致

客户端查看

停止主调度器服务

备调度器

恢复主调度器

备调度器

nginx1:192.168.120.30 主

nginx2:192.168.120.40 备

nginx3:192.168.120.60 客户端

主备调度器

关闭防火墙

安装服务

yum -y install keepalived

主调度器:

 cd /etc/keepalived/

cp keepalived.conf keepalived.conf.bak

vim keepalived.conf

vim /opt/check_nginx.sh

 chmod 777 check_nginx.sh

 systemctl restart keepalived.service

vim /usr/local/nginx/html/index.html

备调度器

scp root@192.168.120.30:/etc/keepalived/keepalived.conf /etc/keepalived/

vim /etc/keepalived/keepalived.conf

vim /opt/check_nginx.sh

chmod 777 check_nginx.sh

systemctl restart keepalived.service

vim /usr/local/nginx/html/index.html

主调度器关闭nginx

脑裂:主和备同时拥有VIP地址。在高可用系统当中,联系两个节点的心跳线,本来是一体的,动作协调的高可用系统。心跳线断开后,分裂成了两个独立的个体。主备之间失去了联系,都以为是对方出现了故障。两个调度器就像脑裂人一样

开始抢占主的位置,抢占VIP。主也有VIP,备也有VIP,导致整个集群失败。

软件层面:

  1. 配置文件
  2. tcpdump抓包分析

tcpdump -i ens33 vrrp -n

动态获取vrrp协议的所有网络数据包

重启

网络层面:

高可用服务器之间心跳线检测失败。主备之间无法进行通信。

硬件层面:

连接主备之间的心跳线老化

网卡或网卡的驱动失效,IP地址配置冲突

防火墙没有配置心跳线消息的传输通道。导致检测失败

后端服务器的配置问题,心跳方式不同,心跳广播冲突,软件BUGG。

如何解决keepalived脑裂的问题:

  1. 硬件:准备两条心跳线,这样断了一跳,依然能够传送心跳。
  2. 设置防火请一定要让心跳的消息通过
  3. 监控软件,实时检测(zabbix)

dev:开发环境 开发人员专用

sit:测试环境 测试人员使用(开发,运维)

pre:预生产环境 运维和开发(和最终的生产环境保持一致)

prd:生产环境(面向用户的环境)

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

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

相关文章

基于SSM的进销存管理系统设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

Vue typescript项目配置eslint+prettier

1.安装依赖 安装 eslint yarn add eslint --dev安装 eslint-plugin-vue yarn add eslint-plugin-vue --dev主要用于检查 Vue 文件语法 安装 prettier 及相关插件 yarn add prettier eslint-config-prettier eslint-plugin-prettier --dev安装 typescript 解析器、规则补充 …

Spring-IOC-@Import的用法

1、Car.java package com.atguigu.ioc; import lombok.Data; Data public class Car {private String cname; }2、 MySpringConfiguration2.java package com.atguigu.ioc; import org.springframework.context.annotation.Bean; import org.springframework.context.annotatio…

树莓派的的串口通信协议

首先,回顾一下串口的核心知识点,也是面试重点: 串口通信通常使用在多机通讯中串口通信是全双工的决定串口通信的成功与否的是 数据格式 和 波特率数据格式:1. 数据位 2.停止位 3. 奇偶校验位 树莓派恢复串口 回忆前几节树莓派刷机…

Vue3 配置全局 scss 变量

variables.scss $color: #0c8ce9;vite.config.ts // 全局css变量css: {preprocessorOptions: {scss: {additionalData: import "/styles/variables.scss";,},},},.vue 文件使用

AI大发展:人机交互、智能生活全解析

目录 ​编辑 人工智能对我们的生活影响有多大 人工智能的应用领域 一、机器学习与深度学习 二、计算机视觉 三、自然语言处理 四、机器人技术 五、智能推荐系统 六、智能城市和智能家居 ​编辑 自己对人工智能的应用 自己的人工智能看法:以ChatGPT为例 …

watcheffect的用法

需求&#xff1a;监听用户给金额字段改大了还是改小了 let previousAmount: number | null null; watchEffect(() > {for (let i 0; i < projectList.value.length; i) {const currentAmount Number(projectList.value[i].je);if (previousAmount ! null) { //不是空…

一种全新且灵活的 Prompt 对齐优化技术

并非所有人都熟知如何与 LLM 进行高效交流。 一种方案是&#xff0c;人向模型对齐。 于是有了 「Prompt工程师」这一岗位&#xff0c;专门撰写适配 LLM 的 Prompt&#xff0c;从而让模型能够更好地生成内容。 而另一种更为有效的方案则是&#xff0c;让模型向人对齐。 这也是…

BE节点经常挂掉:[IO_ERROR]failed to list /proc/27349/fd/: No such file or directory

最近BE节点经常挂掉 Caused by: java.lang.RuntimeException: Failed to execute internal SQL. org.apache.doris.common.UserException: errCode 2, detailMessage There is no scanNode Backend available.[10031: not alive] OriginStatement{originStmtSELECT * FROM _…

分布式任务调度-XXL-job

目录 源码仓库地址 前置环境 docker容器环境配置 连接linux数据库&#xff0c;并创建任务调度所用到的数据库xxl-job。 用到的表sql 打开映射网址 后端配置使用任务调度 依赖 yml配置 使用架构 config配置 job使用 快速入门使用 任务调度执行器 任务调度执行管理​编…

ck 配置 clickhouse-jdbc-bridge

背景 ck可以用过clickhouse-jdbc-bridge技术来直接访问各数据库 安装配置 需要准备的文件 clickhouse-jdbc-bridge https://github.com/ClickHouse/clickhouse-jdbc-bridge 理论上需要下载源码然后用mavne打包&#xff0c;但提供了打包好的&#xff0c;可以推测用的是mave…

USART的标准库编程

使用USART与计算机通信 电脑上只有usb端口 没有TX 和RX需要一个USB转TTL电平模块来实现通信 芯片C8T6中只有三个UASRT 选其中一个UASRT来通信即可 那么如何定位那个USART的TX 和RX引脚呢&#xff1f; 方式1 查找最小系统板引脚分布图 查找USART1的引脚 RTS CTS是硬件流控 CK…

iOS 17.0 YYText 崩溃处理

YYText&#xff0c;发现在iOS 17上运行会崩溃&#xff0c;触发了系统的断言&#xff1a; UIGraphicsBeginImageContext() failed to allocate CGBitampContext: size{382, 0}, scale3.000000, bitmapInfo0x2002. Use UIGraphicsImageRenderer to avoid this assert. 查了下 ap…

C练习题_15

一、单项选择题(本大题共20小题&#xff0c;每小题2分&#xff0c;共40分。在每小题给出的四个备选项中&#xff0c;选出一个正确的答案,并将所选项前的字母填写在答题纸的相应位置上。) 在下列说法中&#xff0c;&#xff08;&#xff09;是正确的。 A.C程序从第一个函数开始…

Cache学习(1):常见的程序运行模型多级Cache存储结构

0 背景&#xff1a;常见的程序运行模型&#xff08;为什么要Cache&#xff09; 主存&#xff1a;Main Memory&#xff0c;硬件实现为RAM&#xff0c;产品形态&#xff1a;DDR&#xff08;例如&#xff1a; DDR3、DDR4等&#xff09;磁盘设备&#xff1a;Flash Memory&#xff…

IDEA如何将本地项目推送到GitHub上?

大家好&#xff0c;我是G探险者。 IntelliJ IDEA 是一个强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它支持多种编程语言和工具。它也内置了对Git和GitHub的支持&#xff0c;让开发者可以轻松地将本地项目推送到GitHub上。以下是一个操作手册&#xff0c;描述了…

39.组合总和

原题链接&#xff1a;39.组合总和 思路&#xff1a; 依旧是遍历整棵树&#xff0c;此时终止条件变为总和sum大于给定的target值 或者等于target 就进行回溯 全代码&#xff1a; class Solution { public:vector<vector<int>> result;vector<int> path;voi…

Ubuntu下载离线安装包

旧版Ubuntu下载地址 https://old-releases.ubuntu.com/releases/ 下载离线包 sudo apt-get --download-only -odir::cache/ncayu install net-tools下载snmp离线安装包 sudo apt-get --download-only -odir::cache/root/snmp install snmp snmpd snmp-mibs-downloadersudo a…

idea开发jface、swt环境搭建

背景 jface、swt很难找到合适的maven仓库来下载配套的版本idea对eclipse套件不友好eclipse的windowbuilder固然很好&#xff0c; 但本人更喜欢idea编程&#xff0c; 互相取长补短 下载套件 进入swt下载界面 以当前最新的4.29为例&#xff0c; 点击&#xff1a; 找到全部并…

【brpc学习实践四】异步请求案例详解

注意 使用的还是源码的案例&#xff0c;添加个人注解。在前面的篇章我们讲解了客户端、服务端rpc构造的基本流程及同步、异步的案例基础之后&#xff0c;再理解此案例就容易了。 想直接看案例实现请看&#xff1a; server端实现 client端实现 服务端要点概览 controller ser…