当前位置: 首页 > ops >正文

云计算学习100天-第31天

Keepalived

概念

  • keepalived 是Linux下一个轻量级的高可用解决方案
  • 主要是通过虚拟路由冗余协议(VRRP)来实现高可用功能
  • Virtual Router Redundancy Protocol
  • 起初就是为了补充LVS功能而设计的,用于监控LVS集群内后端真实服务器状态
  • 后来加入了VRRP的功能,它出现的目的是为了解决静态路由出现的单点故障问题

功能

  • LVS规则管理
  • LVS集群真实服务器状态监测
  • 管理VIP
主机名IP地址角色
pubservereth0:192.168.88.240ansible主机
clienteth0:192.168.88.10客户端
lvs1eth0:192.168.88.5lvs1调度器
lvs2eth0:192.168.88.6lvs2调度器
web1eth0:192.168.88.100web服务器
web2eth0:192.168.88.200web服务器

使用Keepalived实现LVS高可用,配置测试高可用负载均衡集群

lvs1和lvs2节点安装LVS和Keepalived软件,在ansible主机上使用剧本安装


vim 11_inst_lvs_kp.yml
---
- name: install soft
hosts: lbs
tasks:
- name: install pkgs    #安装软件
yum:
name: ipvsadm,keepalived
state: present

ansible-playbook 11_inst_lvs_kp.yml

配置lvs1节点Keepalived软件

vim /etc/keepalived/keepalived.conf
global_defs {
...
router_id lvs1           #集群节点唯一标识
vrrp_iptables            #放行防火墙规则
...
vrrp_strict              #严格遵守VRRP规则
...
}

vrrp_instance VI_1 {
state MASTER            #状态
interface eth0          #网卡
virtual_router_id 51    #虚拟路由唯一标识符
priority 100            #优先级
advert_int 1            #心跳包间隔时间
authentication {        #认证方式
auth_type PASS      #密码认证
auth_pass 1111      #集群密码
}
virtual_ipaddress {     #定义VIP
192.168.88.15/24 dev eth0 label eth0:0  #VIP地址及绑定网卡和虚接口标签
}
}

virtual_server 192.168.88.15 80 {   #定义LVS虚拟服务器
delay_loop 6                    #健康检查延时6s开始
lb_algo wrr                     #调度算法
lb_kind DR                      #LVS工作模式
persistence_timeout 50          #50s内相同客户端发起请求由同一服务器处理
protocol TCP                    #虚拟服务器协议
real_server 192.168.88.100 80 { #定义真实服务器
weight 1                    #权重
TCP_CHECK {                 #健康检查方式
connect_timeout 3       #连接超时时间为3s
nb_get_retry 3          #连续3次访问失败则认为真实服务器故障
delay_before_retry 3    #健康检查包时间间隔
}
}

    real_server 192.168.88.200 80 {
weight 2
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

# 启动服务测试
ipvsadm -Ln                          #启动服务前无LVS规则
systemctl enable --now keepalived    #加入开机自启并立即启动
ipvsadm -Ln                          #启动服务后有LVS规则
ip a s | grep 192.168                #VIP已绑定

client客户端同一服务器处理请求

for i in {1..6}
> do
>  curl http://192.168.88.15
> done

Welcome to web2
Welcome to web2
Welcome to web2
Welcome to web2
Welcome to web2
Welcome to web2

补充:lvs1节点注释持久连接时长

vim  /etc/keepalived/keepalived.conf     
...
#persistence_timeout 50
...
systemctl restart keepalived

#client客户端同一服务器处理请求
for i in {1..6};do curl http://192.168.88.15; done
Welcome to web2
Welcome to web1
Welcome to web2
Welcome to web2
Welcome to web1
Welcome to web2


配置lvs2节点Keepalived软件

#将lvs1节点的配置文件复制给lvs2节点 这里用rsync -av命令更安全
scp /etc/keepalived/keepalived.conf root@192.168.88.6:/etc/keepalived/
#进入到lvs2节点编辑配置文件
vim /etc/keepalived/keepalived.conf
#修改如下三行
router_id lvs2  #集群节点唯一标识符
state BACKUP    #状态
priority 50     #优先级

ipvsadm -Ln
systemctl start keepalived
ipvsadm -Ln

验证真实服务器健康检查

#web1节点停止nginx服务,模拟web1故障
systemctl stop nginx   
#lvs1节点和lvs2节点中查看到LVS规则中web1被擦除
ipvsadm -Ln              
TCP  192.168.88.15:80 wrr
-> 192.168.88.200:80            Route   2      0          0   
#web1节点启动nginx服务      
systemctl start nginx    #模拟web1修复
#lvs1节点和lvs2节点中的LVS规则中web1被添加回来
ipvsadm -Ln              
TCP  192.168.88.15:80 wrr
-> 192.168.88.100:80            Route   1      0          0         
-> 192.168.88.200:80            Route   2      0          0  

验证高可用负载均衡

#lvs1节点
ip a s | grep 88.15          #VIP绑定于lvs1
inet 192.168.88.15/24 scope global secondary eth0:0
systemctl stop keepalived    #模拟lvs1节点故障
ip a s | grep 88.15          #VIP释放
ipvsadm -Ln                  #LVS规则被清空

#lvs2节点
[root@lvs2 ~]# ip a s | grep 88.15   #VIP绑定于lvs2
inet 192.168.88.15/24 scope global secondary eth0:0
ipvsadm -Ln
TCP  192.168.88.15:80 wrr
-> 192.168.88.100:80            Route   1      0          0         
-> 192.168.88.200:80            Route   2      0          0         

client客户端查看,不受影响
for i in {1..6}
do
curl http://192.168.88.15
done                      

Welcome to web1
Welcome to web2
Welcome to web2
Welcome to web1
Welcome to web2
Welcome to web2

http://www.xdnf.cn/news/18913.html

相关文章:

  • 从零开始的云计算生活——第五十三天,发愤图强,kubernetes模块之Prometheus和发布
  • 【SpringAI】快速上手,详解项目快速集成主流大模型DeepSeek,ChatGPT
  • 【TEC045-KIT】基于复旦微 FMQL45T900 的全国产化 ARM 开发套件
  • Uniapp中自定义导航栏
  • 如何将iPhone上的隐藏照片传输到电脑
  • Flask测试平台开发实战-第二篇
  • 服务器核心组件:CPU 与 GPU 的核心区别、应用场景、协同工作
  • 麒麟操作系统挂载NAS服务器
  • React中优雅管理CSS变量的最佳实践
  • 【动态规划】子数组、子串问题
  • 保姆级教程 | 在Ubuntu上部署Claude Code Plan Mode全过程
  • 设计模式相关面试题
  • 2025年KBS SCI1区TOP,矩阵差分进化算法+移动网络视觉覆盖无人机轨迹优化,深度解析+性能实测
  • 前端异常监控,性能监控,埋点,怎么做的
  • Android 开发 - 数据共享(数据共享、内容提供者实现、动态权限申请)
  • 深度学习篇---模型参数保存
  • [肥用云计算] Serverless 多环境配置
  • PCM转音频
  • 面试之HashMap
  • LightRAG
  • 文档格式转换软件 一键Word转PDF
  • PPT处理控件Aspose.Slides教程:在 C# 中将 PPTX 转换为 Markdown
  • 【qml-7】qml与c++交互(自动补全提示)
  • [n8n] 全文检索(FTS)集成 | Mermaid图表生成
  • Android 使用MediaMuxer+MediaCodec编码MP4视频
  • 辅助驾驶出海、具身智能落地,稀缺的3D数据从哪里来?
  • 介绍智慧城管十大核心功能之一:风险预警系统
  • 架构评审:构建稳定、高效、可扩展的技术架构(下)
  • Java8-21的核心特性以及用法
  • 揭开.NET Core 中 ToList () 与 ToArray () 的面纱:从原理到抉择