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

【LVS】3、LVS+Keepalived群集

为什么用它,为了做高可用

服务功能

1.故障自动切换

2.健康检查

3.节点服务器高可用-HA

Keepalived的三个模块:
core:Keepalived的核心,负责主进程的启动、维护;调用全局配置文件进行加载和解析
vrrp:实现VRRP协议
check:负责健康检查
        tcp端口检查:三次握手
        http url检查:返回码

Keepalived实现原理

底层基于VRRP协议实现的高可用

        VRRP就是虚拟路由冗余协议,它的出现是为了解决静态路由单点故障

        VRRP是通过竞选一种协议机制来将路由交给某台VRRP路由器

        VRRP用IP多播的方式()实现高可用之间的通信;工作时,主节点发包,备节点接包,当备节点收不到主节点的数据包时,就启动接管主节点的资源,备节点可以有多个,通过优先级来进行竞选;一般Keepalived系统运维时只有一对

        VRRP使用加密协议加密数据,但Keepalived目前还是推荐是用明文

脑裂现象

        Master一直发送心跳消息给backup主机,如果中间的链路突然断掉,backup主机将无法收到master主机发送过来的心跳消息(也就是vrrp报文),backup这时候会立即抢占master的工作,但其实这时候的master是正常工作的,此时就会出现脑裂的现象。

怎么预防脑裂现象

1.使用shell脚本对这两个主机之间的连通性进行监测,如果发现有问题,就会立即关闭keepalived服务来防止脑裂的产生。

2.增加一条链路作为备用链路,即使主链路挂掉了,备用链路也会顶上来,master主机可以继续给backup主机发送心跳消息。

3.监控软件的方法,这边主要是采用的zabbix来监控的,主要就是创建监控项,创建触发器来测试关闭keepalived服务。
 

掌握LVS+keepalived高可用集群部署 

示意图:(待修改)

主DR 服务器:ens33(192.168.220.121) ipvsadm 、keepalived(热备) 虚拟IP:192.168.220.135  网卡 ens33:0
备DR 服务器:ens33(192.168.220.122) ipvsadm 、keepalived
虚拟IP:192.168.220.135  网卡 ens33:0
Web 服务器1:ens33 192.168.220.111
lo:0(VIP)192.168.220.135
Web 服务器2:ens33 192.168.220.112
lo:0(VIP)192.168.220.135
vip:192.168.220.135         
客户端:192.168.220.10

1.配置负载调度器(主、备相同)  (192.168.220.121、192.168.220.122)

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.confglobal_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.220.135}
}
--36行--修改,指定虚拟服务器地址(VIP)、端口,定义虚拟服务器和Web服务器池参数
virtual_server 192.168.220.135 80 {delay_loop 6					#健康检查的间隔时间(秒)lb_algo rr						#指定调度算法,轮询(rr)
--39行--修改,指定群集工作模式,直接路由(DR)lb_kind DRpersistence_timeout 50			#连接保持时间(秒)protocol TCP					#应用服务采用的是 TCP协议
--43行--修改,指定第一个Web节点的地址、端口real_server 192.168.220.111 80 {weight 1					#节点的权重
--45行--删除,添加以下健康检查方式		TCP_CHECK {connect_port 80			#添加检查的目标端口connect_timeout 3		#添加连接超时(秒)nb_get_retry 3			#添加重试次数delay_before_retry 3	#添加重试间隔}}real_server 192.168.220.112 80 {		#添加第二个 Web节点的地址、端口weight 1TCP_CHECK {connect_port 80connect_timeout 3nb_get_retry 3delay_before_retry 3}}
##删除后面多余的配置##
}
192.168.220.121和122都需要配置vip(虚拟IP)
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.220.135
NETMASK=255.255.255.255重启网卡
systemctl restart network
ifup  ens33:0 #主备服务器一起启动
systemctl restart keepalived
#查看虚拟网卡vip
ifconfig ens33:0
ip addr
(2)启动 ipvsadm 服务
        --192.168.220.121---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadmipvsadm -C   ##清空规则
ipvsadm -A -t 192.168.220.135:80 -s rr
ipvsadm -a -t 192.168.220.135:80 -r 192.168.220.111:80 -g
ipvsadm -a -t 192.168.220.135:80 -r 192.168.220.112:80 -gipvsadm -ln
#如没有VIP 的分发策略,则重启 keepalived 服务,systemctl restart keepalived
        --192.168.220.122---
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl restart ipvsadmipvsadm -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

2.配置节点服务器

systemctl stop firewalld
setenforce 0yum -y install httpd
systemctl start httpd
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.220.135
NETMASK=255.255.255.255systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.220.135 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
--192.168.220.111---
echo 'this is L+K web1!' > /var/www/html/index.html
--192.168.220.112---
echo 'this is L+K web2!' > /var/www/html/index.html

3.测试验证

在客户端访问 http://192.168.220.135
#需要等一会再刷新,才能轮询

再在主服务器关闭 keepalived 服务后再测试

systemctl stop keepalived

相关文章:

【LVS】3、LVS+Keepalived群集

为什么用它,为了做高可用 服务功能 1.故障自动切换 2.健康检查 3.节点服务器高可用-HA Keepalived的三个模块: core:Keepalived的核心,负责主进程的启动、维护;调用全局配置文件进行加载和解析 vrrp:实…...

对前端PWA应用的部分理解和基础Demo

一、什么是PWA应用? 1、PWA简介 ​ 渐进式Web应用(Progressive Web App),简称PWA,是 Google 在 2015 年提出的一种使用web平台技术构建的应用程序,官方认为其核心在于Reliable(可靠的&#xf…...

CSGO饰品价格会一直下跌吗?市场何时止跌回升?

最后一届巴黎major终于落下帷幕,Vitality小蜜蜂2-0战胜GL成功赢下本次Major冠军,也是首次夺得Major冠军!有人欢喜有人忧啊,csgo搬砖的饰品商人们一点也高兴不起来。 4月-5月,csgo皮肤饰品已持续走低快两个月了。手里满…...

线程池原理

一、线程池的定义 线程池,按照配置参数(核心线程数、最大线程数等)创建并管理若干线程对象,没有任务的时候,这些线程都处于等待空闲状态。如果有新的线程任务,就分配一个空闲线程执行。如果所有线程都处于…...

拷贝构造函数

1. 拷贝构造函数是构造函数的一个重载形式。 2. 拷贝构造函数的参数只有一个且必须是类类型对象的引用,使用传值方式编译器直接报错, 因为会引发无穷递归调用。 class Date { public:Date(int year 1900, int month 1, int day 1){_year year;_mont…...

数据库: MySQL安装部署、主从

单机部署 mkdir -p /opt/soft/archive cd /opt/soft/archivewget -i -c https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm yum install -y mysql80-community-release-el7-7.noarch.rpm yum-config-manager --enable mysql80-community yum install -y …...

Java IO流(二)IO模型(BIO|NIO|AIO)

概述 Java IO模型同步阻塞IO(BIO)、同步非阻塞IO(NIO)、异步非阻塞IO(AIO/NIO2),Java中的BIO、NIO和AIO理解为是Java语言对操作系统的各种IO模型的封装 IO模型 BIO(Blocking I/O) 概述 BIO是一种同步并阻…...

java版本spring cloud 企业工程系统管理 工程项目管理系统源码em

工程项目管理软件(工程项目管理系统)对建设工程项目管理组织建设、项目策划决策、规划设计、施工建设到竣工交付、总结评估、运维运营,全过程、全方位的对项目进行综合管理 工程项目各模块及其功能点清单 一、系统管理 1、数据字典&#xff…...

飞天使-k8s简单搭建

文章目录 k8s概念安装部署-第一版无密钥配置与hosts与关闭swap开启ipv4转发安装前启用脚本开启ip_vs安装指定版本docker 安装kubeadm kubectl kubelet,此部分为基础构建模版 k8s一主一worker节点部署k8s三个master部署,如果负载均衡keepalived 不可用,可以用单节点做…...

java中把一个list转tree的方法

环境 我们有个需求,数据库要存一个无限级联的tree,比如菜单,目录,或者地区等数据,现有两个问题: 问如何设计表。怎么返回给前端一个无线级联的json数据。 思考 第一个问题 在设计表的时候,…...

QT设置widget背景图片

首先说方法,在给widget或者frame或者其他任何类型的控件添加背景图时,在样式表中加入如下代码,指定某个控件,设置其背景。 类名 # 控件名 { 填充方式:图片路径 } 例如: QWidget#Widget {border-image: url…...

【ROS】话题通信--从理论介绍到模型实现(C++)

1.简单介绍 话题通信是ROS中使用频率最高的一种通信模式,话题通信是基于发布订阅模式的,也即:一个节点发布消息,另一个节点订阅该消息。像雷达、摄像头、GPS… 等等一些传感器数据的采集,也都是使用了话题通信,换言之…...

服务器数据恢复-EqualLogic存储RAID5数据恢复案例

服务器数据恢复环境: 一台DELL EqualLogic存储中有一组由16块SAS硬盘组建的RAID5阵列。存储存放虚拟机文件,采用VMFS文件系统,划分了4个lun。 服务器故障&检测&分析: 存储设备上有两个硬盘指示灯显示黄色,存储…...

qsort函数详解

大家好,我是苏貝,本篇博客带大家了解qsort函数,如果你觉得我写的不错的话,可以给我一个赞👍吗,感谢❤️ 文章目录 一. qsort函数参数详解1.数组首元素地址base2.数组的元素个数num和元素所占内存空间大小w…...

C#学习,委托,事件,泛型,匿名方法

目录 委托 声明委托 实例化委托 委托的多播 委托的用途 事件 通过事件使用委托 声明事件 泛型 泛型的特性 泛型方法 泛型的委托 匿名方法 编写匿名方法的语法 委托 类似于指针,委托是存有对某个方法的引用的一种引用类型变量,引用可以在运…...

2023最新版本~KEIL5使用C++开发STM32

先看效果 开始教学 因为是第一次写这个配置教程 我会尽量详细些 打开一个Keil工程 移除本地core 添加在线core 第一次编译代码 不会有报错 修改main.c文件类型为C 点击魔术棒 把ARM编译器修改为V6 第二次编译会报错语法不兼容 我把汇编部分的这些代码做了…...

汽车领域专业术语

1. DMS/OMS/RMS/IMS DMS:即Driver Monitoring System,监测对象为Driver(驾驶员)。DMS三大核心: OMS:即Occupancy Monitoring System,监测对象为乘客。 RMS:后排盲区检测系统 IMS&…...

H3C交换机如何配置本地端口镜像并在PC上使用Wireshake抓包

环境: H3C S6520-26Q-SI version 7.1.070, Release 6326 Win 10 专业版 Wireshake Version 4.0.3 问题描述: H3C交换机如何配置本地端口镜像并在PC上使用Wireshake抓包 解决方案: 配置交换机本地端口镜像 1.进入系统视图,并创建本地镜像组1 <H3C>system-vie…...

零基础自学:2023 年的今天,请谨慎进入网络安全行业

前言 2023 年的今天&#xff0c;慎重进入网安行业吧&#xff0c;目前来说信息安全方向的就业对于学历的容忍度比软件开发要大得多&#xff0c;还有很多高中被挖过来的大佬。 理由很简单&#xff0c;目前来说&#xff0c;信息安全的圈子人少&#xff0c;985、211 院校很多都才…...

向gitee推送代码

目录 一、Gitee创建仓库 二、将刚刚创建的仓库放到虚拟机上 2.1 https 方式克隆仓库 2.2 ssh的方式克隆仓库 三、本地开发&#xff0c;推送 3.1 查看是否有远程库 3.2 推送代码 3.3 查看是否推送成功 一、Gitee创建仓库 二、将刚刚创建的仓库放到虚拟机上 2.1 https 方式…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻

在如今就业市场竞争日益激烈的背景下&#xff0c;越来越多的求职者将目光投向了日本及中日双语岗位。但是&#xff0c;一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧&#xff1f;面对生疏的日语交流环境&#xff0c;即便提前恶补了…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...

什么是Ansible Jinja2

理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具&#xff0c;可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板&#xff0c;允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板&#xff0c;并通…...

浪潮交换机配置track检测实现高速公路收费网络主备切换NQA

浪潮交换机track配置 项目背景高速网络拓扑网络情况分析通信线路收费网络路由 收费汇聚交换机相应配置收费汇聚track配置 项目背景 在实施省内一条高速公路时遇到的需求&#xff0c;本次涉及的主要是收费汇聚交换机的配置&#xff0c;浪潮网络设备在高速项目很少&#xff0c;通…...

LabVIEW双光子成像系统技术

双光子成像技术的核心特性 双光子成像通过双低能量光子协同激发机制&#xff0c;展现出显著的技术优势&#xff1a; 深层组织穿透能力&#xff1a;适用于活体组织深度成像 高分辨率观测性能&#xff1a;满足微观结构的精细研究需求 低光毒性特点&#xff1a;减少对样本的损伤…...

Vite中定义@软链接

在webpack中可以直接通过符号表示src路径&#xff0c;但是vite中默认不可以。 如何实现&#xff1a; vite中提供了resolve.alias&#xff1a;通过别名在指向一个具体的路径 在vite.config.js中 import { join } from pathexport default defineConfig({plugins: [vue()],//…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...