高可用集群 keepalived

news/2024/7/9 22:19:09 标签: keepalived, lvs, 负载均衡, web, 集群

一、高可用集群

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.niftyadmin.cn/n/5129437.html

相关文章

2023年中国调音台产业链、产量及市场规模分析[图]

调音台是一种专业音频设备,用于混音、处理和控制音频信号。它通常用于音乐制作、现场演出、录音室以及广播等场景中。调音台允许用户调整不同声音来源的音频信号,使其在混音过程中达到理想的音质和平衡。调音台按信号出来方式可分为:模拟式调…

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

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

干式电抗器的尺寸和重量对系统有什么影响?

干式电抗器是一种用于电力系统中的无功补偿设备,其尺寸和重量对系统有以下几方面的影响,干式电抗器的尺寸和重量会影响设备的安装和布置,较大尺寸和重量的电抗器需要更大的安装空间,并且可能需要额外的支撑结构。在设计系统时需要…

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

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

【Java基础】JDK8-17新特性

JDK8-17新特性 文章目录 JDK8-17新特性1. 如何学习新特性2. Java8新特性:Lambda表达式3. Java8新特性:函数式(Functional)接口3.1 什么是函数式接口3.2 如何理解函数式接口3.3 举例3.4 Java 内置函数式接口3.4.1 之前的函数式接口3.4.2 四大核心函数式接…

Vue3.3指北(三)

Vue3.3指北 1、Vue2和Vue31.1、 Vue2 选项式 API vs Vue3 组合式API1.2、Vue3的优势 2、组合式API - setup2.1、setup选项2.2、setup中写代码的特点2.3、<script setup>语法糖2.4、props和context 3、组合式API - reactive和ref函数3.1、reactive3.2、ref3.3、reactive 对…

chrome谷歌浏览器取消网页所有剪切板的授权方法步骤

地址栏输入 chrome://settings/content/clipboard选择 不允许网站查看您剪贴板中的文字或图片 ———————————————— 版权声明&#xff1a;本文为CSDN博主「一切V随缘」的原创文章&#xff0c;遵循CC 4.0 BY-SA版权协议&#xff0c;转载请附上原文出处链接及本声明…