LVS+Keepalived NGINX+Keepalived 高可用群集实战部署

Keepalived及其工作原理

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

VRRP协议(虚拟路由冗余协议)

  • 是针对路由器的一种备份解决方案
  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务
  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态
  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

工作原理:

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

一个合格的群集应该具备的特点:
1.负载均衡          用于提高群集的性能   LVS  Nginx  HAProxy  SLB  F5
2.健康检查(探针)  针对于调度器和节点服务器    Keepalived   Heartbeat
3.故障转移          通过VIP漂移实现主备切换     VRRP   脚本

健康检查(探针)常用的工作方式:

  1. 发送心跳消息 : vrrp报文    ping/pong
  2. TCP端口检查 :向目标主机的 IP:PORT 发起TCP连接请求,如果TCP连接三次握手成功则认为健康检查正常,否则认为健康检查异常
  3. HTTP URL检查::向目标主机的URL路径(比如http://IP:PORT/URI路径)发起 HTTP GET 请求方法。如果响应消息的状态码为 2XX 或 3XX,则认为健康检查正常           如果响应消息的状态码为 4XX 或 5XX,则认为健康检查异常

LVS+Keepalived 高可用群集部署

实验:配置

主DR 服务器:192.168.73.100
备DR 服务器:192.168.73.130
Web 服务器1:192.168.73.110
Web 服务器2:192.168.73.120
vip:192.168.73.15
nfs服务器 192.168.73.140

1.配置实验环境: 

systemctl stop firewalld 
systemctl disable firewalld
setenforce 0

2.配置两台web节点服务器

将nfs服务器的/share文件挂载再 /etc/share/nginx/html/zyz101目录中 

vim /etc/fstab

192.168.73.140:/share  /usr/share/nginx/html/zyz101 nfs defaults,_netdev 0 0 

mount -a

配置网卡文件

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.73.15     #指向vip
NETMASK=255.255.255.255

service network restart 或 systemctl restart network 

修改 /etc/sysctl.conf 文件

/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 #加载

设置临时路由

设置临时路由
route add -host 192.168.73.15  
或者
vim /etc/rc.local
/sbin/route add -host 192.168.73.15 dev lo:0
chmod +x /etc/rc.d/rc.local

永久加载:
vim /etc/sysconfig/static-routes
any host 192.168.73.15 dev lo:0

systemctl restart network  #重启网卡

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

yum -y install ipvsadm keepalived   #安装keepalived
modprobe ip_vs     #开启模块
cat /proc/net/ip_vs   或者  lsmod | grep ip_vs   #查看模块

开始配置keeplived
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地
	smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
	router_id LVS_01
    后面四行vrrp开头的全部删掉

         主配置global_defs 全局参数如下

vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUP
    state MASTER

--21行--修改,指定承载vip地址的物理接口
    interface ens33

--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 51

--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
        修改virtual_ipaddress {				#指定群集vip地址
        192.168.73.15
       }

--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.73.15 80
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)

--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 0			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议

--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.80.110 80 {
        weight 1					#节点的权重

--45行--删除,添加以下健康检查方式		
        TCP_CHECK {
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔

然后再real_server 添加第二个web节点的地址和端口

再删除后面的多于选项

systemctl restart keepalived
ip a  查看虚拟网卡vip地址  只有主服务器上有vip地址
systemctl restart ipvsadm
ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

验证测试;

在客户端访问 http://192.168.73.15/zyz101/test.html 
再在主服务器关闭 keepalived 服务后再测试, systemctl stop keepalived

NGINX配合keepalived实现高可用负载均衡

实验配置

主DR 服务器:192.168.73.40
备DR 服务器:192.168.73.30
Web 服务器1:192.168.73.110
Web 服务器2:192.168.73.120
vip:192.168.73.15
nfs服务器 192.168.73.140

1.配置实验环境:

systemctl stop firewalld 
systemctl disable firewalld
setenforce 0

2.配置两台nginx服务器作为负载均衡的主备服务器

 vim /etc/nginx/nginx.conf 

 在event同层块配置stream 在stream块中配置upstream 

nginx -t 
syatemctl enable --now nginx

 安装keepalived

  yum install -y keepalived.x86_64 
  cd /etc/keepalived/
  ls
  vim nginx_check.sh  #编写脚本 确保nginx服务有没有开启 没有开启就关闭keepalived
  chmod +x nginx_check.sh   #给脚本加权

如下: 

 修改keepalived主配置文件

vrrp_instance VI_1 {
    state MASTER            # 指定keepalived的角色,MASTER为主,BACKUP为备
    interface ens33         # 当前进行vrrp通讯的网络接口卡(当前centos的网卡) 用ifconfig查看你具体的网卡
    virtual_router_id 66    # 虚拟路由编号,主从要一直
    priority 100            # 优先级,数值越大,获取处理请求的优先级越高
    advert_int 1            # 检查间隔,默认为1s(vrrp组播周期秒数)
    #授权访问
    authentication {
        auth_type PASS #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_pass 1111
    }
    track_script {
        nginx_check.sh            #(调用检测脚本)
    }
    virtual_ipaddress {
        192.168.73.15           # 定义虚拟ip(VIP),可多设,每行一个
    }
}


#后面把配置lvs多余的删掉

启动keepalived和nginx 进行测试

脑裂故障

现象:主服务器和备服务器都同时拥有相同的VIP
原因:因为主服务器和备服务器的通信中断,导致备服务器无法收到主服务器发送的VRRP报文,备服务器误认为主服务器已经故障了并通过ip命令生成VIP
解决:关闭主服务器或备服务器其中一个的keepalived服务
预防:(1)如果是系统防火墙导致,则关闭防火墙或添加防火墙规则放通VRRP组播地址(224.0.0.18)的传输
          (2)如果是主备服务器之间的通信链路中断导致,则可以在主备服务器之间添加双链路通信
      (3)在主服务器使用脚本定时判断与备服务器通信链路是否中断,如果判断是主备服务器之间的链接中断则自行关闭主服务器上的keepalived服务


      (4)利用第三方应用或监控系统检测是否发生了脑裂故障现象,如果确认发生了脑裂故障则通过第三方应用或监控系统来关闭主服务器或备服务器其中一个的keepalived服务

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【云原生| K8S系列】Kubernetes Daemonset,全面指南

Kubernetes中的DaemonSet是什么? Kubernetes是一个分布式系统,Kubernetes平台管理员应该有一些功能可以在所有节点上运行特定于平台的应用程序。例如,在所有Kubernetes节点上运行日志代理。 这就是Daemonset发挥作用的地方。 Daemonset是一个原生的K…

ROS 自动驾驶多点巡航

ROS 自动驾驶多点巡航: 1、首先创建工作空间: 基于我们的artca_ws; 2、创建功能包: 进入src目录,输入命令: catkin_create_pkg point_pkg std_msgs rospy roscpptest_pkg 为功能包名,后面两个是依赖&a…

浅谈配置元件之Java默认请求

浅谈配置元件之Java默认请求 1.简介 “Java默认请求”(虽然直接名为"Java Request"更常见)是一个高级配置元件,它允许用户通过Java代码自定义请求逻辑,为测试提供了极高的灵活性和扩展性。 2.Java请求组件概述 在JM…

哪个牌子的儿童护眼灯好?五款平价护眼台灯推荐

护眼台灯在近年来成为家长和长时间使用电子设备人群关注的家电/学生产品。对于家中有孩子或经常面对电子屏幕的人士来说,很多人可能已经对这类产品有所了解并进行了购买。然而,部分家长对护眼台灯的认识还不够深入,因此尚未为孩子选择一款合适…

Illustrator 2024 mac/win版:创新设计,一触即发

Illustrator 2024是一款由Adobe公司开发的强大且全面的矢量图形设计软件,它以其卓越的性能和丰富的功能,为设计师们提供了一个高效、直观且富有创意的工作环境。 Illustrator 2024 mac/win版获取 作为一款矢量图形设计软件,Illustrator 2024…

农产品商城系统农资电商商城系统java项目jsp web项目

农产品商城系统农资电商商城系统java项目jsp web项目 会员用户可以实现:注册登录、商品信息浏览、加入购物车、加入收藏、下单支付、查看公告、查看以及留言、个人信息管理 后台管理的实现:类别管理模块、商品管理模块、会员管理模块、订单管理、退货管…

实时数据的处理一致性如何保证?

实时数据一致性的定义以及面临的挑战 数据一致性通常指的是数据在整个系统或多个系统中保持准确、可靠和同步的状态。在实时数据处理中,一致性包括但不限于数据的准确性、完整性、时效性和顺序性。 下图是典型的实时/流式数据处理的流程: 流式数据以各…

PyTorch学习9:卷积神经网络

文章目录 前言一、说明二、具体实例1.程序说明2.代码示例 总结 前言 介绍卷积神经网络的基本概念及具体实例 一、说明 1.如果一个网络由线性形式串联起来,那么就是一个全连接的网络。 2.全连接会丧失图像的一些空间信息,因为是按照一维结构保存。CNN是…

rtl8723du android5.1 6818 (蓝牙 部分)(第四部分)

系统使用的是,android5.1 , 蓝牙驱动就要使用 V5.6,而不是V5.2 了。 由于 在原来的SDK中 蓝牙使用的是 mt6620 uart 接口。 所以在移植的过程中,顺带把之前的驱动去掉。 1 关于kernel 的修改。 拷贝驱动。 修改Kconfig 修改Makefile 拷贝 uhid dirver 拷贝 uhid.c 拷贝…

无需插件脚本,IDEA配置多服务一键启动

分享本教程的初衷是本人在本地调试时业务场景中需要调用多个服务,并且每次为了找到需要启动的服务花了很多不必要的时间,我相信很多同为开发的小伙伴也有和我一样的困扰。但是学会这招后多个服务需要同时启动时仅需一键即可搞定。接下来让我们一步步设置…

IDEA:开发配置(2024版 建议收藏)

文章目录 一、下载IDEA二、开发配置2.1 Maven仓库2.2 自动导包2.3 字符编码2.4 注释颜色2.6 鼠标滚轮控制代码大小2.7 关闭自动更新2.8 主题、字体和字体大小2.9 关闭usages提示 三、常用插件3.1 chinese(中文汉化)3.2 主题插件3.2.1 One Dark Theme&…

buuctf-findKey

exe文件 运行发现这个窗口,没有任何消息 32位 进入字符串就发现了flag{ 左边红色代表没有F5成功 我们再编译一下(选中红色的全部按p) LRESULT __stdcall sub_401640(HWND hWndParent, UINT Msg, WPARAM wParam, LPARAM lParam) {int v5; // eaxsize_t v6; // eaxDWORD v7; /…

录音转文字怎么弄?用转文字工具让你快速整理会议纪要

端午节活动精彩落幕,紧接着的回顾会议也圆满结束。 在这次会议上,我们收集了许多宝贵意见,但手写记录耗时且易遗漏。为了提高效率,我们急需一款能快速准确转换会议音频为文字的软件。 那么,市面上有哪些录音转文字软…

六西格玛培训都培训哪些内容 ?

天行健六西格玛培训的内容通常涵盖多个方面,旨在帮助学员全面理解和应用六西格玛管理方法。以下是详细的培训内容概述: 一、六西格玛基础知识 引入六西格玛的概念、原理和历史,包括DMAIC(定义、测量、分析、改进、控制&#xff0…

[Python学习篇] Python输入

关键字 input 语法:input("提示信息") 特点 当程序执行到input,等待用户输入,输入完成之后才能继续向下执行。input接收用户输入后,一般存储到变量中,方便使用。input会把接收到的任意用户输入的数据都当做…

数据结构习题(快期末了)

一个数据结构是由一个逻辑结构和这个逻辑结构上的一个基本运算集构成的整体。 从逻辑关系上讲,数据结构主要分为线性结构和非线性结构两类。 数据的存储结构是数据的逻辑结构的存储映像。 数据的物理结构是指数据在计算机内实际的存储形式。 算法是对解题方法和…

(Git)多人协作1

文章目录 前言总结 前言 目标:master分支下file.txt文件新增“aaa”,“bbb” 实现:开发者1新增“aaa”,开发者2新增“bbb” 条件:在同一个分支下协作完成 实际开发过程中,每个用户都与属于自己的码云账户,如果想要进…

C语言----字符函数和字符串函数

在编程的过程中,我们要经常处理字符和字符串,为了方便操作字符和字符串,c语言标准库中提供的一系列库函数,接下来我们就开始学习与认识他们 1.字符分类函数 c语言中有一系列的函数是专门做字符分类的,也就是一个字符…

多模态融合:CLIP

CLIP的全称是Contrastive Language-Image Pre-Training,中文是对比语言-图像预训练,是一个预训练模型,简称为CLIP。CLIP一共有两个模态,一个是文本模态,一个是视觉模态,分别对应了Text Encoder和Image Enco…

资源不是问题,极空间全自动小雅Alist以及Emby全家桶部署教程,同时实现自动更新

资源不是问题,极空间全自动小雅Alist以及Emby全家桶部署教程,同时实现自动更新 哈喽小伙伴,我是Stark-C~ 在上次更新了极空间虚拟机教程之后,终于有小伙伴催更了小雅Alist的搭建方案。作为当前市面最强、最大、最全的影视资源合…