Keepalived 高可用,nginx + keepalived , lvs + keepalived、 数据库+keepalived

keepalived

官网
Keepalived 可以用来防止服务器单点故障的发生

# 原理
是基于VRRP协议实现的,当backup收不到vrrp包时,就认为master宕机了,这时就需要根据VRRP的优先级来选举一个backup 当master,就实现服务的HA(高可用)啦# VRRP  Vitrual Router Redundancy Protocol ,虚拟路由冗余协议
这个协议,可以认为实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的VIP(该路由器所在局域网内其它机器的默认路由为该VIP),master 会发组播,当backup收不到vrrp包时就认为master 宕机了,这时就需要根据VRRP的优先级来选举一个backup 当master,就实现路由器HA(高可用)啦
#########
多台服务器组成一个虚拟路由器组 ,共享一个虚拟 IP 。通过优先级 选举 Master 节点,其他节点为 Backup。Master 节点定期发送 VRRP 通告,若 Backup 未收到通告,则触发选举新 Master。
##########
keepalived 主要包含三个模块 core 、 check、vrrp
# 1 core 是keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析
# 2 check 负责健康检查
# 3 vrrp模块来实现VRRP协议的## check 健康检查:
1:支持 TCP、HTTP、HTTPS、SSL、脚本等多种检查方式。
2:若 Master 节点的服务异常,Keepalived **自动降低优先级**,触发 VIP 漂移到 Backup。

在这里插入图片描述

案例

scp 远程拷贝

#  192.168.88.22 真实服务IP
#  192.168.88.33 真实服务IP
#  192.168.88.99 负载均衡服务IP
#  192.168.88.100 负载均衡服务IP
echo "RS-192.168.88.22 service" > /var/www/html/index.nginx-debian.html
echo "RS-192.168.88.33 service" > /var/www/html/index.nginx-debian.htm

》》》》 22、33 真实服务器
1、通过安装Nginx(当作web服务的),当然也可以安装tomcat
2、修改nginx的 默认网页内容

# 安装nginx 作为web服务的,可以安装tomcat
apt update && apt install nginx -y && systemctl enable nginx && systemctl  restart nginx
# 修改nginx的 默认网页内容
echo "RS-192.168.88.22 service" > /var/www/html/index.nginx-debian.html
echo "RS-192.168.88.33 service" > /var/www/html/index.nginx-debian.htm

》》》》 99、100 负载均衡服务器
1、通过安装Nginx(当作负载均衡),当然也可以LVS、HAProxy
2、修改nginx的配置文件
3、安装keepalived
4、配置keepalived

》》》 99、100 负载均衡服务器 修改文件如下

# 通过安装Nginx(当作负载均衡),当然也可以LVS、HAProxy 
apt update && apt install nginx -y && systemctl enable nginx && systemctl  restart nginx
#  99,100 (负载均衡器) 安装 Keepalived 
apt update && apt install keepalived -y && systemctl enable keepalived && systemctl start keepalived
## 修改之后 
## nginx -t  测试一下语法
## nginx -s reload   加载配置
## vim /etc/nginx/nginx.conf
worker_processes  2;events {worker_connections  1024;
}http {upstream httpd {server 192.168.88.22;server 192.168.88.33;}include       mime.types;default_type  application/octet-stream;sendfile        on;server {listen       80;#  为了模拟域名访问,  需要在访问的客户端 host 加   IP  service.zen.com# server_name  service.zen.com;#charset koi8-r;#access_log  logs/host.access.log  main;location / {proxy_pass http://httpd;}}}

在这里插入图片描述

# 所有的负载均衡器(案例 99,100两台)都要 配置
# 一个是master,其它都是 backup
# priority  优先级 越大,优先级越高  
# 配置keepalived
## vim /etc/keepalived/keepalived.conf
#  这个是  主的
!Configuration File for keepalivedglobal_defs{# # 节点标识 支持字符串模式 backup 的这个名称要修改,不能一个名称  是唯一的router_id 99}vrrp_instance VI_1 {#  # 初始状态:MASTER/BACKUPstate master   # # 绑定的物理网卡  要通过ip ad 查看 linux 是 ens,还是ethinterface ens33#   # 虚拟路由 ID(同一组需相同(同一集群,主备是一致),范围 0-255)# 我的99,100 两台是一组,所以要一致virtual_router_id 88# # 优先级(值越大越优先)priority 100# 通告间隔(秒)advert_int 2# # 认证配置authentication {# 认证类型:PASS/AHauth_type PASS# 密码(同一组需相同)auth_pass 1234}# 虚拟 IP(VIP)virtual_ipaddress{192.168.88.200/24}
}# 这个是 backup
!Configuration File for keepalivedglobal_defs{router_id 100
}vrrp_instance VI_1 {state backupinterface ens33virtual_router_id 88priority 99advert_int 2authentication {auth_type PASSauth_pass 1234}virtual_ipaddress{192.168.88.200/24}
}

在这里插入图片描述

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

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

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

脚本检测 负载均衡是否正常

# 在  /usr/local/keepalived 中创建  check_nginx.sh  脚本,脚本内容如下
# 因为使用nginx代理的,只有nginx 正常启动,则可以curl -I http://127.0.0.1 正常访问
# $? 等于 0,则表示 nginx 正常,非0,表示 启动异常,或者不工作。
# $?  是上一指令的返回值,成功是0,不成功是1
# 要保证这个脚本文件,当前用户有执行权限
chmod a+X /usr/local/keepaliverd/check_nginx.sh
#!/bin/bash
/usr/bin/curl -I http://127.0.0.1
if [ $? -ne 0 ]; thensystemctl restart nginxif [ $? -ne 0 ] ; thensystemctl stop keepalivedfi      
fi  # 或者用这种脚本,更为通用性
~                                                                                                                  
#!/bin/bash
counter=$(ps -C nginx --no-heading | wc -l)
if [ "${counter}" = "0" ]; thensystemctl restart nginxsleep 5counter=$(ps -C nginx --no-heading | wc -l)if [ "${counter}" = "0" ]; thensystemctl stop keepalivedfifi
## /etc/keepalived/keepalived.conf 的配置文件 
!Configuration File for keepalivedglobal_defs{router_id 99
}
# 健康检测模块调用
vrrp_script check_nginx {script "/usr/local/keepalived/check_nginx.sh"interval 2    # 检查间隔时间(秒),默认1# # 失败一次,将自己的优先级-20,如果MASTER的priority=100,BACKUP的priority=70# 那么MASTER要失败2次后变为60,低于BACKUP的70,MASTER节点会降级为BACKUP,而BACKUP节点升级为MASTERweight -20    # 检查失败时优先级降低的值  (-254 - 254)}
vrrp_instance VI_1 {state masterinterface ens33virtual_router_id 88priority 100advert_int 2# 引用脚本track_script {check_nginx}authentication {auth_type PASSauth_pass 1234}virtual_ipaddress{192.168.88.200/24}
}

查看日志

tail -f /var/log/syslog

在这里插入图片描述

单实例主备模式的keepalived部署 双多实例双主模式的keepalived部署

单vip 架构: 只有master上有vip,backup上没有vip,这个时候master会比较忙,backup机器会比较闲,设备使用率比较低
上面的案例就单VIP主备模式

双vip 架构: 启动2个vrrp实例,每台机器上都启用2个vrrp实例,一个做master,一个做backup,启用2个vip,每台机器上都会有一个vip,这2个vip都对外提供服务,这样就可以避免单vip的情况下,一个很忙一个很闲。 可以提升设备的使用率,这两台机器互为主备。

》》》》 双多实例双主模式的keepalived部署

在这里插入图片描述

## /etc/keepalived/keepalived.conf 的配置文件 
!Configuration File for keepalivedglobal_defs{router_id Master_99
}
# 健康检测模块调用
vrrp_script check_nginx {script "/usr/local/keepalived/check_nginx.sh"interval 2   weight -20   }
vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 88priority 100advert_int 2# 引用脚本track_script {check_nginx}authentication {auth_type PASSauth_pass 1234}virtual_ipaddress{192.168.88.200/24}
}
vrrp_instance VI_2 {state BACKUPinterface ens33virtual_router_id 100priority 99advert_int 2# 引用脚本track_script {check_nginx}authentication {auth_type PASSauth_pass 1234}virtual_ipaddress{192.168.88.155/24}
}
## /etc/keepalived/keepalived.conf 的配置文件 
!Configuration File for keepalivedglobal_defs{router_id Master_99
}
# 健康检测模块调用
vrrp_script check_nginx {script "/usr/local/keepalived/check_nginx.sh"interval 2   weight -20   }
vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 88priority 99advert_int 2# 引用脚本track_script {check_nginx}authentication {auth_type PASSauth_pass 1234}virtual_ipaddress{192.168.88.200/24}
}
vrrp_instance VI_2 {state MASTERinterface ens33virtual_router_id 100priority 100advert_int 2# 引用脚本track_script {check_nginx}authentication {auth_type PASSauth_pass 1234}virtual_ipaddress{192.168.88.155/24}
}

LVS+ keepalived

LVS负载均衡 资料

案例使用  LVS_DR 直接路由模式   
#  192.168.88.22 真实服务IP
#  192.168.88.33 真实服务IP
#  192.168.88.99 负载均衡服务IP
#  192.168.88.100 负载均衡服务IP## 99,100 lvs 负载均衡器中 配置
#ip a d dev ens33 192.168.88.200/32  删除VIP
ip a a dev ens33 192.168.88.200/32
ipvsadm -A -t 192.168.88.200:80 -s rr
ipvsadm -a -t 192.168.88.200:80 -r 192.168.88.22:80 -g
ipvsadm -a -t 192.168.88.200:80 -r 192.168.33.33:80 -g
ipvsadm -S > /etc/sysconfig/ipvsadm
systemctl start ipvsadm##  22,33  RS 真实服务器中配置
ip a a dev  lo  192.168.88.200/32# ARP静默   临时
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
# ARP静默  永久 
cat >> /etc/sysctl.conf <<EOF
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=2
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
EOF
sysctl -p
#  99,100 LVS负载均衡都要安装keepalived 同时配置 keepalivd  
# 路径  /etc/keepalived/keepalived.conf
!Configuration File for keepalivedglobal_defs{router_id lvs_master
}vrrp_instance VI_1 {state MASTERinterface ens33# 不抢占资源nopreempt virtual_router_id 88priority 100advert_int 2authentication {auth_type PASSauth_pass 1234}virtual_ipaddress{192.168.88.200/24}virtual_server 192.168.88.200 80 {delay_loop 3lb_algo rr  # LVS 调度算法lb_kind DR  # LVS 集群模式  (直接路由模式)nat_mask 255.255.255.0  protocol TCP   # 健康检查使用的协议real_server 192.168.88.22 80 {weight 1inhibit_on_failure  # 当该节点失败时,把权重设置为0,而不是从IPVS中删除。TCP_CHECK {   #  健康检查connect_port 80     # 检查的端口号connect_timeout 3   #  连接超时的时间}}real_server 192.168.88.33 80 {weight 1inhibit_on_failureTCP_CHECK {connect_port 80connect_timeout 3}}}

在这里插入图片描述

在这里插入图片描述

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

  1. LVS的 VIP 是/32 而Keepalived的 VIP 是 /24

数据库+keepalived

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/85074.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/85074.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开疆智能Devicenet转ModbusTCP网关连接台达从站通讯模块配置案例

本案例是通过开疆智能Devicenet转ModbusTCP网关连接台达Devicenet从站通讯模块DVPDT02-H2的配置案例&#xff0c;网关作为ModbusTCP服务器和Devicenet主站&#xff0c;连接台达Devicenet从站&#xff0c; 配置过程&#xff1a; 首先配置Devicenet从站&#xff0c;先设置从站De…

网络NAT是什么

网络NAT&#xff08;Network Address Translation&#xff0c;网络地址转换&#xff09;是一种用于计算机网络中的技术&#xff0c;主要目的是在私有网络与公有网络&#xff08;比如互联网&#xff09;之间转换IP地址&#xff0c;实现私有网络中的多台设备通过一个公网IP访问外…

React状态管理——react-redux

目录 一、redux介绍 二、安装 三、基本实现步骤 3.1 创建Action Types 3.2 创建counterAction 3.3 创建counterReducer 3.4 结合所有Reducer 3.5 创建store 3.6 入口文件中提供store 3.7 在组件中的使用 3.8 使用thunk实现异步支持 3.8.1 安装 3.8.2 在counterAct…

Java 零工市场小程序 | 灵活就业平台 | 智能匹配 | 日结薪系统 | 用工一站式解决方案

在就业形势如此严峻的情况下&#xff0c;很多小伙伴都会选择零工的工作方式来赚取外快&#xff0c;很多用人单位也会因为职为短暂空缺或是暂时人手不够而选择招用兼职人员。 而Java 作为企业级开发的主流语言&#xff0c;以其卓越的性能和稳定性著称。把零工的需求&#xff08…

数据可视化——一图胜千言

第04篇&#xff1a;数据可视化——一图胜千言 写在前面&#xff1a;大家好&#xff0c;我是蓝皮怪&#xff01;前面几篇我们聊了统计学的基本概念、数据类型和描述性统计&#xff0c;这一篇我们要聊聊数据分析中最直观、最有趣的部分——数据可视化。你有没有发现&#xff0c;很…

1.1 Linux 编译FFmpeg 4.4.1

一、安装编译工具 sudo apt install -y autoconf automake build-essential cmake git pkg-config nasm yasm libtool zlib1g-dev说明&#xff1a; autoconf&#xff1a;生成 configure 脚本&#xff0c;用于自动配置源码。automake&#xff1a;与 autoconf 配合&#xff0c;…

【图片识别改名】如何批量识别大量图片的文字并重命名图片,基于WPF和京东OCR识别接口的实现方案

应用场景 在企业文档管理、数字图书馆、电商商品管理等场景中&#xff0c;经常需要处理大量图片中的文字信息。例如&#xff1a; 电商平台需要将商品图片中的型号、规格等信息提取出来作为文件名图书馆需要将扫描的图书页面识别为文字并整理归档企业需要将纸质文档电子化并按…

简历模板2——数据挖掘工程师5年经验

姓名 / Your Name 数据挖掘工程师 | 5年经验 | 推荐/风控/图模型 &#x1f4de; 138-XXXX-XXXX | ✉️ your.emailexample.com | &#x1f310; github.com/yourname | &#x1f4cd; 北京 &#x1f3af; 个人简介 / Summary 5年大厂数据挖掘经验&#xff0c;硕士学历。擅长推…

CSS3 渐变效果

1. 引言 CSS3 渐变能够在指定颜色之间创建平滑过渡效果。这种设计元素不仅能为网页增添丰富的视觉层次&#xff0c;更是现代网页设计的重要组成部分。CSS3 提供两种主要的渐变类型&#xff1a;线性渐变(Linear Gradient) - 沿直线方向进行颜色过渡&#xff1b;径向渐变(Radial…

A Survey on 3D Gaussian Splatting——3D高斯领域综述

原文链接&#xff1a;[2401.03890] A Survey on 3D Gaussian Splatting 动态更新的GitHub仓库&#xff08;包含性能对比与最新文献追踪&#xff09;&#xff1a; https://github.com/guikunchen/3DGS-Benchmarks https://github.com/guikunchen/Awesome3DGS 摘要&#xff1…

计算机网络 期末实训 eNSP 校园网

eNSP 综合实训 小型校园网 计算机网络期末实训 01 搭建拓扑 1.设计任务 构建一个小型校园网络,涵盖以下设备与区域: 学生宿舍区:50台计算机办公楼区:30台计算机(细分为财务部门、人事部门及其他科室)图书馆:10台计算机教学楼:30台计算机服务器集群:2台服务器,分别用…

Smart Form Adobe form 强制更改内表:TNAPR

强制更改内表:TNAPR se16-> Smart Form总览 Smart form 变量格式说明: &symbol& (括号中,小写字母为变量) &symbol& 屏蔽从第一位开始的N位 &symbol (n)& 只显示前N位 &symbol (S)& 忽略正负号 &symbol (<)& 符号在…

页面配置文件pages.json和小程序配置

页面配置文件pages.json和小程序配置 pages.jsonpagesstyle-navigationBarBackgroundColorstyle-navigationBarTitleTextstyle-navigationStylestyle-enablePullDownRefresh注意事项不同平台区分配置新建页面 globalStyletabBar代码 manifest.json授权web配置代理 pages.json …

Linux网络配置工具ifconfig与ip命令的全面对比

在Linux网络管理中&#xff0c;ifconfig和 ip命令是最常用的两个工具。随着时间的推移&#xff0c;ip命令逐渐取代了 ifconfig&#xff0c;成为更强大和灵活的网络配置工具。本文将对这两个工具进行全面对比&#xff0c;帮助您理解它们的区别和各自的优势。 一、ifconfig命令 …

STM32 实现解析自定义协议

一、环形队列设计与实现&#xff08;核心缓冲机制&#xff09; 数据结构设计&#xff1a; #define BUFFER_SIZE 512 #define BUFFER_MASK (BUFFER_SIZE - 1) typedef struct {volatile uint8_t buffer[BUFFER_SIZE]; // 环形缓冲区&#xff08;大小可配置&#xff09;volati…

NGINX 四层上游模块`ngx_stream_upstream_module` 实战指南

一、模块定位与引入 模块名称&#xff1a;ngx_stream_upstream_module 首次引入&#xff1a;NGINX 1.9.0&#xff08;2015-08-04&#xff09; 编译选项&#xff1a;启用 --with-stream&#xff08;含此模块&#xff09; 作用&#xff1a; 定义后端服务器组&#xff08;upstr…

WinUI3入门2:DataGrid动态更新 添加删除和修改字段

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 源码指引&#xff1a;github源…

基于Python学习《Head First设计模式》第十三章 现实世界中的模式

定义设计模式 设计模式要素 模式名称、分类意图&#xff1a;描述模式是什么动机&#xff1a;描述什么时候使用这个模式&#xff0c;具体场景适用性&#xff1a;描述什么地方使用这个模式&#xff0c;用在什么场合结构&#xff1a;类图参与者&#xff1a;类和对象的责任和角色…

线性代数(1)线性方程组的多种解法

求解线性方程组是线性代数的核心问题之一&#xff0c;根据方程组的类型&#xff08;如齐次/非齐次、方阵/非方阵、稀疏/稠密等&#xff09;&#xff0c;可以采用不同的解法。以下是常见的线性方程组解法分类及简要说明&#xff1a; 一、直接解法&#xff08;精确解&#xff09…

肝脏/肝脏肿瘤图像分割数据集(猫脸码客第261期)

探秘肝脏/肝脏肿瘤图像分割&#xff1a;医学影像技术的新突破 一、引言 肝脏/肝脏肿瘤图像分割在医学领域占据着愈发重要的地位&#xff0c;为肝脏疾病的精准诊断与有效治疗提供了关键技术支撑。随着医学成像技术的飞速进步&#xff0c;如磁共振成像&#xff08;MRI&#xff…