云计算学习100天-第31天

Keepalived

概念

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

功能

  • LVS规则管理
  • LVS集群真实服务器状态监测
  • 管理VIP
主机名 IP地址 角色
pubserver eth0:192.168.88.240 ansible主机
client eth0:192.168.88.10 客户端
lvs1 eth0:192.168.88.5 lvs1调度器
lvs2 eth0:192.168.88.6 lvs2调度器
web1 eth0:192.168.88.100 web服务器
web2 eth0:192.168.88.200 web服务器

使用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

相关推荐
2501_945318498 小时前
备考方案:针对数据分析师的知识结构,制定攻克赛一认证的最优学习路径
学习·百度
2301_792674869 小时前
java学习day29(juc)
java·开发语言·学习
qq_5710993511 小时前
学习周报四十
学习
瑶光守护者12 小时前
【一文读懂】OpenClaw系统架构分析:自主人工智能智能体的范式迁移与技术底座分析
人工智能·笔记·学习·系统架构·边缘计算·openclaw
豆豆13 小时前
如何用PageAdmin CMS和阿里云快速搭建一个网站?完整步骤教程
阿里云·云计算·cms·网站建设·网站制作·网站开发·建站
炽烈小老头13 小时前
【每天学习一点算法 2026/04/13】两数相除
学习·算法
_李小白13 小时前
【OSG学习笔记】Day 45: osg::Camera::DrawCallback (抓取图片)
笔记·学习
青苔猿猿13 小时前
OpenWebUI(20)源码学习-版本升级
人工智能·学习·ai·openwebui
不灭锦鲤14 小时前
网络安全学习第166天
学习
Century_Dragon14 小时前
世纪龙-驶入未来课堂:新能源汽车故障诊断虚拟实训软件助力职教
学习