LVS和keepalived群集

news2024/9/20 8:46:58

LVS和keepalived群集

    • 一、keepalived概述:
      • 1.keepalived服务的重要功能:
      • 2.高可用故障切换转移原理:
      • 3.keepalived实现原理剖析:
      • 4.keepalived体系主要模块及作用:
      • 5.keepalived的工作原理:
    • 二、部署LVS和keepalived群集:
      • 1.配置负载调度器(主、备相同) (192.168.174.12、192.168.174.13):
      • 2.配置节点服务器:
      • 3.测试验证:
    • 三、总结:
      • 1.keepalived的功能:
      • 2.keepalived的使用:
      • 3.小结:

一、keepalived概述:

1.keepalived服务的重要功能:

(1)管理LVS负载均衡器软件:keepalived可以通过读取自身的配置文件,实现通过更底层的接口,直接管理LVS配置及服务的启动,停止功能,这会使LVS应用更健康。

(2)支持故障自动切换:

① 两台主机同时安装keepalived并启动服务,当启动的时候,master主机获得所有资源且对用户提供请求服务,当角色backup的主机作为master的热备,当主机master挂了,出现故障时,backup将自动接管master主机所有工作。包括接管VIP资源及相应资源服务。

② 当master主机故障修复后,又会自动接管回他原来处理的工作。backup则同时释放,master主机失效时接管的工作,此时两台主机将恢复最初启动时各自的原始角色及工作状态。

  • 抢占模式:master从故障恢复后,将VIP从backup节点中抢占过来。
  • 非抢占模式:master从故障恢复后,不抢占backup,backup升级为master后的VIP。

(3)实现LVS的健康检查:

通过keepalived_conf文件配置LVS的节点和相关参数,来实现对LVS直接管理。如果几个节点服务器同时发生故障,无法提供服务时,keepalived会将那个失效节点服务器从LVS正常转发阵列中清除出去。并将请求调度到别的节点服务器上,从而保证最终用户的访问不受影响。当故障的节点服务器修复后,keepalived又会自动将他们加入正常转发阵列中,对外面客户提供服务。

(4)实现LVS负载调度器,节点服务器的高可用性(HA):负载均衡,健康检查,故障切换,LVS+keepalived完全可以满足需求。

2.高可用故障切换转移原理:

(1)keepalived高可用服务集群之间的故障切换转移,是通过VRRP(虚拟路由冗余协议)来实现的。

(2)在keepalived服务正常工作时,主(master)节点会不断向备份(backup)节点发送(多播的方式)心跳信息,用以告诉备节点自己还活着。当主节点发生故障时,就无法再发送心跳信息。于是调用自身的接管程序,接管主节点IP资源及服务,而当主节点恢复时,备节点又会释放主节点故障时,自身接管的IP资源及服务,恢复到原来的备用角色。

3.keepalived实现原理剖析:

(1)采用VRRP热备份协议,实现linux服务器,多机器热备份功能。

(2)VRRP是针对路由器的一种热备份解决方案。

① 由多台路由器组成一个热备组,通过共用虚拟IP对外提供服务。每组只有同时只有一个主(master)提供服务,其他处于冗余状态。

② 如果当前在线的路由器失效,则根据他设置的优先级自动接替虚拟IP,继续提供服务。

4.keepalived体系主要模块及作用:

(1)模块:core,check,vrrp

(2)作用:

① core:keepalived的核心,负责主进程启动,维护全局配置文件,加载和解析。

② vrrp:实现VRRP协议。

③ check:负责健康检查,常见的检查方式。如:端口,URL。

5.keepalived的工作原理:

基于VRRP协议来实现LVS的高可用方案,可解决静态路由出现的单点故障问题。在一个LVS服务集群中通常有 主服务器(master)和备份服务器(backup)两种,但对外表现为一个虚拟IP,主服务器发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP信息时,即主服务器异常时,备份服务器自动接管虚拟IP,继续提供服务,从而保证了高可用性。

二、部署LVS和keepalived群集:

  • LVS和keepalived数据流向图:
    在这里插入图片描述

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

systemctl stop firewalld.service
setenforce 0

yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

(1)配置keeplived(主、备DR 服务器上都要设置):

cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf
......
global_defs {						#定义全局参数
--10行--修改,邮件服务指向本地
	smtp_server 127.0.0.1
--12行--修改,指定服务器(路由器)的名称,主备服务器名称须不同,主为LVS_01,备为LVS_02
	router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接
	#vrrp_strict
}
vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,(13)备为BACKUP
    state MASTER
--21行--修改,指定承载vip地址的物理接口
    interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	
    virtual_router_id 10
	#nopreempt		#如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90
    priority 100
    advert_int 1					#通告间隔秒数(心跳频率)
    authentication {				#定义认证信息,每个热备组保持一致
		auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致
        auth_pass abc123
    }
    virtual_ipaddress {				#指定群集vip地址
        192.168.174.180
    }
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.174.180 80 {
    delay_loop 6					#健康检查的间隔时间(秒)
    lb_algo rr						#指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)
    lb_kind DR
    persistence_timeout 50			#连接保持时间(秒)
    protocol TCP					#应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口
    real_server 192.168.174.15 80 {
        weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		
        TCP_CHECK {
			connect_port 80			#添加检查的目标端口
			connect_timeout 3		#添加连接超时(秒)
			nb_get_retry 3			#添加重试次数
			delay_before_retry 3	#添加重试间隔
		}
	}

	real_server 192.168.174.16 80 {		#添加第二个 Web节点的地址、端口
        weight 1
        TCP_CHECK {
			connect_port 80
			connect_timeout 3
			nb_get_retry 3
			delay_before_retry 3
		}
	}
##删除后面多余的配置##
}
192.168.174.12和13都需要配置vip(虚拟IP)
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.174.180
NETMASK=255.255.255.255

重启网卡 systemctl restart network
ifup  ens33:0 
systemctl start keepalived
ip addr              #查看虚拟网卡vip

(2)启动 ipvsadm 服务:

--192.168.174.12---

ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.174.180:80 -s rr
ipvsadm -a -t 192.168.174.180:80 -r 192.168.174.15:80 -g
ipvsadm -a -t 192.168.174.180:80 -r 192.168.174.16:80 -g


ipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived

--192.168.174.13---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm

ipvsadm -ln

(3)两台都做调整 proc 响应参数,关闭Linux 内核的重定向参数响应:

vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

sysctl -p

2.配置节点服务器:

systemctl stop firewalld
setenforce 0

yum -y install httpd
systemctl start httpd

--192.168.174.15---
echo 'this is chanyeol!' > /var/www/html/index.html

--192.168.174.16---
echo 'this is baekhyun!' > /var/www/html/index.html

vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.174.180
NETMASK=255.255.255.255

systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.174.180 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

3.测试验证:

(1)测试:

在这里插入图片描述

在这里插入图片描述

(2)主服务器关闭 keepalived 服务后再测试:

 systemctl stop keepalived

在这里插入图片描述

在这里插入图片描述

三、总结:

1.keepalived的功能:

(1)管理LVS负载均衡器软件。

(2)高可用故障切换转移。

(3)实现LVS的健康检查。

2.keepalived的使用:

keepalived 一般需要部署在多台 LVS 负载均衡器的主机上,可以通过检测及转移 VIP(虚拟 IP)的方式,确保 LVS 服务的连续性。

3.小结:

keepalived 的作用在于监控并管理服务器的运行状态,并在出现故障的情况下,实现持续高可用性和容错功能,确保 LVS 服务的连续性。keepalived 可以提高 LVS 集群的可用性和服务的稳定性,是一个非常重要的工具。

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

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

相关文章

Android JetPack深入分析DataBinding源码

前言 数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。 DataBinding支持双向绑定,数据变化的时候界面跟着变化,界面变化也同步给数据&…

华为6605AC控制器大型组网wlan pool技术应用(自动漫游)

AC命令行配置: dis current-configuration set memory-usage threshold 0 ssl renegotiation-rate 1 vlan batch 100 vlan pool vlan_pool_test vlan 11 to 12 diffserv domain default radius-server template default free-rule-template name default_free_rule …

win10通过conda安装pytorch gpu

1. 安装anaconda 到官网下载最新版的anaconda,下载对应的windows版本,地址:anaconda官网 下载后直接安装,安装完成后配置环境变量,具体可以百度anaconda安装说明。安装完成后,打开cmd,输入conda…

Leetcode - 352周赛详解

一,最长奇偶子数组 看题可知可以使用暴力求解,从头开始遍历数组,另设一个变量来记录满足条件的子数组长度的最大值,将该变量不断与新得到的子数组长度比较,最终得到子数组长度的最大值。但是这样依次遍历的话&#xff…

git 分支管理

目录 一. 理解分支 1. master分支 二. 分支的(创建,切换、合并、删除) 1.查看分支 2.创建分支 3. 切换分支 4. 合并分支 5. 删除分支 三. 合并冲突 四. 合并模式 五. bug 分支 六. 强制删除分支 一. 理解分支 1. master分支 在我们的…

省电,AMD 提交 Linux 新技术 FreeSync Panel Replay

导读AMD 近日发布了一系列补丁,为其 AMDGPU Linux 内核显卡驱动程序的显示代码 “DC” 添加了一个新功能:FreeSync Panel Replay。这个功能针对搭载 DCN v3.1.4 显示块或更新版本的 AMD Ryzen 笔记本电脑,可以在屏幕内容不变时降低功耗。 目…

关于https的加密流程简介(图解)

目录 对称加密: 非对称加密 对称加密: 在网络发展的初阶,为了保护数据安全,防止黑客攻击,我们发明了对称加密 即一把秘钥,客户端和服务器通过这把钥匙对数据进行加密/解密 理想情况下,只要没…

第163天:应急响应-后门攻击检测指南Rookit内存马权限维持WINLinux

知识点 #知识点 -网页篡改与后门攻击防范应对指南 主要需了解:异常特征,处置流程,分析报告等 主要需了解:日志存储,Webshell检测,分析思路等 掌握: 中间件日志存储,日志格式内容介绍…

Qt之QMainWindow 自定义标题栏

简述 Qt自带标题栏功能还是很强大的,但是确实不能百分百满足需求,除了丑以外还不能随意更改标题栏字体,也不能更改样式;所以为了满足自己的虚荣心让标题栏变得更加好用看好看,特地花时间做了以下测试; 支持…

MySQL:数据的增删改查

数据的增删改查 前言一、插入数据1、实际问题2、方式1:VALUES的方式添加3、方式2:将查询结果插入到表中 二、删除数据三、更新数据四、查询数据五、MySQL8新特性:计算列 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知…

Dubbo sentinel 哨兵 熔断 慢调用比例、异常比例、异常数

目录 熔断报这个错误 在调用程序中检测即可 页面配置熔断,配置在 consumer 消费端 慢调用比例规则 最大rt 比例阈值 熔断时长 最小请求数 统计时长 让流量一直降低发送 异常数量 设置30个异常数 Tps 异常数量未达到30个正常运行 设置1个效果直接连续…

git bash 命令行反应慢、卡顿

1. 在Windows11的电脑上安装了git 后,鼠标右键打开git bash here,打开窗口缓慢,输入命令也慢的要死,如果安装git的时候选择在桌面创建图标,通过桌面图标打开也是一样的 2. 最简单的ls 命令,都要停顿半秒 3.…

Spring Security OAuth2.0(4):Spring Security集成SpringBoot

文章目录 前言一、创建工程二、spring容器配置三、Servlet Context配置四、安全配置五、创建测试七、启动服务器测试 前言 \qquad Spring Boot 是一套Spring的快速开发框架,基于Spring4.0设计,使用Spring Boot开发可以避免一些繁琐的工程搭建和配置&…

d3dx9_43.dll丢失怎么解决

d3dx9_43.dll丢失的影响 当我们在运行某些需要DirectX 9支持的程序时,如果系统中缺少d3dx9_43.dll文件,就会出现错误提示,导致程序无法正常启动。这个错误提示通常会类似于“找不到d3dx9_43.dll”或“d3dx9_43.dll不存在”。 打开电脑浏览器…

剑指 Offer 37: 序列化二叉树

这道题很复杂,首先需要发现是层序遍历,因为只有层序遍历才是这个顺序,并且new就可以调用,说明这里里面就生成了一个新的String(可以new一个String),给StringBuilder初始化一个],然后…

力扣题库刷题笔记31--下一个排列

1、题目如下: 2、个人Python代码实现如下: 前几次提交错误,主要是在上面截图第19行代码,原先写的是Nums nums[:i] temp,然后本地一直能跑过,这里不做多赘述 3、个人Python代码思路: 首先来讲本…

使用springboot框架Java+vue2开发的智慧班牌系统源码,SaaS云平台前后端分离架构

智慧班牌系统可实现数字化办公,对外向学生家长提供各种服务,如:消息通知、请假管理,校园活动,学生动态,教师通讯录,学生定位等各种服务。对内向教师提供各类服务,如:班级…

SpringMVC-1

学习笔记: SpringMVC 框架 Spring Web MVC 是一种基于 Java 实现了 MVC 设计模式的请求驱动型的轻量级 Web 框架,即使用了 MVC 架构模式的思想,将 web 层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的…

[PG]查看数据库大小

查看库大小 select d."oid" as "对象ID", d."datname" as "实例名", d."owner" as "所属者",pg_catalog.pg_size_pretty(d."size") as "大小" from (select oid, datname, pg_catalog.pg_ge…

小程序根据登录的角色动态设置 tabBar

根据登录的状态来展示tabbar的名称 type1 》 供应商 》 合同 送货单 我的 type2 》 监理 》 合同 抽检单 我的 在登录之后就拿到type的值 以及登陆之后跳转到合同页面 在合同页面可以书写逻辑 onShow(){if (Number(uni.getStorageSync("type")) 2) {console.log(11…