当前位置: 首页 > news >正文

LVS + Keepalived群集

文章目录

  • 1. Keepalived工具概述
    • 1.1 什么是Keepalived
    • 1.2 工作原理
    • 1.3 Keepailved实现原理
    • 1.4 Keepalived体系主要模块及其作用
    • 1.5 keepalived的抢占与非抢占模式
  • 2. 脑裂现象 (拓展)
    • 2.1 什么是脑裂
    • 2.2 脑裂的产生原因
    • 2.3 如何解决脑裂
    • 2.4 如何预防脑裂
  • 3. LVS+Keepalived 实现高可用负载均衡配置
    • 3.1 前置准备
    • 3.2 配置负载调度器 (主keepalived服务器:192.168.67.100)
    • 3.3 配置负载调度器(备keepalived服务器:192.168.67.101)
    • 3.4 配置节点服务器(web1服务器:192.168.67.102)
    • 3.5 配置节点服务器(web2服务器:192.168.67.103)
    • 3.6 测试

1. Keepalived工具概述

1.1 什么是Keepalived

  • 专为LVS和HA设计的一款健康检查工具支持故障自动切换 (Failover)
  • 支持节点健康状态检查(Health Checking)
官方网站: http://www.keepalived.org/

1.2 工作原理

判断 LVS 负载调度器、节点服务器的可用性
当 master 主机出现故障及时切换到backup 节点保证业务正常,当 master故障主机恢复后将其重新加入群集并且业务重新切换回 master 节点。

1.3 Keepailved实现原理

在这里插入图片描述

  • VRRP(虚拟路由冗余协议) 是针对路由器的一种备份解决方案

  • 由多台路由器组成一个热备组,通过共用的虚拟IP地址对外提供服务

  • 每个热备组内同时只有一台主路由器提供服务,其他路由器处于冗余状态

  • 若当前在线的路由器失效,则其他路由器会根据设置的优先级自动接替虚拟IP地址,继续提供服务

1.4 Keepalived体系主要模块及其作用

keepalived体系架构中主要有三个模块,分别是corecheckvrrp

  • core模块:为keepalived的核心,负责主进程的启动、维护及全局配置文件的加载和解析。
  • vrrp模块:是来实现VRRP协议的。(调度器之间的健康检查和主备切换)
  • check模块:负责健康检查,常见的方式有端口检查及URL检查。(节点服务器的健康检查)

1.5 keepalived的抢占与非抢占模式

抢占模式即MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。非抢占模式即MASTER恢复后不抢占BACKUP升级为MASTER后的VIP

非抢占式俩节点state必须为bakcup,且必须配置nopreempt。

注意:这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。

#Keepalived通过什么判断哪台主机为主服务器,通过什么方式配置浮动IP?Keepalived首先做初始化先检查state状态,master为主服务器,backup为备服务器。
然后再对比所有服务器的priority,谁的优先级高谁是最终的主服务器。
优先级高的服务器会通过ip命令为自己的电脑配置一个提前定义好的浮动IP地址。

2. 脑裂现象 (拓展)

2.1 什么是脑裂

主服务器和备服务器同时拥有 VIP

2.2 脑裂的产生原因

因为主服务器和备服务器之间的通信链路中断,导致备服务器无法正常收到主服务器发送的VRRP心跳报文

2.3 如何解决脑裂

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

2.4 如何预防脑裂

  1. 主服务器与备服务器之间添加双通信链路

  2. 在主服务器上定义运行脚本判断与备服务器通信链路是否中断,如果中断则自行关闭keepalived服务

  3. 利用第三方监控软件检测是否发生脑裂故障,如果发生则通过监控软件关闭主或者备服务器上的keepalived服务

3. LVS+Keepalived 实现高可用负载均衡配置

3.1 前置准备

主keepalived服务器:192.168.67.100
备keepalived服务器:192.168.67.101web1服务器:192.168.67.102
web2服务器:192.168.67.103 vip:192.168.67.200客户机:192.168.67.104

3.2 配置负载调度器 (主keepalived服务器:192.168.67.100)

#关闭防火墙
systemctl stop firewalld.service
setenforce 0#安装服务
yum install ipvsadm -y
yum install keepalived -y 

在这里插入图片描述在这里插入图片描述

#修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak    #备份配置文件vim keepalived.conf
#编辑配置文件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删掉多余配置

#启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	

在这里插入图片描述

#调整proc响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0#刷新一下
sysctl -p

在这里插入图片描述

#配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.67.200:80 -s rr
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.102:80 -g
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.103:80 -g#保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

在这里插入图片描述

3.3 配置负载调度器(备keepalived服务器:192.168.67.101)

#与主服务器类似
#关闭防火墙
systemctl stop firewalld.service
setenforce 0#安装服务
yum install ipvsadm -y
yum install keepalived -y 
#修改配置文件keeplived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak    #备份配置文件vim keepalived.conf
#编辑配置文件

在这里插入图片描述

在这里插入图片描述

#启动服务、查看虚拟网卡vip
systemctl start keepalived
ip addr show dev ens33	

在这里插入图片描述

#调整proc响应参数,关闭Linux内核的重定向参数响应
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0#刷新一下
sysctl -p

在这里插入图片描述

#配置负载分配策略,并启动服务
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl start ipvsadm.service#清空ipvsadm,并做策略
ipvsadm -C
ipvsadm -A -t 192.168.67.200:80 -s rr
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.102:80 -g
ipvsadm -a -t 192.168.67.200:80 -r 192.168.67.103:80 -g#保存设置
ipvsadm
ipvsadm -ln
ipvsadm-save >/etc/sysconfig/ipvsadm

在这里插入图片描述

3.4 配置节点服务器(web1服务器:192.168.67.102)

#关闭防火墙
systemctl stop firewalld
setenforce 0#安装并开启httpd服务
yum -y install httpd
systemctl start httpd

在这里插入图片描述

#配置站点文件
vim /var/www/html/index.html
this is scj web1!

在这里插入图片描述

#配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.67.200
NETMASK=255.255.255.255#重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0

在这里插入图片描述

#设置路由
route add -host 192.168.67.200 dev lo:0
route -n

在这里插入图片描述

#调整 proc 响应参数#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2#刷新proc参数
sysctl -p

在这里插入图片描述

3.5 配置节点服务器(web2服务器:192.168.67.103)

#配置与web1类似
#关闭防火墙
systemctl stop firewalld
setenforce 0#安装并开启httpd服务
yum -y install httpd
systemctl start httpd

在这里插入图片描述

#配置站点文件
vim /var/www/html/index.html
this is scj web2!

在这里插入图片描述

#配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.67.200
NETMASK=255.255.255.255#重启网络服务,开启虚拟网卡
systemctl restart network
ifup lo:0
ifconfig lo:0

在这里插入图片描述

#设置路由
route add -host 192.168.67.200 dev lo:0
route -n

在这里插入图片描述

#调整 proc 响应参数#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2#刷新proc参数
sysctl -p

在这里插入图片描述

3.6 测试

#前往客户机
curl 192.168.67.200
#访问vip

在这里插入图片描述

#前往主服务器
ip a

在这里插入图片描述

#前往备服务器
ip a

在这里插入图片描述

#前往主服务器
systemctl stop keepalived.service
#断开主服务器

在这里插入图片描述

#前往备服务器
ip a

在这里插入图片描述

相关文章:

LVS + Keepalived群集

文章目录 1. Keepalived工具概述1.1 什么是Keepalived1.2 工作原理1.3 Keepailved实现原理1.4 Keepalived体系主要模块及其作用1.5 keepalived的抢占与非抢占模式 2. 脑裂现象 (拓展)2.1 什么是脑裂2.2 脑裂的产生原因2.3 如何解决脑裂2.4 如何预防脑裂 …...

springboot将jar改成war

一、maven项目 1、修改pom文件 <packaging>war</packaging>2、添加Servlet API依赖&#xff0c;Spring Boot的Starter依赖通常会包含这个依赖&#xff0c;所以你可能已经有了&#xff0c;没有就需要添加 <dependency><groupId>javax.servlet</gr…...

从9.10拼多多笔试第四题产生的01背包感悟

文章目录 题面基本的01背包问题本题变式 本文参考&#xff1a; 9.10拼多多笔试ak_牛客网 (nowcoder.com) 拼多多 秋招 2023.09.10 编程题目与题解 (xiaohongshu.com) 题面 拼多多9.10笔试的最后一题&#xff0c;是一道比较好的01背包变式问题&#xff0c;可以学习其解法加深对…...

搭建自己的OCR服务,第一步:选择合适的开源OCR项目

一、OCR是什么&#xff1f; 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;是指对文本资料的图像文件进行分析识别处理&#xff0c;获取文字及版面信息的过程。 亦即将图像中的文字进行识别&#xff0c;并以文本的形式返回。 二、OCR的基本流程 1…...

【C++】VScode配置C/C++语言环境(简洁易懂版)

目录 一、下载VScode&#xff08;装好直接跳第五步&#xff09;二、安装VScode三、VScode设置语言为中文四、VScode切换主题&#xff08;个人爱好&#xff09;五、下载C语言编译器&#xff08;MinGW-W64 GCC&#xff09;六、配置编译器环境变量七、配置VScode八、使用单独窗口…...

【hive】—原有分区表新增加列(alter table xxx add columns (xxx string) cascade;)

项目场景&#xff1a; 需求&#xff1a;需要在之前上线的分区报表中新增加一列。 实现方案&#xff1a; 1、创建分区测试表并插入测试数据 drop table test_1; create table test_1 (id string, score int, name string ) partitioned by (class string) row format delimit…...

verilog学习笔记7——PMOS和NMOS、TTL电路和CMOS电路

文章目录 前言一、PMOS和NMOS1、NMOS2、PMOS3、增强型和耗尽型4、两者面积大小 二、CMOS门电路1、非门2、与非门3、或非门4、线与逻辑5、CMOS传输门6、三态门 三、TTL电路四、TTL电路 VS CMOS电路五、数字电平六、使用CMOS电路实现逻辑函数1、上拉网络 PUN2、下拉网络 PDN3、实…...

Java知识点二

Java知识点二 1、Comparable内部比较器&#xff0c;Comparator外部比较器2、源码结构的区别:1&#xff09;Comparable接口&#xff1a;2&#xff09;Comparator接口&#xff1a; 2、Java反射 1、Comparable内部比较器&#xff0c;Comparator外部比较器 我们一般把Comparable叫…...

基于单片机压力传感器MPX4115检测-报警系统-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器&#xff0c;液晶1602显示&#xff0c;MPX4115检测压力&#xff0c;按键设置报警&#xff0c;LED报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 /***************************************…...

Pytorch02 神经网路搭建步骤

文章目录 import numpy as np import torch from PIL.Image import Image from torch.autograd import Variable# 获取数据 def get_data():train_Xnp.asarray([3.3,4.4,5.5,6.71,6.93,4.168,9.779,6.182,7.59,2.167,7.042,10.791,5.313,7.997,5.654,9.27,3.1])train_Ynp.asarr…...

【源码】JavaWeb+Mysql招聘管理系统 课设

简介 用idea和eclipse都可以&#xff0c;数据库是mysql&#xff0c;这是一个Java和mysql做的web系统&#xff0c;用于期末课设作业 cout<<"如果需要的小伙伴可以http://www.codeying.top";可定做课设 线上招聘平台整合了各种就业指导资源&#xff0c;通过了…...

Java中级编程大师班<第一篇:初识数据结构与算法-数组(2)>

数组&#xff08;Array&#xff09; 数组是计算机编程中最基本的数据结构之一。它是一个有序的元素集合&#xff0c;每个元素都可以通过索引进行访问。本文将详细介绍数组的特性、用法和注意事项。 数组的基本特性 数组具有以下基本特性&#xff1a; 有序性&#xff1a; 数…...

杰哥教你面试之一百问系列:java集合

文章目录 1. 什么是Java集合&#xff1f;请简要介绍一下集合框架。2. Java集合框架主要分为哪几种类型&#xff1f;3. 什么是迭代器&#xff08;Iterator&#xff09;&#xff1f;它的作用是什么&#xff1f;4. ArrayList和LinkedList有什么区别&#xff1f;它们何时适用&#…...

【数据结构】树和二叉树概念

1.树概念及结构 树概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结点&#xff0c;…...

C盘清理教程

C盘清理教程 首先使用space Sniffer 扫一下c盘&#xff0c;然后看一下到底是哪个文件这么大 第二步&#xff0c;创建软链接。 首先将我们需要移动的文件的当前路径拷贝下来&#xff1a;C:\Users\Tom\Desktop\test-link\abc\ghi.txt 然后假设剪切到D盘下&#xff1a;D:\ghi.…...

【实战-05】 flinksql look up join

摘要 look up join 能做什么&#xff1f; 不饶关子直接说答案&#xff0c; look up join 就是 广播。 重要是事情说三遍&#xff0c;广播。flinksql中的look up join 就类似于flinks flink Datastream api中的广播的概念&#xff0c;但是又不完全相同&#xff0c;对于初次访问…...

C++数据结构--红黑树

目录 一、红黑树的概念二、红黑树的性质三、红黑树的节点的定义四、红黑树结构五、红黑树的插入操作参考代码 五、代码汇总 一、红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&#xff0c;但在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是Red或Black。 通过…...

Linux perf使用思考

目录 一、参考资料&#xff08;建议阅读&#xff09;二、值得思考的几个问题1、perf使用不同的性能事件进行统计有什么区别呢&#xff1f;2、那使用不同的性能事件统计出来的数据&#xff1f;排序是如何决定的&#xff0c;其中的百分比数值在不同的性能事件进行统计时各自的意义…...

自定义路由断言工厂

我们来设定一个场景: 假设我们的应用仅仅让age在(min,max)之间的人来访问。 第1步&#xff1a;在配置文件中,添加一个Age的断言配置 spring: application:name: api-gateway cloud:nacos:discovery:server-addr: 127.0.0.1:8848gateway:discovery:locator:enabled: trueroute…...

Nacos安装及在项目中的使用

目录 概要一、安装 Nacos1、下载 Nacos2、解压3、启动 Nacos 服务器4、自定义Nacos启动脚本5、访问Nacos Web控制台 二、Nacos----服务注册与发现1、添加 Nacos 依赖2、配置 Nacos 服务器地址3、使用 Nacos 注册服务4、启动服务 三、Nacos----配置管理1、创建配置数据2、从 Nac…...

overleaf中latex语法总结

α和bata $\alpha$ $\beta$上标和下标同时使用 $A_{IJ}^{IJ}$\\ %上标^下标_多个使用{}行内公式 \noindent $abc$\\ %行内公式\documentclass{article} \usepackage[utf8]{inputenc} \usepackage[namelimits]{amsmath} %数学公式 \usepackage{amssymb} %数学公式…...

Grafana配置邮件告警

1、创建一个监控图 2、grafana邮件配置 vim /etc/grafana/grafana.ini [smtp] enabled true host smtp.163.com:465 user qinziteng05163.com password xxxxx # 授权码 from_address qinziteng05163.com from_name Grafanasystemctl restart grafana-serv…...

setup中的nextTick函数

await nextTick() 是 Vue 3 的一个异步函数&#xff0c;用于等待 DOM 更新完成后执行回调函数&#xff0c; 它在 setup 函数中非常有用&#xff0c;可以确保在对 DOM 进行操作之前&#xff0c;先等待 Vue 完成相关的 DOM 更新。 下面是一个示例&#xff0c;演示了 await nextT…...

Matlab信号处理3:fft(快速傅里叶变换)标准使用方式

Fs 1000; % 采样频率 T 1/Fs; % 采样周期&#xff1a;0.001s L 1500; % 信号长度 t (0:L-1)*T; % 时间向量. 时间向量从0开始递增&#xff0c;0s~1.499sS 0.7*sin(2*pi*50*t) sin(2*pi*120*t); % 模拟原信号 X S 2*randn(size(t)); …...

Python|合并两个字典的几种方法

在Python中&#xff0c;有多种方法可以通过使用各种函数和构造函数来合并字典。在本文中&#xff0c;我们将讨论一些合并字典的方法。 1. 使用方法update() 通过使用Python中的update()方法&#xff0c;可以将一个列表合并到另一个列表中。但是在这种情况下&#xff0c;第二个…...

ElementUI浅尝辄止24:Message 消息提示

常用于主动操作后的反馈提示。与 Notification 的区别是后者更多用于系统级通知的被动提醒。 1.如何使用&#xff1f; Message 在配置上与 Notification 非常类似&#xff0c;所以部分 options 在此不做详尽解释&#xff0c;可以结合 Notification 的文档理解它们。Element 注…...

让照片动起来的软件,轻松制作照片动效

随着社交媒体的日益普及&#xff0c;我们对于照片的要求也越来越高。普通的照片已经不能满足我们的需求&#xff0c;我们希望照片更加生动有趣。照片动效便应运而生&#xff0c;它可以让照片动起来&#xff0c;吸引更多的注意力&#xff0c;让照片更加生动有趣。 照片动效制作起…...

【图解RabbitMQ-7】图解RabbitMQ五种队列模型(简单模型、工作模型、发布订阅模型、路由模型、主题模型)及代码实现

&#x1f9d1;‍&#x1f4bb;作者名称&#xff1a;DaenCode &#x1f3a4;作者简介&#xff1a;CSDN实力新星&#xff0c;后端开发两年经验&#xff0c;曾担任甲方技术代表&#xff0c;业余独自创办智源恩创网络科技工作室。会点点Java相关技术栈、帆软报表、低代码平台快速开…...

Linux命令200例:write用于向特定用户或特定终端发送信息

&#x1f3c6;作者简介&#xff0c;黑夜开发者&#xff0c;CSDN领军人物&#xff0c;全栈领域优质创作者✌。CSDN专家博主&#xff0c;阿里云社区专家博主&#xff0c;2023年6月csdn上海赛道top4。 &#x1f3c6;数年电商行业从业经验&#xff0c;历任核心研发工程师&#xff0…...

javaee spring整合mybatis spring帮我们创建dao层

项目结构 pom依赖 <?xml version"1.0" encoding"UTF-8"?><project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…...

搭设企业网站教程/东莞哪种网站推广好

让我们来尝试一次深度匹配&#xff0c;在我们的模式匹配中检查对象的内容。//code-examples/Rounding/match-deep-script.scalacase class Person(name: String, age:Int) val alice new Person("Alice",25) val bob new Person("Bob",32) val charli…...

网站建设公司 电话销售没什么效果/网站的营销推广方案

$(window).scroll(function() { }); window的滚动事件不触发以及offset().top数据乱的原因&#xff1f; 如果你的css中&#xff1a;html,body的高度样式如果设置为100%&#xff0c;那么$(window).scroll方法将检测不到正确的滚出高度&#xff08;0&#xff09;&#xff0c;导致…...

具有价值的微网站建设/今日热点新闻事件2022

原文是财经记者写的&#xff0c;有文学描述思维&#xff0c;所以容易形成兴冲冲读完过瘾了叫好了但就没有下文了。为了防止这个弊病&#xff0c;我是学理工科的&#xff0c;来解构的&#xff0c;给大家把骨头剔出来。一、郁亮CEO&#xff08;登山与企业运作的相通性&#xff09…...

平台流量排名/重庆百度快照优化

平台&#xff1a;VC 2005 测试通过&#xff01;.vcproj这是使用应用程序向导生成的 VC 项目的主项目文件。 它包含生成该文件的 Visual C 的版本信息&#xff0c;以及有关使用应用程序向导选择的平台、配置和项目功能的信息。StdAfx.h, StdAfx.cpp这些文件用于生成名为 twod.pc…...

苏州企业如何建网站/广告推广 精准引流

为什么80%的码农都做不了架构师&#xff1f;>>> 本文将介绍如何配置jenkins&#xff0c;使其可以支持基于角色的项目权限管理。 由于jenkins默认的权限管理体系不支持用户组或角色的配置&#xff0c;因此需要安装第三发插件来支持角色的配置&#xff0c;本文将使用…...

苏州企业网站建设服务中心/东莞搜索排名提升

为什么80%的码农都做不了架构师&#xff1f;>>> Mybatis sql改写 近期有项目需要&#xff0c;需要把update转化成insert&#xff0c;网上搜索了下发现mybatis的拦截器可以实现该功能。 一、mybatis拦截器 实现一个拦截器拦截所有update方法 import java.sql.SQLExc…...