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,一经查实,立即删除!

相关文章

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

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

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

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

在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;不涉及到业务逻辑。 缺点一旦模板发生了变更&…

Java基础回顾——反射

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

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;内…

2024年PMP报考条件是什么?

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

ADS学习笔记(一)——更新中

在ADS中&#xff0c;信号上升时间为信号从0&#xff5e;100&#xff05;所用的时间&#xff0c;而实际上定义的上升边均为10&#xff05;&#xff5e;90&#xff05;&#xff0c;所以可以认为上升边&#xff1d;0.8*ADS设置上升时间。 一、终端开路及短路的反射信号 1.仿真条…

测试工具Jmeter:设置中文界面

首先我们打开Jmeter所在的文件&#xff0c;进入bin目录&#xff0c;打开Jmeter.properties&#xff1a; 打开后找到languageen&#xff1a; 改为zh_CN: 保存关闭&#xff0c;然后再打开Jmeter&#xff1a; 英文并不会显得高级&#xff0c;能做到高效的性能测试才是高级的。

Wordpress插件WP-Statistics无法识别来访IP国家和城市处理方法

Wordpress插件WP-Statistics&#xff0c;可以识别网站访问者的IP物理地址&#xff0c;统计出城市、国家&#xff0c;但最近发现都显示unknown/未知&#xff1a; 更新GeoIP数据库到最新还是不行&#xff1a; 偶然找到了之前能用的数据库&#xff0c;恢复回去&#xff0c;竟然大…

dell服务器 R740xd安装windows server 2019过程记录

公司有两台dell服务器型号是R740xd&#xff0c;增加了存储&#xff0c;更新系统到windows server 2019标准版。 查找了网上的系统安装方式&#xff0c;都没有实践成功&#xff0c;做一下工作记录&#xff0c;给大家做参考。 网络搜索到的两种方式&#xff0c;进行安装 &#x…

如何通过ssh管道传输文件到ubuntu

如何在window系统中&#xff0c;通过ssh将指定的文件传输到ubuntu中呢&#xff1f; 比较常用的有以下种方式&#xff1a; 共享文件夹借助工具&#xff0c; FileZillaMobaxtermWinSCPXshell XFTP samba互传PuTTY pscp 今天主要分享一个使用python脚本搭建的一个&#xff0c;…

Oracle定时任务的创建与禁用/删除

在开始操作之前&#xff0c;先从三W开始&#xff0c;即我常说的what 是什么&#xff1b;why 为什么使用&#xff1b;how 如何使用。 一、Oracle定时器是什么 Oracle定时器是一种用于在特定时间执行任务或存储过程的工具&#xff0c;可以根据需求设置不同的时间段和频率来执行…

HarmonyOS后台代理提醒

后台代理提醒 简介 随着生活节奏的加快&#xff0c;我们有时会忘记一些重要的事情或日子&#xff0c;所以提醒功能必不可少。应用可能需要在指定的时刻&#xff0c;向用户发送一些业务提醒通知。例如购物类应用&#xff0c;希望在指定时间点提醒用户有优惠活动。为满足此类业…

本地运行vue脚手架 从下载node开始到创建vue

vue2node 1.安装node vue2版本我node一般使用的是14版本左右 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f886442c20114e62aef8113425e34ad2.pngnode官网 假如我node版本过低 你就找到控制面板 找到node卸载掉 我一般下载两个版本 安装vue cli vuecl…

BurpSuite抓不到本地包

目录 前言 一、方法一 二、方法二 三、方法三 四、方法四 总结 &#x1f308;嗨&#xff01;我是Filotimo__&#x1f308;。很高兴与大家相识&#xff0c;希望我的博客能对你有所帮助。 &#x1f4a1;本文由Filotimo__✍️原创&#xff0c;首发于CSDN&#x1f4da;。 &#x1f…

基础数据结构(1):链表

在学习算法时&#xff0c;发现用什么数据结构来存储数据是很重要的&#xff0c;所以学习数据结构也是必须的&#xff0c;先从基础数据结构&#xff1a;数组&#xff0c;字符串&#xff0c;链表&#xff0c;栈&#xff0c;队列&#xff0c;树&#xff0c;矩阵&#xff0c;邻接表…

利用虚继承解决菱形继承(钻石继承)的问题 学习笔记

菱形继承概念&#xff1a; 两个派生类继承同一个基类 又有某个类同时继承两个派生类 这种继承又被称为菱形继承&#xff0c;或者钻石继承 定义一个基类Animal&#xff0c;两个派生类Sheep、Camal&#xff0c;SheepCame继承于两个派生类 class Animal { public:int m_Age; }…