高可用集群 keepalived

news2024/9/25 19:14:42

一、高可用集群:

1、简介:

高可用集群(High Availability Cluster,简称 HA Cluster),是一组相互连接的计算机或服务器,它通过保护用户的业务程序对外不间断提供的服务,把因软件、硬件、人为造成的故障对业务的影响降低到最小程度。

MTTF:mean time to failure 平均无故障时间,度量系统的可靠性;

MTTR:mean time to restoration 平均故障维修时间,度量系统的可维护性;HA=MTTF / (MTTF+MTTR)*100%

2、自动切换 (Failover):

自动切换是指当主要系统发生故障或不可用时,自动切换到备用或冗余系统的过程,帮助在面对意外中断时保持运营。

3、自动侦测:

(1) 概念:

自动侦测是指在计算机集群或分布式系统中使用的一种机制,允许系统自动检测和识别集群中的节点或成员。

(2) 心跳线:

自动侦测的 "心跳线"(Heartbeat Line)是指在集群中使用的一种监控和检测机制。它涉及到周期性发送心跳消息或信号,以表示设备、节点或进程的活跃状态和可用性。

接收方节点会定期监测心跳信息,并检查发送方节点是否活动。如果接收方节点在一定时间内未收到心跳信息,它可能会假定发送方节点已经失败,并采取相应措施。

(3) 分裂脑:

在高可用集群中,当联系2个节点的“心跳线”断开时,本来为一个整体、动作协调的 HA 系统失去通信,分裂成为2个独立的个体,每个个体都认为是对方出现了故障,都在独自操作。

二、keepalived

1、概念:

Keepalived 是实现高可用性(High Availability)的开源软件,用于管理负载均衡和故障切换。它的主要工作是确保在出现故障的情况下,能够快速地切换到备用系统,以确保连续可用性。

2、工作原理:

Keepalived 使用虚拟路由冗余协议(Virtual Router Redundancy Protocol,VRRP)来协调主备切换。VRRP 允许多个服务器一起工作,但只有一个服务器被选为主服务器,其余服务器处于备用状态。主服务器接收 VIP,而备用服务器等待切换。

3、keepalived 三个主要模块:

● Core 模块:Core 模块是 Keepalived 的核心组件,负责主进程的启动、维护以及全局配置文件的加载和解析;

● Check 模块:Check 模块是用于健康检查的组件,它负责监测服务器的可用性;

● VRRP 模块:VRRP 模块用于实现 VRRP 协议。

4、keepalived 示例:

(1) 环境:

server1:192.168.198.130(VIP:192.168.198.140)

server2:192.168.198.131(VIP:192.168.198.140)

(2) 配置:

配置 server1:

① 编辑 keepalived 配置文件:

yum install -y keepalived

vim /etc/keepalived/keepalived.conf

!Configuration File for keepalived 
  global_defs { 
  router_id 1
}

#vrrp_script ck_apache { 
# script "/etc/keepalived/ck_apache.sh"
# interval 2 
# weight -5 
# fall 3 
#}

vrrp_instance VI_1 { 
 state MASTER 
 interface ens33
 mcast_src_ip 192.168.198.130
 virtual_router_id 55 
 priority 100 
 advert_int 1

 authentication { 
  auth_type PASS 
  auth_pass 123456 
 }
 virtual_ipaddress { 
  192.168.198.140/24 
 }

# track_script { 
# ck_apache
# }

}

● !Configuration File for keepalived:注释行,指示这是 Keepalived 的配置文件

● global_defs { router_id 1 }

定义全局参数 ;router_id 1:设备在 keepalived 组中的标识编号(实例路由编号)

● vrrp_instance VI_1 :设置虚拟路由器组名 (VI_1)

● state MASTER:设置主从状态

● interface ens33:设置监控网卡

● mcast_src_ip 192.168.198.130:心跳源 ip,用来标识 VRRP 协议消息的来源

● virtual_router_id 55:虚拟路由器编号55(130、131共同维护的虚拟设备名为VI_1,编号为55)

● priority 100:设置服务器优先级(0-255)

● advert_int 1:心跳间隔,表示 VRRP 实例每隔 1 秒发送一次消息,以通知其他路由器它的状态

配置身份验证参数,集群中的成员使用密码进行身份验证

配置虚拟 ip:192.168.198.140

② 拷贝配置文件到 131

scp -r /etc/keepalived/keepalived.conf 192.168.198.131:/etc/keepalived/

(131 需要先安装 keepalived)

③ 启动 keepalived

systemctl start keepalived

systemctl enable keepalived

④ 配置 apache:

yum install -y httpd

echo bean1 > /var/www/html/index.html

systemctl restart httpd
配置 server2:

① 修改 keepalived 配置文件:

router_id 2

state BACKUP

mcast_src_ip 192.168.198.131

priority 99

② 配置 apache:

echo bean2 > /var/www/html/index.html

systemctl restart httpd

(3) 客户机测试:

客户机访问虚拟 ip(192.168.198.140)

断开主服务器的网卡连接,再访问:

(4) keepalived 应对 apache 状态变更:

当 apache 状态为关闭时,客户机访问虚拟 ip 不会跳转到备用机。

① 编辑 apache 状态监控脚本(130):

vim /etc/keepalived/ck_apache.sh

#!/bin/bash
counter=$(ps -C httpd --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
  #尝试启动apache,停止5秒后再次检测
  systemctl start httpd
  sleep 5
  counter=$(ps -C httpd --no-heading|wc -l)

  if [ "${counter}" = "0" ];
    then
    #如果启动没成功,就杀掉keepalive触发主备切换
    systemctl stop keepalived
  fi
fi

添加脚本权限:chmod +x /etc/keepalived/ck_apache.sh

130 将脚本拷给 131,在 131 下给脚本授权:

scp /etc/keepalived/ck_apache.sh 192.168.198.131:/etc/keepalived/

② 在 keepalived 配置文件中启动监控脚本:

监控的脚本名:

启动脚本:每隔两秒钟执行脚本,如果重复三次后 apache 依然无法启动,本机权重减五

③ 查看脚本执行效果:

systemctl restart keepalived

停止 apache 后,查看状态:

5、keepalived + lvs

(1) 环境:

负载均衡器(主):192.168.198.130(VIP:192.168.198.140)

负载均衡器(备):192.168.198.131(VIP:192.168.198.140)

web 服务器1:192.168.198.132

web 服务器2:192.168.198.133

(2) 主负载均衡器配置(130):

yum install -y keepalived ipvsadm

修改 keepalived 配置文件:

!Configuration File for keepalived
global_defs {
  router_id Director1
}

vrrp_instance VI_1 {
  state MASTER
  interface ens33
  virtual_router_id 51
  priority 150
  advert_int 1

  authentication {
    auth_type PASS
    auth_pass 123456

  }

  virtual_ipaddress {
    192.168.198.140/24 dev ens33
  }
}

virtual_server 192.168.198.140 80 {
  lb_algo rr
  lb_kind DR
  protocol TCP

  real_server 192.168.198.132 80 {
   weight 1
   TCP_CHECK {
     connect_timeout 3
   }
 }

  real_server 192.168.198.133 80 {
   weight 1
   TCP_CHECK {
     connect_timeout 3
   }
 }
}

LVS 配置:

● virtual_server 192.168.198.140 80

负载均衡器监听的 ip 地址和端口

● lb_algo rr ;lb_kind DR ;protocol TCP

调度算法为 rr ;集群模式为 DR ;协议为 tcp

● real_server 192.168.198.133 80 { weight 1

定义真实服务器的 ip 地址、端口和权重比例

● TCP_CHECK { connect_timeout 3 }

指定了连接超时时间为3秒,用于检查真实服务器健康状态的设置。

(3) 备用负载均衡器配置(131):

yum install -y keepalived ipvsadm

● 将主负载均衡器的配置文件拷到备用负载上:

scp 192.168.198.130:/etc/keepalived/keepalived.conf /etc/keepalived/

● 修改配置文件:

router_id Director2

state BACKUP

priority 100

● 启动 master 和 backup 的服务:

systemctl start keepalived

systemctl enable keepailved

reboot

(4) web 配置(132、133):

yum install -y httpd

systemctl start httpd

systemctl enable httpd

① 配置虚拟 ip:

cp /etc/sysconfig/network-scripts/{ifcfg-lo,ifcfg-lo:0}

vim /etc/sysconfig/network-scripts/ifcfg-lo:0

DEVICE=lo

IPADDR=192.168.198.140

NETMASK=255.255.255.255

ONBOOT=yes

② 配置路由:

添加路由条目,192.168.198.140 这个 ip 只能通过 lo:0 口进行服务

/sbin/route add -host 192.168.198.140 dev lo:0

③ 配置 ARP:

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

④ 重启 web:reboot

(5) 测试:

① 在 master 上查看路由条目和虚拟 ip:

② 客户机访问:

master1 关闭 keepalived 后,客户机访问:

web1 关闭站点服务后,客户机访问:

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

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

相关文章

PHP如何批量修改二维数组中值

每个name值加pex,age加5, 原数据: $data[["name">a,age>12],["name">b,age>22],["name">c,age>33],["name">d,age>44], ];实现效果 方案一、foreach引用方式 $data[["…

7 款好用的 PDF 密码删除工具

这是最佳 PDF 密码删除工具列表。该列表包括免费和付费软件。将要在线完成的所有事情都需要密码才能感到安全。数据传输也是如此。大多数数据是通过文件传输的,PDF有自己的标志。PDF是一种灵活的文件格式,因此也可以专业使用。 有多种PDF 编辑器软件&am…

echart 设置 legend.type=“scroll“ 翻页时,中文上面被截取,显示不完整,解决办法

问题如图: 修复后的样子: 设置 legend 的 padding height 和 grid 都没有效果,最终找到办法: legend: {itemHeight: 10, // 截取原因是这里设置的太小textStyle: {fontSize: 20,// 行高设置会改变文本区域的高度,不…

SpringMVC Day 04 : 数据绑定

前言 SpringMVC是一个非常流行的Java Web框架,它提供了很多方便的功能和工具来帮助我们构建高效、灵活的Web应用程序。其中,数据绑定就是SpringMVC中非常重要的一部分,它可以帮助我们方便地将请求参数绑定到Java对象上,从而简化了…

北美干旱监测 (NADM)数据集

北美干旱监测 (NADM) 栅格数据集由国家环境信息中心 (NCEI) 和国家海洋和大气管理局 (NOAA) 国家综合干旱信息系统 (NIDIS) 生成。该数据集是加拿大、墨西哥和美国作者制作的北美干旱监测 (NADM) 的网格版本,其中对于每个 2.5 公里网格单元,该值由该地区…

hdlbits系列verilog解答(32位加法器)-25

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 您将获得一个执行 16 位加法的模块 add16 。实例化其中两个以创建一个 32 位加法器。一个 add16 模块在接收到第一个加法器的进位结果后,计算加法结果的低 16 位,而第二个 add16 模块计…

大厂面试题-什么是JVM

JVM全称是Java虚拟机,在聊什么是JVM之前,我们不妨看⼀下这张图。 从这张图中可以看出JVM所处的位置,同时也能看出它两个作用: 1、运⾏并管理Java源码⽂件所⽣成的Class⽂件, 2、在不同的操作系统上安装不同的JVM&#…

搭建微信小程序环境及项目结构介绍

一、注册 访问微信公众平台,将鼠标的光标置于账号分类中的小程序上, 点击‘查看详情’ 点击“前往注册” 下方也可以点击注册: 小程序注册页面: 步骤a:进入小程序注册页,根据指引填写信息和提交相应的资料&#x…

VR步进式漫游,轻松构建三维模型,带来展示新形式!

引言: 虚拟现实(Virtual Reality,简称VR)已经成为当今科技领域的一项创新力量,它正在逐渐渗透到不同的领域,其中步进式漫游是VR技术的一项重要应用,它能在各个行业的宣传中发挥重要作用。 一&a…

20.1 OpenSSL 字符BASE64压缩算法

OpenSSL 是一种开源的加密库,提供了一组用于加密和解密数据、验证数字证书以及实现各种安全协议的函数和工具。它可以用于创建和管理公钥和私钥、数字证书和其他安全凭据,还支持SSL/TLS、SSH、S/MIME、PKCS等常见的加密协议和标准。 OpenSSL 的功能非常…

驱动作业10.28

驱动程序 #include <linux/init.h> #include <linux/module.h> #include<linux/of.h> #include<linux/of_gpio.h> #include<linux/gpio.h> #include<linux/timer.h> #include <linux/fs.h> #include <linux/io.h> #include &…

SpringCloud复习:(7)@EnableZuulProxy注解的作用

使用zuul时&#xff0c;需要加EnableZuulProxy注解&#xff0c;这个注解定义如下&#xff1a; 可以看到&#xff0c;它引入了一个配置类ZuulProxyMarkerConfiguration,这个类代码如下&#xff1a; 其中定义了一个类型为ZuulProxyMarkerConfiguration.Marker类型的bean. 这个…

QPushButton样式设置

QPushButton样式设置 Chapter1 QPushButton样式设置无样式的按钮改变字体颜色改变字体改变字号改变背景颜色设置上边框为2个像素&#xff0c;样式为实线&#xff0c;颜色为黑色设置所有边框为2个像素&#xff0c;样式为实线&#xff0c;颜色为黑色设置左上角圆角为&#xff1a;…

使用一个Series序列减去另一个Series序列Series.subtract()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 求两个序列中对应位置 的各元素的差 a.subtract(b) [太阳]选择题 关于以下代码的说法中正确的是? import pandas as pd a pd.Series([1,2,3]) print("【显示】a:\n",a) b pd.Seri…

服务运营 |文章精选:运筹学视角下的众包竞赛

作者&#xff1a; Guo 编者按&#xff1a;众包竞赛&#xff08;Crowdsourcing Contests&#xff09;是一种利用大规模在线社群或平台来解决问题、完成任务或创新的方法。众包竞赛通常在在线平台上进行&#xff0c;这些平台提供任务发布、参与者注册、提交作品、评审等功能。一…

向量数据库Weaviate Cloud 和 Milvus Cloud:性能大比拼

最近,随着检索增强生成系统(RAG)的持续火爆,开发者对于“如何选择一个向量数据库”的疑惑也越来越多。过去几周,我们从性能和特性能力两个方面对 Weaviate Cloud 和 MilvusCloud 进行了详细的对比。在对比过程中,我们使用了开源的性能基准测试套件 VectorDBBench,围绕诸…

高精度数字电容传感芯片-MDC04

高精度数字电容传感芯片-MDC04 简介引脚说明PCBA板寄存器说明代码实现单总线通讯时序代码单总线通讯时序代码头文件MDC04驱动代码MDC04驱动代码头文件用户APP调用函数main主程序 简介 MDC04以低成本等优势&#xff0c;可用于智能小家电液位、水箱液位、油液液位、水浸传感、食…

配置Super-VLAN下的DHCP服务器示例

组网需求 如图1所示&#xff0c;某公司拥有两个部门&#xff0c;为了节省IP地址&#xff0c;部门A和部门B规划为同一网段&#xff1b;为了提升业务安全性&#xff0c;将不同部门的用户划分到不同VLAN中。企业管理员为了方便统一管理&#xff0c;希望部门内终端通过DHCP服务器动…

4.4 审计

思维导图&#xff1a; 4.4 审计理解笔记&#xff1a; 1. 审计的重要性&#xff1a; 除了用户身份验证和访问控制&#xff0c;审计是实现数据库安全的关键组成部分。审计是达到高安全标准&#xff08;如TDI/TCSEC的C2级别&#xff09;的必要功能。 2. 审计功能的核心&#xf…

【密评】商用密码应用安全性评估从业人员考核题库(十四)

商用密码应用安全性评估从业人员考核题库&#xff08;十四&#xff09; 国密局给的参考题库5000道只是基础题&#xff0c;后续更新完5000还会继续更其他高质量题库&#xff0c;持续学习&#xff0c;共同进步。 3251 单项选择题 根据GB/T 39786《信息安全技术 信息系统密码应用…