Linux系统LVS+Keepalived群集

目录

一、概述

(一)群集特性

1.负载均衡

2.健康检查(探针)

3.故障转移  

(二)Keepalived

1.作用      

(1)支持故障自动转移

(2)支持节点健康状态检查

2.工作原理

3.Keepalived体系主要模块及其作用

(1)core模块

(2)check模块

(3)vrrp模块

4.健康检查(探针)的方式

(1)发送心跳消息

(2)TCP端口检查

(3)HTTP URL检查

(三)脑裂故障

1.现象

2.原因

3.解决

4.预防方法

(四)keepalived的抢占与非抢占模式

1.抢占模式

2.非抢占模式

3.注意点

二、部署LVS+Keepalived

(一)部署负载调度服务器

1.部署主keepalived服务器

(1)关闭防火墙和安全机制

(2)安装服务

(3)修改配置文件

(4)启动服务、查看虚拟网卡vip

(5)调整proc响应参数

(6)刷新

2.部署备keepalived服务器

(二)部署节点服务器

1.部署web服务器1

(1)关闭防火墙和安全机制

(2)安装并开启服务

(3)配置站点文件

(4)配置虚拟vip

(5)重启网络服务,开启虚拟网卡

(6)设置路由

(7)调整 proc 响应参数

(8)刷新

2.部署web服务器2

(三)客户机测试

2.主keepalived服务器

3.备keepalived服务器

3.断开主keepalived服务器


一、概述

(一)群集特性

        一个合格的集群应该具备的特性:

1.负载均衡

        LVS   Nginx   HAProxy  F5等

2.健康检查(探针)

        for调度器/节点服务器     Keepalived    Heartbeat

3.故障转移  

        通过VIP漂移实现主备切换

(二)Keepalived

专为LVS和HA设计的健康检测工具

1.作用      

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

(1)支持故障自动转移
(2)支持节点健康状态检查

2.工作原理

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

3.Keepalived体系主要模块及其作用

       keepalived体系架构中主要有三个模块,分别是core、check和vrrp

(1)core模块

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

(2)check模块

       负责健康检查,常见的方式有端口检查及URL检查。(节点服务器的健康检查)

(3)vrrp模块

       是来实现VRRP协议的。(调度器之间的健康检查和主备切换)

4.健康检查(探针)的方式

(1)发送心跳消息
(2)TCP端口检查

       向目标主机的 IP:PORT 发起TCP连接请求,如果TCP连接三次握手成功则认为健康检查探测成功,否则认为健康检查探测失败

(3)HTTP URL检查

       向目标主机的 http://IP:PORT/URL路径 发送 HTTP GET 请求方法,如果响应消息是2XX 3XX状态码则认为健康检查探测成功

(三)脑裂故障

1.现象

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

2.原因

        因为主服务器和备服务器之间的通信链路中断,导致备服务器无法收到主服务器发送的VRRP通告消息,备服务器误认为主服务器故障了并通过IP命令生成VIP

3.解决

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

4.预防方法

(1)主服务器和备服务器之间添加双链路通信

(2)在主服务器上添加脚本进行判断与备服务器通信链路是否中断,如果确实是链路中断则自行关闭keepalived服务

(3)利用第三方应用或监控系统检测是否发送脑裂故障,如果发送脑裂故障则通过第三方应用或监控系统来关闭主服务器或备服务器上的keepalived服务

(四)keepalived的抢占与非抢占模式

1.抢占模式

        MASTER从故障中恢复后,会将VIP从BACKUP节点中抢占过来。

2.非抢占模式

       MASTER恢复后不抢占BACKUP升级为MASTER后的VIP。

3.注意点

       非抢占式俩节点state必须为bakcup,且必须配置nopreempt。这样配置后,我们要注意启动服务的顺序,优先启动的获取master权限,与优先级没有关系了。

二、部署LVS+Keepalived

(一)部署负载调度服务器

1.部署主keepalived服务器

(1)关闭防火墙和安全机制
systemctl stop firewalld
#关闭防火墙
setenforce 0
#关闭安全机制

(2)安装服务
yum install ipvsadm keepalived -y

(3)修改配置文件
cd /etc/keepalived/
#切换目录
cp keepalived.conf keepalived.conf.bak
#备份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
}vrrp_instance VI_1 {				#定义VRRP热备实例参数
--20行--修改,指定热备状态,主为MASTER,备为BACKUPstate MASTER
--21行--修改,指定承载vip地址的物理接口interface ens33
--22行--修改,指定虚拟路由器的ID号,每个热备组保持一致	virtual_router_id 51
--23行--修改,指定优先级,数值越大优先级越高,主为100,备为99priority 100advert_int 1					#通告间隔秒数(心跳频率)authentication {				#定义认证信息,每个热备组保持一致auth_type PASS				#认证类型
--27行--修改,指定验证密码,主备服务器保持一致auth_pass 1111}virtual_ipaddress {				#指定群集vip地址192.168.233.200

(4)启动服务、查看虚拟网卡vip
systemctl start keepalived
#开启服务

(5)调整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
#关闭Linux内核的重定向参数响应

(6)刷新
sysctl -p
#刷新

2.部署备keepalived服务器

备keepalived服务器与主keepalived服务器部署一致不再赘述

(二)部署节点服务器

1.部署web服务器1

(1)关闭防火墙和安全机制
systemctl stop firewalld
#关闭防火墙
setenforce 0
#关闭安全机制

(2)安装并开启服务
yum -y install httpd
systemctl start httpd

(3)配置站点文件
echo 'this is web01 page!' > /var/www/html/index.html
#web1节点服务器的站点文件
echo 'this is web02 page!' > /var/www/html/index.html
#web2节点服务器的站点文件

(4)配置虚拟vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0DEVICE=lo:0ONBOOT=yesIPADDR=192.168.233.200NETMASK=255.255.255.255

(5)重启网络服务,开启虚拟网卡
systemctl restart network
#重启网络
ifup lo:0
ifconfig lo:0
#开启虚拟网卡

(6)设置路由
route add -host 192.168.80.188 dev lo:0

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

(8)刷新
sysctl -p

2.部署web服务器2

web服务器2的部署与web服务器1一致,不再赘述

(三)客户机测试

1.客户机访问测试

2.主keepalived服务器

此时VIP在主服务器上

3.备keepalived服务器

此时VIP不在备服务器上

3.断开主keepalived服务器

此时VIP不在主服务器上

systemctl stop keepalived.service
#关闭主服务器

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

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

相关文章

Wireshark与其他工具的整合

第一章:Wireshark基础及捕获技巧 1.1 Wireshark基础知识回顾 1.2 高级捕获技巧:过滤器和捕获选项 1.3 Wireshark与其他抓包工具的比较 第二章:网络协议分析 2.1 网络协议分析:TCP、UDP、ICMP等 2.2 高级协议分析:HTTP…

使用k8s部署Mysql实例~hostpath,nfs服务器,PV和PVC持久化

1.k8s数据存储的分类: 1.基础存储的分类: 分类说明EmptyDirEmptyDir是在Pod被分配到Node时创建的,无须手动指定,当Pod销毁时, EmptyDir中的数据也会被永久删除HostPathHostPath就是将Node主机中一个实际目录挂载到Po…

Spring Boot重试调用第三方API

简介 在实际的应用开发中,我们经常需要调用第三方API来获取数据或执行操作。然而,由于网络波动、第三方服务不稳定等原因,API调用可能会面临失败的情况。为了提高应用的可靠性和稳定性,我们需要在调用第三方API时实现优雅的重试机…

【HTML】解析垂直滚动轮播效果的HTML、CSS和JavaScript实现

解析垂直滚动轮播效果的HTML、CSS和JavaScript实现 在现代Web开发中,滚动轮播效果是网页设计中常见的交互元素之一。在本文中,我们将深入解析一段HTML、CSS和JavaScript的代码,实现了一个简单而高效的垂直滚动轮播效果。通过该代码&#xff…

云仓酒庄的品牌雷盛红酒分享红酒的颜色越深代表越好吗?

红酒颜色从宝石红、石榴红到紫红甚至砖红,颜色各异色彩纷呈。有朋友问云仓酒庄品酒师,是不是红酒的颜色越深代表酒越好? 颜色较深的葡萄酒,一般酒体比较厚重,风格比较强劲,单宁含量也较高,是好…

NFS权限问题

如果您想允许特定的用户(例如 qrcode 用户,其 UID 为 1014)在 NFS 共享上具有访问权限,同时仍然保留其他用户的默认映射行为,您可以按照以下步骤进行配置: 为了允许 qrcode 用户访问共享目录,您…

在vue中通过js动态绘制table,并且合并连续相同内容的行,支持点击编辑单元格内容

首先是vue代码 <template><div id"body-container"style"position: absolute"><div class"box-container"><div class"lsb-table-box" ><div class"table-container" id"lsb-table"&…

jenkins入门

文章目录 前言一、 jenkins的安装二、新建简单任务总结 前言 本篇文章是 jenkins 的入门级别案例&#xff0c;包括安装、基础概念介绍、新建简单任务 一、 jenkins的安装 下载 jenkins https://www.jenkins.io/download/ 当前案例下载的是 2.426.2 LTS 版本 下载安装jdk11 …

电商平台商品详情API接口|商品详情页(一)

电商网站上&#xff1a; 小电商&#xff1a;页面静态化的方案; 比如 电商平台商品详情API接口商品的信息放到表中 页面模板&#xff0c;渲染成html页面&#xff0c;每次用户请求的时候&#xff0c;直接返回html页面&#xff0c;不涉及到业务逻辑。 缺点一旦模板发生了变更&…

redis——分布式锁

一&#xff1a;实现一个分布式锁需要考虑哪些问题&#xff1f; 独占性&#xff1a;任何时刻有且只有一个线程持有这个锁重入性&#xff1a;同一节点的同一线程如果获得锁之后&#xff0c;他可以再次获取这个锁高可用&#xff1a;若redis集群环境下&#xff0c;不能因为某一个节…

Java基础回顾——反射

文章目录 介绍Class类与instanceof的区别 访问字段调用方法调用构造方法获取继承关系动态代理 介绍 反射reflection&#xff0c;是指在程序运行期间可以拿到一个对象的所有信息。 正常情况下获取一个对象信息&#xff0c;需要import该类&#xff0c;反射可以在对某个实例一无所…

【力扣100】146.LRU缓存

添加链接描述 class DLinkedNode:def __init__(self, key0, value0):self.key keyself.value valueself.prev Noneself.next Noneclass LRUCache:def __init__(self, capacity: int):self.cache dict()# 使用伪头部和伪尾部节点 self.head DLinkedNode()self.tail D…

hive命令启动出现classnotfound

环境&#xff1a;ambari集群三个节点node104、node105和node106&#xff0c;其中node105上有hiveserver2&#xff0c;并且三个节点均有HIVE CLIENT 注意&#xff1a;“./”指hive安装目录 其中装有hiveserver2的node105节点&#xff0c;由于某种需要向lib目录下上传了某些jar包…

css实用入门

css也精炼了解以下内容即可&#xff1a; 一个网页所呈现出来的画面&#xff0c;你可以理解他们就是由一个又一个的盒子拼凑组成而来。 一个盒子&#xff0c;它有外边距&#xff0c;还有内边距。 黑色的部分是盒子本身的样子&#xff0c;外侧蓝色的部分是外边距&#xff0c;内…

【Python】基于数据库连接实现简单注册功能

说明 针对数据库的操作&#xff0c;一共分三步&#xff1a; 1.建立数据库连接 2.执行SQL语句 3.关闭数据库连接 Python操作数据库&#xff08;如MySQL)&#xff0c;Python发送能够与数据库直接通信的数据包&#xff0c;并获取数据库服务器的相应结果。是一种典型的基于TCP/IP…

导入别的目录下的py文件

要导入别的目录下的py文件&#xff0c;可以使用相对路径或绝对路径来导入。 使用相对路径导入&#xff1a; from ..other_directory import other_module使用绝对路径导入&#xff1a; import sys sys.path.append(/path/to/other_directory) import other_module在以上示例…

2024年PMP报考条件是什么?

报考PMP&#xff08;项目管理专业&#xff09;的条件并不是很困难&#xff0c;只需要满足以下两个条件之一&#xff1a; 1、年龄达到23周岁或本科毕业已满3年或高中毕业已满5年&#xff0c;满足其中任一条件即可&#xff1b; 2、获得由PMI&#xff08;项目管理学会&#xff09;…

Android 清除临时文件,清空缓存

python 代码&#xff1a; import os import shutil import tracebackdef delete_folder(path):if os.path.exists(path):print(f"删除文件夹: {path}")shutil.rmtree(path)print("删除完成")def delete_file(path):if os.path.exists(path):print(f"删…

华为数通试题

选择题 华为数通推出的面向企业的云计算平台是&#xff1f; A) FusionSphere B) CloudEngine C) Agile Controller D) eSight 下面哪个不是华为数通的核心交换机系列&#xff1f; A) S12700 B) S5700 C) S9300 D) CloudEngine 华为数通的企业级路由器系列包括哪个&#xff1f…

Python画一个圣诞树

用python画一个圣诞树 可以使用Python中的turtle模块来画一个圣诞树。 下面是一段示例代码&#xff1a; from turtle import * from random import * import math# 绘图方法 def Rightdraw(Range, Fd, Right):for i in range(Range): # Range循环次数fd(Fd) # 向前Fd个距离…