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

相关推荐
西西弗Sisyphus15 小时前
模型训练 不同批次大小与学习率下的训练损失对比(2)
学习·batchsize·lr·learning rate
翼龙云_cloud15 小时前
阿里云国际渠道代理商:如何在ECS上部署Flask应用?
运维·数据库·阿里云·flask·云计算
软件开发技术深度爱好者15 小时前
在线学习实践 TypeScript 的官方Playground(演练场)使用介绍
javascript·学习·typescript
我想我不够好。15 小时前
豹女q w e r衔接闪现
学习
aichitang202417 小时前
希尔伯特空间中的正交性
人工智能·学习·机器学习·ai·泛函分析
for_ever_love__17 小时前
python基础语法学习: 正则表达式
python·学习·正则表达式
佳児素花痴╮17 小时前
STM32U575RIT6(USART)学习
stm32·嵌入式硬件·学习
sunshine22 girl17 小时前
Angular7,9,学习笔记三 dom操作
笔记·学习·angular
春风解人意17 小时前
从零开始学习嵌入式P28----线程
c语言·学习·算法
MartinYeung518 小时前
[论文学习]MAC:多智能体宪章学习
人工智能·学习·macos