大数据云计算运维之HA高可用服务搭建

news2024/11/9 6:11:08

HA高可用服务搭建

1、HA Cluster高可用集群

HA是High Available缩写。 HA Cluster是指高可用性集群,是保证业务连续性的有效解决方案,一般 有两个或两个以上的节点,且分为活动节点及备用节点。

FailOver:故障自动切换,MASTER/BACKUP,MASTER宕机了,BACKUP 充当主机使用。

2、为什么要引入HA高可用

答:主要是为了解决Web服务的单点故障。 HA高可用软件架构原理:keepalived/mha

3、Keepalived软件概述

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS 集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功 能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务 (例如:Nginx、HAproxy、MySQL等)的高可用解决方案软件。

4、Keepalived组成和原理

Keepalived软件主要是通过VRRP协议实现高可用功能的(故障切换方 式)。VRRP是Virtual Router RedundancyProtocol(虚拟路由器冗余协 议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,它 能够保证当个别节点宕机时,整个网络可以不间断地运行。 (FailOver+VIP漂移)

使用Keepalived进行VIP(虚拟的IP地址),所有服务器共享一个虚拟的 VIP的实现。

虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供 相同功能的路由器组成一个路由器组,这个组里面有一个master和多个 backup,master上面有一个对外提供服务的vip(该路由器所在局域网内 其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp 包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个 backup当master。这样的话就可以保证路由器的高可用了。

Keepalived的功能体系结构,大致分两层:用户空间(user space)和内 核空间(kernel space)

内核空间:主要包括IPVS(IP虚拟服务器,用于实现网络服务的负载均 衡)和NETLINK(提供高级路由及其他相关的网络功能)两个部份。

用户空间:

WatchDog:负则监控checkers和VRRP进程的状况
VRRP Stack:负载均衡器之间的失败切换FailOver,如果只用一个负载均衡
器,则VRRP不是必须的。
Checkers:负责真实服务器的健康检查healthchecking,是keepalived
最主要的功能。换言之,可以没有VRRP Stack,但健康检查
healthchecking是一定要有的。
IPVS wrapper:用户发送设定的规则到内核ipvs代码.
Netlink Reflector:用来设定vrrp的vip地址等。

keepalived主要使用三个模块,分别是core、check和vrrp。core模块为 keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和 解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现 VRRP协议的。
在这里插入图片描述

5、安装Keepalived软件

第一步:关闭防 火墙与SELinux、关闭NetworkManager、时间同步。

第二步:在Web01与Web02(两台机器组建高可用集群)使用yum命令安 装Keepalived软件

yum install keepalived -y

第三步:了解keepalived配置文件与日志信息输出的位置

配置文件:

vim /etc/keepalived/keepalived.conf

日志文件:

cat /var/log/messages

6、设置Keepalived配置文件

Web01与Web02同时操作:

vim /etc/keepalived/keepalived.conf 

第一步:使用冒号:末行模式,切换光标到35行,然后按dG,删除35行以 后的所有内容

第二步:了解一下配置文件中每一行的含义19~34行

vrrp_instance #组建vrrp实例组的组名(Web01与Web02要保持一致) {
	state #角色名称(MASTER/BACKUP)
	interface #网卡名称(eth0=>ens33)
	virtual_router_id #vrrp组的编号(Web01与Web02要保持一致)
	priority #权重(选举=>权重高=>当选几率大)
	advert_int 1 #心跳间隔时间
	authentication {
		auth_type PASS #=> 授权类型(PASS密码)
		auth_pass 1111 #=> 组密码(想组建集群,其密码必须一致)
	}
	virtual_ipaddress {
		10.1.1.100 #=> VIP,虚拟的IP地址,需要与集群中的机器保持在同一网段
	}
}

设置完成后,保存并退出

第三步:启动Keepalived软件

systemctl start keepalived
systemctl status keepalived

分别在Web01/Web02中使用ip a命令,查看网卡上是否挂载VIP地址:

ip a

7、解析www.shop.com到VIP虚拟IP地址

Windows中找到hosts文件:

ip 域名
例如:
192.168.1.100 www.baidu.com

8、让VIP可以ping通

把域名解析到VIP,通过VIP访问到提供服务的服务器。

特别注意:1.3以后版本要注释vrrp_strict,否则虚拟IP无法ping通

设置完成后,重启keepalived软件

systemctl restart keepalived

9、模拟服务器故障,VIP漂移

MASTER:网络无法连接,keepalived软件关闭
Web01 # systemctl stop network

10、让Keepalived可以监测Nginx服务

问题:当我们在MASTER服务器中,手工停止Nginx,VIP会发生漂移么?

答:不会,因为keepalived软件主要检测keepalived服务状态以及网络情 况。只要这两者正常,这个VIP就不会发生漂移。

这个时候就产生了一个问题:Nginx都已经停止了,实际上这台MASTER服 务器就无法对外提供Web服务了,所以这个时候VIP也应该正常发生漂移。

第一步:编写nginx.sh脚本,自动检测Nginx的运行状态 (Web01/Web02)

# mkdir /scripts
# vim /scripts/nginx.sh
#!/bin/bash
nginx_status=`ps -C nginx --no-header |wc -l`
if [ $nginx_status -eq 0 ]; then
	systemctl stop keepalived
fi

第二步:给nginx.sh文件添加一个可执行权限

chmod +x /scripts/nginx.sh

设置完成后,不要着急继续向下操作。首先测试一下nginx.sh脚本是否可用

/scripts/nginx.sh

第三步:在Web01/Web02两台机器的keepalived.conf文件中配置 nginx.sh脚本

vim /etc/keepalived/keepalived.conf
vrrp_script 健康检测脚本对象名称 {
	script STRING | QUOTED-STRING ## 指定:<外部脚本>的<调用路径>
	interval INTEGER ## 设置:<健康跟踪检测>的<时间间隔>,默认为 1 秒
}

以上只是在keepalived配置文件中定义了一个检测脚本,但是还没有真正 的调用。

第四步:在vrrp_instance标签中真正调用check_nginx这个检测脚本

vrrp_instance VI_1 {
...
track_script {
check_nginx
}
...
}

第五步:设置完成后,重启keepalived

systemctl restart keepalived

二、Keepalived配置补充

1、抢占与非抢占模式

☆ 什么是抢占模式

MASTER:权重100

BACKUP:权重90

当MASTER发生故障时(宕机),VIP会自动从MASTER漂移到BACKUP服 务器。但是当MASTER维修完毕后,启动keepalived的瞬间,其就会把VIP 从BACKUP服务器中抢占过来。我们把这种情况就称之为“抢占模式”。

扩展:keepalived中,到底是如何决定谁是MASTER?

答:主要通过权重配置以及IP地址的大小

① 如果Web01与Web02其权重不同,当我们同时启动keepalived的时候, 其默认会选择权重比较大的服务器充当MASTER。

② 如果Web01与Web02其权重相同,则IP地址大的,优先成为MASTER Web02(10.1.1.13) > Web01(10.1.1.11)

☆ 非抢占模式

问题:如果让我们的HA Cluster集群成为非抢占模式呢?

答:一共分三步

第一步:更改keepalived.conf配置文件

vrrp_instance VI_1 {
	virtual_router_id 51
------------------------ 华丽的分割线 ------------------
	nopreempt => 非抢占模式
------------------------ 华丽的分割线 ------------------
	priority 100
}

第二步:配置state角色都为BACKUP

vrrp_instance VI_1 {
------------------------ 华丽的分割线 ------------------
	state BACKUP => 所有服务器都设置为BACKUP,没有MASTER/BACKUP之分
------------------------ 华丽的分割线 ------------------
	virtual_router_id 51
	nopreempt
	priority 100
}

第三步:重启keepalived软件

systemctl restart keepalived

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

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

相关文章

前端后端交互-ElementUI(日期选择器)

日期选择器 页面效果 页面效果 组件源码 <!-- daterange: 范围选择类型format: 绑定后表单中显示的格式value-format: 传递时显示的格式--> <template><el-date-picker v-model"rangeTime" type"daterange" range-separator"至" …

RabbitMQ使用延迟插件,代码量直接减少一半!

今天介绍一下使用RabbitMQ的延迟插件方便实现延迟消息的方案。 RabbitMQ 是一个由 Erlang 语言开发的 AMQP(高级消息队列协议) 的开源实现。 RabbitMQ 是轻量级且易于部署的&#xff0c;能支持多种消息协议。 RabbitMQ 可以部署在分布式和联合配置中&#xff0c;以满足高规模…

【立体视觉(四)】之极线校正与双目视觉

【立体视觉&#xff08;四&#xff09;】之极线校正与双目视觉 一、极线校正一&#xff09;Fusiello校正法1. 转换矩阵计算1&#xff09;计算旋转矩阵 R n R_n Rn​2&#xff09;计算内参矩阵 K n K_n Kn​3&#xff09;计算转换矩阵 T T T 2. 核线影像生成 二、双目视觉 此…

css基础知识五:CSS中,有哪些方式可以隐藏页面元素?区别?

一、前言 在平常的样式排版中&#xff0c;我们经常遇到将某个模块隐藏的场景 通过css隐藏元素的方法有很多种&#xff0c;它们看起来实现的效果是一致的 但实际上每一种方法都有一丝轻微的不同&#xff0c;这些不同决定了在一些特定场合下使用哪一种方法 二、实现方式 通过…

【IC设计】ICC1 workshop lab guide 学习笔记——Lab 2 Design Planning Task1-4

文章目录 Lab 2 Design Planning2.1 Load the Design2.2 Initialize the Floorplan2.3 Preplace the Macros Connected to I/O Pads2.4 Perform Virtual Flat Placement Lab 2 Design Planning 2.1 Load the Design 进入lab2_dp目录并打开icc_shell&#xff0c;打开orca_lib.…

雪花去噪算法学习记录(一)之基础知识

在进行实验过程中&#xff0c;需要完成对雪天图像的处理&#xff0c;其中一个主要操作为去雪。相较于去雾&#xff0c;去雨模型&#xff0c;去雪模型相对较少&#xff0c;因此在研究时所能够借鉴的资料有限&#xff0c;这对我们的研究造成了一定困扰。 模型算法 DesnowNet网络…

[VPN]华为SecoClient客户端Linux使用

准备 安装环境&#xff1a;CentOS 下载安装包&#xff1a; # wget http://www.corem.com.cn/sites/default/files/tools/secoclient/secoclient-linux-64-7.0.2.26.run 安装 在root用户下&#xff0c;执行&#xff1a; # chmod x secoclient-linux-64-7.0.2.26.run # ./secoc…

瞎搞!你真的懂什么是ERP、中台、低代码吗?

企业数字化领域从来都不缺新概念 从制造资源计划到中台&#xff0c;企业MRP报表数字还没对齐&#xff0c;就要忙着“去烟囱”化&#xff1b; 从中台到低代码&#xff0c;企业“数据孤岛”还没打通&#xff0c;又要忙着“赋能数字化能力”给业务人员了。 这一来二去&#xff0c;…

已有仓库,上传代码,如果你是先写代码,想上传git上你可以这样操作

已有仓库,上传代码&#xff0c;如果你是先写代码&#xff0c;想上传git上你可以这样操作 第一步&#xff1a;初始化 git git init 第二步&#xff1a;添加文件 git add * 第三步&#xff1a;提交文件 git commit -m "完整项目可直接下载使用" 第四步&#xff1a;配置…

【MySql】MySql索引的操作

文章目录 索引结构问题聚簇索引与非聚簇索引索引操作创建主键索引唯一索引创建普通索引创建全文索引创建删除索引查询索引索引创建原则 索引结构问题 InnoDB 在建立索引结构来管理数据的时候&#xff0c;其他数据结构为何不行 链表:线性遍历,在效率上是不合适的 二叉搜索树&am…

如何用Jmeter提取和引用Token

1.执行获取token接口 在结果树这里&#xff0c;使用$符号提取token值。 $根节点&#xff0c;$.data.token表示提取根节点下的data节点下的token节点的值。 2.使用json提取器&#xff0c;提取token 变量路径就是把在结果树提取的路径写上。 3.使用BeanShell取样器或者BeanShell后…

在 Navicat Premium 中管理 MySQL 用户 | 第 2 部分:创建新用户

第 2 部分&#xff1a;创建新用户 第 2 部分&#xff1a;创建新用户 第 1 部分 中&#xff0c;我们学习了如何使用 Navicat Premium 用户管理工具保护 MySQL 的 root 帐号。本篇文章将集中介绍如何设置新用户的帐号详细信息、帐号限制和 SSL 设置。如果你想边学边用&#xff1…

做好用户体验设计 关键看5个方面

用户来了就走&#xff0c;用户吐槽不好用&#xff0c;用户留不住&#xff0c;好的功能没人用&#xff0c;这到底是怎么回事&#xff1f;问题关键在于好的用户体验设计&#xff0c;而做好用户体验设计&#xff0c;关键看5个方面&#xff1a; 1、是否有用 我们需要考量产品。对用…

如何用数字人技术让课堂活起来?番职院和3DCAT实时云渲染给出答案

2023年4月20日&#xff0c;广州市第二届智慧教育成果巡展活动在番禺职业技术学院&#xff08;下文简称番职院&#xff09;举行&#xff0c;本次活动的主题是智能AI助教—让课堂活起来。 活动现场&#xff0c;瑞云科技受邀展示了其自主研发的瑞云数字人课堂互动教学解决方案。数…

实时监控Active Directory用户登录操作

用户登录到其域计算机是任何企业中发生的日常活动。一开始&#xff0c;这可能看起来是一个简单的Active Directory事件&#xff0c;但分配了不同角色的管理员可以将这些有价值的数据用于各种审计&#xff0c;合规性和运营需求。组织需要审核“AD 用户登录日志”的详细信息&…

JavaWeb学习路线(5)——MyBatis

准备工作&#xff1a;JDBC 概念&#xff1a; JDBC&#xff08;Java DataBase Connectivity&#xff09;&#xff0c;就是使用Java语言操作关系型数据库的一套API。JDBC使用数据库的五大步骤 //步骤一&#xff1a;注册驱动 Class.forName("com.mysql.cj.jdbc.Driver"…

手机App弹窗的常用测试点

手机App弹窗是目前流行的一种内容展示形式&#xff0c;根据内容性质可以划分为消息、通知、广告、营销等等&#xff0c;展现形式也比较多变&#xff0c;刚上手测试特容易手忙脚乱&#xff0c;为了帮助新人能够快速入门&#xff0c;笔者在此将弹窗常见的测试点一一进行罗列&…

「网络编程」第二讲:网络编程socket套接字(三)_ 简单TCP网络通信程序的实现

「前言」文章是关于网络编程的socket套接字方面的&#xff0c;上一篇是网络编程socket套接字&#xff08;二&#xff09;&#xff0c;下面开始讲解&#xff01; 「归属专栏」网络编程 「笔者」枫叶先生(fy) 「座右铭」前行路上修真我 「枫叶先生有点文青病」「每篇一句」 I do…

maven-mvnd搞起来

maven-mvnd是Apache Maven团队借鉴了Gradle和Takari的优点&#xff0c;衍生出来的更快的构建工具&#xff0c;maven的强化版&#xff01; maven-mvnd 在设计上&#xff0c;使用一个或多个守护进程来构建服务&#xff0c;以此来达到并行的目的&#xff01;同时&#xff0c;mave…

FreeRTOS 创建任务

例子&#xff1a;创建一个任务&#xff0c;并在任务里面翻转LED 灯 1. 函数原型 BaseType_t xTaskCreate(TaskFunction_t pxTaskCode,const char * const pcName,const uint16_t usStackDepth,void * const pvParameters,UBaseType_t uxPriority,TaskHandle_t * const pxCreat…