Nginx + KeepAlived高可用负载均衡集群

news2024/7/4 6:05:07

目录

一、Keepealived脑裂现象

1.现象

2.原因

3.解决

4.预防

二、实验部署

1.两台nginx做初始化操作并安装nginx

2.四层反向代理配置

3.配置高可用

4.准备检查nginx运行状态脚本

5.开启keepalived服务并测试


一、Keepealived脑裂现象

1.现象

主服务器和备服务器都同时拥有相同的VIP

在"双机热备"高可用(HA)系统中,当联系两个节点的"心跳线"断开时(即两个节点断开联系时),本来为一个整体、动作协调的HA系统,就分裂成为两个独立的节点(即两个独立的个体)。由于相互失去了联系,都以为是对方出了故障,此时备用调度器会运转起来争做主调度器的工作,而主调度器依然保持着调度工作,两个调度的同时运转导致整个系统的紊乱。就会发生严重后果:共享资源被瓜分、两边"服务"都起不来或者两边"服务"都起来了,但同时读写"共享存储",导致数据损坏(常见如数据库轮询着的联机日志出错)

2.原因

因为主服务器和备服务器的通信中断,导致备服务器无法收到主服务器发送的VRRP报文,备服务器误认为主服务器已经故障了并通过ip命令生成VIP

硬件原因

高可用服务器各节点之间心跳线链路发生故障,导致无法正常通信
因心跳线坏了(包括断了,老化)
因网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)
因心跳线间连接的设备故障(网卡及交换机)
因仲裁的机器出问题(采用仲裁的方案)

运用配置原因

高可用服务器上开启了iptables防火墙阻挡了心跳消息传输
高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等
Keepalived配置里同一VRRP实例如果virtual_router_id两端参数配置不一致也会导致裂脑问题发生

3.解决

关闭主服务器或备服务器其中一个的keepalived服务

4.预防

方法1
如果是系统防火墙导致,则关闭防火墙或添加防火墙规则放通VRRP组播地址(224.0.0.18)的传输

方法2
如果是主备服务器之间的通信链路中断导致,则可以在主备服务器之间添加双链路通信

方法3
在主服务器使用脚本定时判断与备服务器通信链路是否中断,如果判断是主备服务器之间的链接中

断则自行关闭主服务器上的keepalived服务

方法4
利用第三方应用或监控系统检测是否发生了脑裂故障现象,如果确认发生了脑裂故障则通过第三方

应用或监控系统来关闭主服务器或备服务器其中一个的keepalived服务

二、实验部署

此实验基于以上 LVS+KeepAlived高可用负载均衡群集的部署实验为基础,将两台调度器改为

nginx服务器,其余不变

准备虚拟机

192.168.80.122(nginx服务器四层代理)

192.168.80.123(nginx服务器四层代理)

192.168.80.124(web1)

192.168.80.125(web2)

192.168.80.126(nfs共享存储)

1.两台nginx做初始化操作并安装nginx

2.四层反向代理配置

1)修改主调度器配置

stream {
    upstream backends {
         server 192.168.10.124:80;
         server 192.168.10.125:80;
     }
    server {
         listen 8080;
         proxy_pass backends;
    }
}

2)修改备调度器配置

将主调度器的nginx.conf复制过来

scp nginx.conf 192.168.10.122:'pwd'

3)浏览器测试两台nginx服务器

192.168.10.122/192.168.10.123

3.配置高可用

两台nginx服务器安装keepalived

yum install -y keepalived

4.准备检查nginx运行状态脚本

1)主服务器

#!/bin/bash
 
if ! killall -0 nginx &> /dev/null
   then
   systemctl stop keepalived
fi

 修改配置文件 keepalived.conf

2)备服务器

先做备份

 将主里的复制到备里

修改配置文件 keepalived.conf

5.开启keepalived服务并测试

1)分别开启主备两台服务器keepalived

2)浏览器测试

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

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

相关文章

喜讯 | 全视通获得珠海市第七届“市长杯”工业设计大赛三等奖

近日,在珠海市举行的第七届“市长杯”工业设计大赛颁奖典礼上,珠海全视通信息技术有限公司(以下简称“全视通”)凭借创新的“医护对讲一体终端机”产品,历经激烈的竞争和严格的评选流程,包括大赛宣传发动、…

移植案例与原理 - startup子系统之syspara_lite系统属性部件 (2)

系统属性部件syspara_lite负责提供获取与设置操作系统相关的系统属性,包括默认系统属性、OEM厂商系统属性和自定义系统属性。为满足OpenHarmony产品兼容性规范,产品解决方案需要实现获取设备信息的接口,如:产品名、品牌名、厂家名…

手持气象仪:科技与自然交汇的奇妙工具

TH-SQ5在广袤无垠的大自然中,天气总是瞬息万变,让人难以捉摸。然而,随着科技的进步,人类已经能够借助各种先进的仪器来预测和监测天气变化,其中,手持气象仪便是其中的佼佼者。 手持气象仪,顾名…

聚焦 Navicat 17 新特性 | 查询与配置的革新之处

随着 Navicat 17 的发布,引起业界热烈讨论与关注,这也标志着 Navicat 的产品力再次飞跃。新版本引入的众多创新特性极大地提升了用户在数据库管理和数据分析方面的体验,涵盖模型设计与同步、数据字典、数据分析(data profiling&am…

安卓手机删除文件怎么找回?2个方法,一键救援错过的数据

我们通过手机拍照、录音、录像、浏览网页、社交互动等方式记录和分享生活中的每一个瞬间。然而,手机中的数据也是我们最容易误删的。 当我们不小心删除了重要的文件或数据时,将给生活和工作带来不小的困扰。那么,删除文件怎么找回呢&#xf…

人脸识别系统---年龄预测

一、预测年龄 1.加载预训练的人脸检测模型 face_cascade cv2.CascadeClassifier(haarcascade_frontalface_default.xml)2.加载预训练的性别和年龄识别模型 gender_net cv2.dnn.readNetFromCaffe(deploy_gender.prototxt, gender_net.caffemodel) age_net cv2.dnn.readNet…

英语恶补ing

ing的词组都有停下来做某事的感觉了。 second hand是形容词了。 wouldnt buy这里的would是情态动词,也是助动词 助动词不能单独使用,要搭配实义动词,这样才能构成谓语 情态动词(modals)在英语中有多种作用&#xff…

Linux系统编程——网络编程

目录 一、对于Socket、TCP/UDP、端口号的认知: 1.1 什么是Socket: 1.2 TCP/UDP对比: 1.3 端口号的作用: 二、字节序 2.1 字节序相关概念: 2.2 为什么会有字节序: 2.3 主机字节序转换成网络字节序函数…

springboot + Vue前后端项目(第十七记)

项目实战第十七记 写在前面1. 个人信息1.1 Person.vue1.2 设置路由并改动Header.vue1.3 动态刷新头像1.3.1 在保存个人信息时,触发方法1.3.2 父组件Manage.vue1.3.3 再将user以prop方式传递给子组件Header.vue1.3.4 Header.vue使用user 1.4 效果图 2. 修改密码2.1 前…

《跟我一起学“网络安全”》——等保风评加固应急响应

等保风评加固应急响应 一、安全加固 背景 随着IP技术的飞速发展,一个组织的信息系统经常会面临内部和外部威胁的风险,网络安全已经成为影响信息系统的关键问题。 虽然传统的防火墙等各类安全产品能提供外围的安全防护,但并不能真正彻底的消…

每日复盘-202406017

今日关注: 20240617 六日涨幅最大: ------1--------301036--------- 双乐股份 五日涨幅最大: ------1--------301176--------- 逸豪新材 四日涨幅最大: ------1--------300868--------- 杰美特 三日涨幅最大: ------1--------301082--------- 久盛电气 二日涨幅最大…

day02论文学习:能够使大语言模型产生带有引用的文章

1.主题:Enabling Large Language Models to Generate Text with Citations(能够使大语言模型产生带有引用的文章) 引用出处: Gao, T., Yen, H., Yu, J., & Chen, D. (2023). Enabling Large Language Models to Generate Tex…

C#特性-CallerMemberName、CallerFilePath和CallerLineNumber的介绍和应用

介绍 在csharp中,CallerMemberName, CallerFilePath, 和 CallerLineNumber 是编译时常量,它们是csharp 5.0引入的特性,用于提供有关调用堆栈的信息,通常用于日志记录和调试。这些特性可以自动填充方法的参数,无需显式…

你必须知道的Linux基础知识(一)

Linux简介 类 Unix 系统 Linux 是一种自由、开放源码的类似 Unix 的操作系统 Linux 本质是指 Linux 内核 Linux 这个词本身只表示 Linux 内核,单独的 Linux 内核并不能成为一个可以正常工作的操作系统,所以Linux 出现了各种发行版。 Linux 之父 (林纳斯本纳第…

【系统架构设计师】一、计算机系统基础知识(指令系统|存储系统|输入输出技术|总线结构)

目录 一、指令系统 1.1 计算机指令 1.2 指令寻址方式 1.3 CISC 与 RISC 1.4 指令流水线 二、存储系统 2.1 分级存储体系 2.2 地址映射 2.3 替换算法 2.4 磁盘 2.4.1 磁盘结构和参数 2.4.2 磁盘调度算法 三、输入输出技术 四、总线结构 五、考试真题练习 一、指令…

-------------------------面试散文-----------------------------------

问题1:vue中动态引入图片,为什么使用require? 回答:因为动态添加的src 编译过后的文件地址和被编译过后的资源文件地址不一致,从而导致无法访问题 而使用require 返回的就是资源文件被编译后的文件地址,从…

Linux 按键输入实验

Linux 按键输入实验 1、添加 pinctrl 节点 首先修改在设备树里面添加关于按键的节点。I.MX6U-ALPHA 开发板上的 KEY 使用了 UART1_CTS_B 这个 PIN,打开 imx6ull-alientekemmc.dts,在 iomuxc 节点的 imx6ul-evk 子节点下创建一个名为“pinctrl_key”的子…

OSPF 动态路由协议(思科、华为)

#交换设备 OSPF 动态路由协议 一、基本概念 1.中文翻译:开放式最短路径优先路由协议(open shortest path first),是一个内部网关路由协议(一个自治系统内)2.也称为:链路状态路由协议&#xf…

CAD二次开发(9)- CAD中对象的实时选择

1. 点的拾取 有时候我们需要在CAD画布上实时选取起始点和结束点,然后绘制出来一条直线。实现如下: public void getPoint(){var doc Application.DocumentManager.MdiActiveDocument;var editor doc.Editor;var docDatabase doc.Database;PromptPoi…