部署LVS+Keepalived高可用集群

目录

一、keepalived概述

1.1管理LVS负载均衡软件

1.2VRRP(Virtual Router Redundancy Protocol) 原理

二、keepalived服务的重要功能

2.1自动切换(failover)

2.2健康检查(health checking)

2.3高可用(HA)

三、L4和L7负载均衡的区别

四、keepalive故障自动切换

4.1抢占与非抢占

五、keeplived体系主要模块及作用

5.1core模块

5.2check模块

5.3VRRP模块

六、Keepalived工作原理

6.1工作原理

6.2工作原理图

七、部署LVS+Keepalived高可用集群

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

5.2.配置节点服务器

 5.3测试验证

5.3.1在客户端访问http://192.168.14.180

5.3.2 模拟破坏master服务器


一、keepalived概述

keepalived是一个基于VRRP(Virtual Router Redundancy Protocol)协议的守护程序,用于实现高可用性的服务和故障转移。它可用于在一组服务器中选择一个主服务器来处理客户端请求,并在主服务器发生故障时自动将工作切换到备用服务器。

1.1管理LVS负载均衡软件

keepalived可以通过读取自身的配置文件,实现通过更高层次的接口,直接管理LVS配置以及服务的启动、停止功能,这会使LVS应用更简单。

1.2VRRP(Virtual Router Redundancy Protocol) 原理

VRRP  是一种网络协议,它提供了虚拟路由器冗余机制,使得在一组路由器中的一个可以作为主要路由器,而其他路由器则处于备份状态。

二、keepalived服务的重要功能

2.1自动切换(failover)

keepalived可以根据事先设定好的优先级规则和负载均衡规则,在主备服务器之间进行IP地址的漂移,实现自动切换和高可用性。

2.2健康检查(health checking)

keepalived可以定时对服务器进行健康检查,包括检测服务器的存活状态、服务的响应时间等,同时也可以自定义检测规则并进行报警。

2.3高可用(HA)

keepalived可以监测系统资源的可用性,如网络连接、服务器负载等,并根据事先设置的规则进行故障转移,确保服务的高可用性。

三、L4和L7负载均衡的区别

L4通过TCP协议建立连接之后的IP:port接收请求和基于IP:port端口进行转发

L7通过TCP协议建立三次握手,通过HTTP协议传输数据,七层负载均衡器,需要根据HTTP协议传输过来的请求,进行对应的跳转,这个跳转是先基于TCP协议的传输(IP:port)+ HTTP的传输。

如果是四层,协议只有TCP就是IP:port的转发

如果是七层,TCP和三次握手,长连接 + HTTP规范的传输数据

四、keepalive故障自动切换

① 两台同时安装好keepalived并且启动服务

当启动的时候master主机获得所有资源并且对用户提供服务(请求)当角色Backup的主机作为master热备,当master出现故障,Backup主机自动接管master主机所有工作

② 当master主机故障修复后,就会自动接管回它原来的所有工作,同时Backup主机则释放原master主机的所有工作,此时两台主机恢复到初始角色以及工作状态

4.1抢占与非抢占

抢占:master恢复后,将VIP从Backup节点中抢占过来,回复自己master工作

非抢占:master恢复后,不抢占Backup目前的状态,Backup升级为master继续工作

五、keeplived体系主要模块及作用

5.1core模块

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

5.2check模块

负责健康检查,常见的检查方式,比如端口URL

5.3VRRP模块

实现VRRP协议

六、Keepalived工作原理

6.1工作原理

1. keepalived在每台服务器上运行,每个服务器都有一个虚拟IP地址。
2. 在服务器集群中,keepalived通过VRRP协议通信并选举出一个主服务器和若干备用服务器。
3. 主服务器接收并处理来自客户端的请求,备用服务器处于待命状态。
4. keepalived通过检测主服务器的健康状态(如ping测试、端口检测等),可以快速发现主服务器的故障。
5. 一旦主服务器故障,keepalived会自动将工作切换到备用服务器,备用服务器接管主服务器的虚拟IP地址。
6. 备用服务器成为新的主服务器,继续处理客户端请求。
7. 当主服务器恢复正常时,keepalived会将工作切换回主服务器,原主服务器变成备用服务器。

6.2工作原理图

七、部署LVS+Keepalived高可用集群

主DR 服务器:ens33(192.168.14.101) ipvsadm 、keepalived(热备) 虚拟IP:192.168.14.180 网卡 ens33:0

备DR 服务器:ens33(192.168.14.102) ipvsadm 、keepalived 虚拟IP:192.168.14.180网卡 ens33:0

Web 服务器1:ens33 192.168.14.103 lo:0(VIP)192.168.14.180

Web 服务器2:ens33 192.168.14.17 lo:0(VIP)192.168.14.180

vip:192.168.14.188

客户端:192.168.14.100

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

systemctl stop firewalld.service
setenforce 0yum -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_02router_id LVS_01
--14行--注释掉,取消严格遵守VRRP协议功能,否则VIP无法被连接#vrrp_strict
}vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUPstate MASTER
--21行--修改,指定承载vip地址的物理接口interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	virtual_router_id 10#nopreempt		#如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
--23行--修改,指定优先级,数值越大优先级越高,这里设置主为100,备为90priority 100advert_int 1					#通告间隔秒数(心跳频率)authentication {				#定义认证信息,每个热备组保持一致auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致auth_pass abc123}virtual_ipaddress {				#指定群集vip地址192.168.14.180}
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.14.180 80 {delay_loop 6					#健康检查的间隔时间(秒)lb_algo rr						#指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)lb_kind DRpersistence_timeout 50			#连接保持时间(秒)protocol TCP					#应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口real_server 192.168.14.103 80 {weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		TCP_CHECK {connect_port 80			#添加检查的目标端口connect_timeout 3		#添加连接超时(秒)nb_get_retry 3			#添加重试次数delay_before_retry 3	#添加重试间隔}}real_server 192.168.14.104 80 {		#添加第二个 Web节点的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}##删除后面多余的配置##
}192.168.14.101和192.168.105都需要配置vip(虚拟IP)
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.180
NETMASK=255.255.255.255重启网卡 systemctl restart network
ifup  ens33:0 systemctl start keepalived
ip addr						#查看虚拟网卡vip(2)启动 ipvsadm 服务
--192.168.14.101---ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.14.180:80 -s rr
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.103:80 -g
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.104:80 -gipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived--192.168.14.102---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.14.180:80 -s rr
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.103:80 -g
ipvsadm -a -t 192.168.14.180:80 -r 192.168.14.104:80 -gipvsadm -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 = 0sysctl -p

5.2.配置节点服务器

systemctl stop firewalld
setenforce 0yum -y install httpd
systemctl start httpd--192.168.14.103---
echo 'this is zkr web!' > /var/www/html/index.html--192.168.14.104---
echo 'this is benet web!' > /var/www/html/index.htmlvim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.14.180
NETMASK=255.255.255.255service network restart 或 systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.14.180 dev lo:0vim /etc/sysctl.confnet.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 = 2sysctl -p

 5.3测试验证

5.3.1在客户端访问http://192.168.14.180

5.3.2 模拟破坏master服务器

 这时,虚拟ip会漂移到backup服务器,使服务正常运行

主服务器

 backup服务器

 主服务器修好后,虚拟ip会再漂移到master服务器

 

 

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

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

相关文章

决策树分析特征重要性可视化无监督特征筛选

from sklearn.tree import DecisionTreeClassifierdtc DecisionTreeClassifier() # 初始化 dtc.fit(x_train, y_train) # 训练# 获取特征权重值 weights dtc.feature_importances_ print(>>>特征权重值\n, weights)# 索引降序排列 sort_index np.argsort(weights…

idea goland 插件 struct to struct

go-struct-to-struct idea goland 插件。实现自动生成 struct 间 转换代码。 https://plugins.jetbrains.com/plugin/22196-struct-to-struct/ IntelliJ plugin that Automatically generate two struct transformations through function declarations Usage define func …

在当今这个信息时代,互联网中的隐私越来越重要,究竟是隐私换便利还是花钱护隐私呢?

一、互联网生存指南:通过哪些方法来加强个人信息保护? 网上注册内容时不要填写个人私密信息:互联网时代用户数和用户信息量已然和企业的盈利关联了起来,企业希望尽可能多地获取用户信息。但是很多企业在数据保护上所做的工作存在缺…

golang arena

go 1.20新特性 goland设置 Enviroment 定义环境变量 Go tool arguments 就是go build 的参数 Program arguments 启动参数 GOEXPERIMENTarenas -tags goexperiment.arenas //go:build goexperiment.arenaspackage mainimport ("arena""fmt""net/…

【朱颜不曾改,芳菲万户香。AIGC人物图片创作---InsCode Stable Diffusion 美图活动一期】

【朱颜不曾改,芳菲万户香。AIGC人物图片创作 ---InsCode Stable Diffusion 美图活动一期】 本文目录: 一、 Stable Diffusion 模型在线使用 1.1、模板运行环境配置 1.2、运行InsCode平台的Stable Diffusion模板 二、Stable Diffusion主界面功能 2.…

QT day1简单登录界面

widget.cpp文件代码&#xff1a; #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {qDebug()<<this->size();qDebug()<<this->frameSize();this->setFixedSize(50…

力扣 | 双指针技巧

前文回顾&#xff1a;力扣 | 数组和字符串简介 力扣LeetBook&#xff1a;数组和字符串 文章目录 &#x1f4da;双指针技巧&#xff1a;情形一&#x1f449;反转字符串&#x1f449;数组拆分I&#x1f449;两数之和 II - 输入有序数组 &#x1f4da;双指针技巧&#xff1a;情形二…

使用OpenCV检测两张图片的关键点并计算关键点的描述子

#include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/features2d/features2d.hpp> #include <opencv2/highgui/highgui.hpp>

大数据之路—数据架构体系及模型设计

大数据之路—数据架构体系及模型设计 一、阿里巴巴数据整合及管理体系二、维度设计1、基本概念2、规范化和反规范化3、维度整合4、维度拆分5、维度变化6、特殊维度 三、事实表设计1、事实表特性2、事实表类型3、事实表设计原则4、事务事实表5、周期快照事实表的注意事项6、累计…

初识TCP/IP网络编程

学习自《TCP/IP网络编程》 客户端&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> void error_handling(char * message);int main(int…

Codeforces Round 883 (Div. 3)

A. Rudolph and Cut the Rope 只需要按照钉子距离的高度 a i a_{i} ai​和绳子的长度 b i b_{i} bi​的差值进行排序即可 代码 int n; pii a[N]; bool cmp(pii a,pii b) {return a.x-a.y<b.x-b.y; }void solve() {cin>>n;for(int i1;i<n;i)cin>>a[i].x>…

【Linux】oh-my-zsh终端配置

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍oh-my-zsh终端配置。 学其所用&#xff0c;用其所学。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;下次更新不迷路&am…