云计算学习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

相关推荐
xiaofan6720132 分钟前
金融分析师职场学习技能提升方法分享
学习·金融
showker28 分钟前
阿里云CDN加速流量消耗大原因:动态加速
阿里云·云计算
Lyre丶1 小时前
Ubuntu 24.04 LTS 安装GAMIT
linux·经验分享·学习·ubuntu·gamit
strongwyy1 小时前
esp32墨水屏学习3
学习
_dindong1 小时前
Linux系统编程:线程概念
linux·运维·笔记·学习
贝塔实验室3 小时前
LDPC码的概念
科技·学习·程序人生·算法·学习方法·程序员创富·改行学it
尘似鹤3 小时前
微信小程序学习(三)
学习
尘似鹤3 小时前
微信小程序学习(二)
学习·微信小程序·小程序
Coovally AI模型快速验证13 小时前
从避障到实时建图:机器学习如何让无人机更智能、更安全、更实用(附微型机载演示示例)
人工智能·深度学习·神经网络·学习·安全·机器学习·无人机
ZStack开发者社区13 小时前
全球化2.0 | 中国澳门政府部门通过ZStack替代VMware承载核心业务
云计算