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

LVS中的keepalived高可用

文章目录

  • 前言
  • 一、Keepalived简介
  • 二、keepalived工作原理
  • 三、配置文件
  • 四、实验
    • 1.某台Real Server down
    • 2.LVS本身down
    • 实验过程:
  • 五、代码详细演示整体过程
    • 调度器安装软件、设置
    • 测试keepalived对后端RS的健康检测
    • backup服务主机设置


前言


一、Keepalived简介

Keepalived是linux下一个轻量级别的高可用解决方案。高可用:广义来讲,是指整个系统的高可用行;狭义的来讲就是主机的冗余和接管。用来解决单点故障
Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成

二、keepalived工作原理

keepalived是以VRRP协议为实现基础的,VRRP全称 Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。
core模块:keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
check:负责健康检查,包括常见的各种检查方式。
vrrp模块:实现VRRP协议的。

三、配置文件


global_defs { notification_email { root@localhost                         ##定义接收警告的人 } notification_email_from root@localhost     ##定义发邮件地址  smtp_server 172.0.0.1                      ##定义发邮件地址,若为127.0.0.1则使用本机自带邮件服务的脚本 smtp_connect_timeout 30  router_id LVS_DEVEL 
} #vrrp_script                               ##自定义名字,后面还会用到它 vrrp_garp_interval 0vrrp_gna_interval 0
} vrrp_instance VI_1 { state MASTER                               ##角色为master,备份机的为BACKUP interface eth0                             ##针对哪个网卡监听VIP virtual_router_id 51 priority 100                               ##权重为100,master要比backup大 advert_int 1 authentication { auth_type PASS auth_pass 1111                           ##定义密码,这个密码自定义 } virtual_ipaddress { 172.25.70.100                            ##定义VIP } 
} 
virtual_server 172.25.70.100 80 {delay_loop 6	                         #健康检查的时间间隔lb_algo rr	                             #LVS调度算法lb_kind DR	                             #LVS模式#persistence_timeout 50	                 #持久化超时时间,单位是秒。默认是6分钟protocol TCP	                         #4层协议(TCP|UDP|SCTP)real_server 172.25.70.2 80 {weight 1	                         #给服务器指定权重。默认是1TCP_CHECK {	                         #real_server中的健康检查connect_timeout 3	             #连接超时时间。默认是5snb_get_retry 3	                 #get尝试次数delay_before_retry 3	         #在尝试之前延迟多长时间}}real_server 172.25.70.3 80 {weight 1TCP_CHECK {connect_timeout 3nb_get_retry 3delay_before_retry 3}}
}

四、实验

LVS对后端不具备健康检测

1.某台Real Server down

现象
在这里插入图片描述在这里插入图片描述在这里插入图片描述

2.LVS本身down

现象
在这里插入图片描述在这里插入图片描述

实验过程:

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

问题一:某台Real Server down:
down服务器2的http时,ipvsadm -ln会自动删除服务器2的策略,并收到一封邮件,服务器3也是同样的;重启http后,ipvsadm -ln会自动生成策略
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

问题二:LVS本身down,做备份主机,当调度器down后,备份主机变为调度机,但是优先级低于主调度器!!!
备份机:yum install ipvsadm -y进行测试
在这里插入图片描述
调度器:systemctl stop keepalived,用备份机测试:
调度器停止服务后(关机、网络问题等等问题),VIP会被拿掉,备份机会生成VIP,变为MASTER角色!!!VIP跟着MASTER走!
调度器开始服务后,由于优先级高,会接管VIP,变为MASTER角色。
在这里插入图片描述
切换过程会有一点点损失

五、代码详细演示整体过程

调度器安装软件、设置

server1:
清除资源
[root@server1 ~]# ip a d 192.168.56.100/24 dev eth0
[root@server1 ~]# ipvsadm -C安装高可用软件
[root@server1 ~]# yum install -y keepalived[root@server1 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {root@localhost}notification_email_from keepalived@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.56.100}
}virtual_server 192.168.56.100 80 {delay_loop 3lb_algo rrlb_kind DR#persistence_timeout 50protocol TCPreal_server 192.168.56.12 80 {weight 1TCP_CHECK {connect_timeout 3delay_before_retry 3}}real_server 192.168.56.13 80 {weight 1TCP_CHECK {connect_timeout 3delay_before_retry 3}}
}[root@server1 ~]# systemctl enable --now keepalived

在这里插入图片描述

测试keepalived对后端RS的健康检测

[root@server2 ~]# systemctl  stop httpd[root@server1 ~]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.56.100:80 rr-> 192.168.56.13:80             Route   1      0          0故障的RS会自动从调度列表中被摘除再次启动服务
[root@server2 ~]# systemctl  start httpd恢复的RS会自动添加到调度列表

在这里插入图片描述

backup服务主机设置

server4:
安装高可用软件
[root@server4 ~]# yum install -y keepalived
从server1拷贝配置文件
[root@server1 ~]# scp /etc/keepalived/keepalived.conf server4:/etc/keepalived/[root@server4 ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {notification_email {root@localhost}notification_email_from keepalived@localhostsmtp_server 127.0.0.1smtp_connect_timeout 30router_id LVS_DEVELvrrp_skip_check_adv_addr#vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.56.100}
}virtual_server 192.168.56.100 80 {delay_loop 3lb_algo rrlb_kind DR#persistence_timeout 50protocol TCPreal_server 192.168.56.12 80 {weight 1TCP_CHECK {connect_timeout 3delay_before_retry 3}}real_server 192.168.56.13 80 {weight 1TCP_CHECK {connect_timeout 3delay_before_retry 3}}
}[root@server4 ~]# systemctl enable --now keepalived测试:
停止server1上服务
[root@server1 ~]# systemctl  stop keepalived.service查看资源是否自动迁移到server4

在这里插入图片描述


http://www.lryc.cn/news/13831.html

相关文章:

  • 【Vue3】组件数据懒加载
  • 基于 SmartX 分布式存储的 iSCSI 与两种 NVMe-oF 技术与性能对比
  • Anaconda 安装 Pytorch
  • 从零开始使用MMSegmentation训练Segformer
  • 会利用信息差赚钱的人才是聪明人
  • 【机器学习】Adaboost
  • 深度学习神经网络基础知识(二)权重衰减、暂退法(Dropout)
  • [面试直通版]网络协议面试核心之HTTP,HTTPS,DNS-DNS安全
  • 【OJ】A+B=X
  • Python实现性能自动化测试,还可以如此简单
  • Leetcode力扣秋招刷题路-0080
  • Java实现JDBC工具类DbUtils的抽取及程序实现数据库的增删改操作
  • 【docker】拉取镜像环境报错解决#ERROR: Get https://registry-1.docker.io/v2/
  • java中NumberFormat 、DecimalFormat的介绍及使用,java数字格式化,BigDecimal数字格式化
  • 2023什么是分销商城系统?营销,核心功能
  • 天翼数字生活C++客户端实习
  • Java 接口
  • 【React】react-router 路由详解
  • DaVinci 偏好设置:系统 - 内存和 GPU
  • 视频知识点(22)- 教你认清楚YUV420P和YUV420SP的真正差异在哪里
  • 企业电子招标采购系统源码Spring Cloud + Spring Boot + MybatisPlus + Redis + Layui
  • 面试常问-Alpha测试和Beta测试
  • html理论基础
  • 【安卓开发】数据存储全方案--详解持久化技术
  • Vue项目实战
  • Github 学生优惠包 -- 最新防踩坑指南
  • 2023年美国大学生数学建模A题:受干旱影响的植物群落建模详解+模型代码(二)
  • 第47章 后端管理首页与Axios拦截守卫原理
  • 【前端】小程序开发入门:安装开发工具、目录结构与项目配置
  • Java反序列化漏洞——CommonsBeanutils1链分析