Keepalived+LVS DR模式高可用架构实践
Keepalived最初是为LVS设计,专门监控各服务器节点的状态(LVS不带健康检查功能,所以使用keepalived进行健康检查),后来加入了VRRP(虚拟路由热备协议(Virtual Router Redundancy Protocol)功能,防止单点故障,实现了调度节点的高可用。
Keepalived检测每个服务器节点状态,服务器节点异常或工作出现故障,Keepalived将故障点从集群系统中剔除。当故障点恢复后,Keepalived再将其加入到集群系统中。
Keepalived 亮点:
一、可实现VRRP虚拟路由深度解决代理服务器故障自动切换。
二、可以自动配置LVS完美整合Keepalived+lvs功能。
三、Keepalived解决了lvs不带健康检查功能,可实现自动剔除集群故障机器,恢复自动添加。
实践环境准备:
后端web1:192.168.4.100/24 vip:192.168.4.15
后端web2:192.168.4.200/24 vip:192.168.4.15
keepalived:
lvs:192.168.4.5 vip:192.168.4.15
lvs:192.168.4.6 vip:192.168.4.15
重要要领:
1.因为是结合LVS的DR调度模式所以必须要设定后端服务器伪装IP,设置内核参数禁止申告和回应本地回环lo的arp请求,请参考上一篇博客操作:LVS DR模式实践 但是需要这里是使用keepalived+lvs
在两台lvs服务器上安装keepalived 和 ipvsadm 并设置自动开机启动,并清空已有的lvs规则。
yum install -y keepalived ipvsadm && systemctl enable keepalived && ipvsadm -C
编辑keepalived配置文件
! Configuration File for keepalived
global_defs { //全局配置
notification_email {
qinghualai@foxmail.com //故障报警接收人邮箱
}
notification_email_from qinghualai@keepalived.com //需要先配置postfix
smtp_server 192.168.4.20 //smtp服务器
smtp_connect_timeout 30 //smtp连接超时时间设定
router_id keepalived5 //路由ID,必须为唯一
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}
vrrp_instance VI_1 { //vrrp配置
state MASTER //主服务器设置为MASTER(备用服务器为BACKUP)
interface eth0 //定义网卡接口名
virtual_router_id 161 //虚拟路由器ID,主备必须要一致,默认51为了安全修改成其他的id号
priority 100 //服务器优先级,优先级越高则优先获取VIP
advert_int 1
authentication { //虚拟路由认证
auth_type PASS //使用密码
auth_pass 999520 //修改默认密码主备必须一致才能认证成功。
}
virtual_ipaddress { //VIP配置地址
192.168.4.15/24
}
}
virtual_server 192.168.4.15 80 { //LVS虚拟服务器规则配置
delay_loop 6
lb_algo wlc //LVS调度算法 这里使用的wlc,加权最小连接算法
lb_kind DR //LVS调度模式,有NAT和DR默认是NAT
# persistence_timeout 50 //持续时间50s 一般情况这种情况把这句去掉,客户端在一定时间内始终访问相同服务器
protocol TCP //协议类型TCP协议
real_server 192.168.4.100 80 {
weight 1 //服务器权重值,权重值越大访问量越大。
HTTP_GET { //健康检查默认支持TCP_CHECK{} HTTP_GET{} SSL_GET{} 和自定义脚本检查
url { //检测的页面支持多个url检查
path /index.html //检测的url值
digest 66ee606d5019d75f83836eeb295c6b6f //校验的md5值
}
connect_timeout 3 //连接超时时间,健康检查判断时间
nb_get_retry 3 //重试次数
delay_before_retry 3 //每隔多少秒做一次健康检查
}
real_server 192.168.4.200 80 {
weight 2
HTTP_GET {
url {
path /index.html
digest 699d00db64614eb287931b977d5c047f
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
配置好主从节点后重启服务
systemctl restart keepalived
然后记得一定要清空iptables
iptables -F
重要要领:
1.服务器健康检查中TCP_CHECK{}和SSL_GET{}仅检查端口,HTTP_GET{}不仅检查端口还通过校验码去校验多个网页的md5值,查看是否网页遭受到篡改。
测试结果:

故障排错:
1.ping不通虚拟路由ip 在keepalived master节点上看虚拟路由ip是否绑定在了设定的网卡接口上,如果有那么请使用iptables -F清空规则试试。
2.停掉keepalived master如果没有自动切换到backup节点上,先看服务状态和日志进行排查多半是配置文件问题,虚拟路由ID 主从是否一致? 网络中是否还有其他vrrp协议ID和这边使用的一致? 内核是否打开包转发? 是否后端设定了vip? 后端设定了vip是否有将广播设定不宣告不回应?
Keepalived+LVS DR模式高可用架构实践的更多相关文章
- 014.Docker Harbor+Keepalived+LVS+共享存储高可用架构
一 多Harbor高可用介绍 共享后端存储是一种比较标准的方案,将多个Harbor实例共享同一个后端存储,任何一个实例持久化到存储的镜像,都可被其他实例中读取.通过前置LB组件,如Keepalived ...
- [svc]高并发场景 LVS DR +KeepAlive高可用实现及ka的persistence_timeout参数
LVS-DR+keepalived模式是一种非常经典的常用生产组合 高可用场景及LVS架构 一般都用一(负载)拖多(Server Array)方式 使用LVS架设的服务器集群系统有三个部分组成: (1 ...
- vivo 基于原生 RabbitMQ 的高可用架构实践
一.背景说明 vivo 在 2016 年引入 RabbitMQ,基于开源 RabbitMQ 进行扩展,向业务提供消息中间件服务. 2016~2018年,所有业务均使用一个集群,随着业务规模的增长,集群 ...
- Lvs Keepalive DR模式高可用配置
Lvs Keepalive DR模式配置 一.环境 #DIP# eth0:192.168.233.145#VIP# eth0:0 192.168.233.250/32 #RIP1:192.168.23 ...
- KeepAlived双主模式高可用集群
keepalived是vrrp协议的实现,原生设计目的是为了高可用ipvs服务,keepalived能够配置文件中的定义生成ipvs规则,并能够对各RS的健康状态进行检测:通过共用的虚拟IP地址对外提 ...
- Keepalived+LVS(dr)高可用负载均衡集群的实现
一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2 ...
- 【葵花宝典】lvs+keepalived部署kubernetes(k8s)高可用集群
一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...
- Linux centosVMware Linux集群架构LVS DR模式搭建、keepalived + LVS
一.LVS DR模式搭建 三台机器 分发器,也叫调度器(简写为dir) davery :1.101 rs1 davery01:1.106 rs2 davery02:11.107 vip 133.200 ...
- Lvs+keepAlived实现负载均衡高可用集群(DR实现)
第1章 LVS 简介 1.1 LVS介绍 LVS是Linux Virtual Server的简写,意为Linux虚拟服务器,是虚拟的服务器集群系统,可在UNIX/LINUX平台下实现负载均衡集群功能. ...
随机推荐
- java多态的实现原理(JVM调用过程)(综合多篇文章,参考见文末)
一个对象变量可以指示多种实际类型的现象称为多态 允许不同类的对象对同一消息做出响应.方法的重载.类的覆盖正体现了多态. 1.多态的机制 1.1 本质上多态分两种 1.编译时多态(又称静态多态) 2.运 ...
- Cocos Creator 3D 打砖块图文教程(一)
在线体验链接: http://example.creator-star.cn/block3d/ 上面图中是打砖块游戏的主要 3D 节点元素,Shawn 这两天在学习 Unity 与 Creator3D ...
- 快学Scala 第十六课 (shell调用,正则表达式,正则表达式组,stripMargin妙用)
shell调用:(管道符前加#号,执行shell用!) import sys.process._ "ls -al" #| "grep x" ! 正则表达式:(r ...
- php数字函数
is_numeric() 检查变量是否包含一个合法数字 round() 取整数,四舍五入 round(数字, 小数位) ceil() 向上取整 floor() 向下取整 range() 生成范围 ...
- Python PDB调试处理
pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点.单步调试.进入函数调试.查看当前代码.查看栈片段.动态改变变量的值等.pdb 提供了 ...
- 使用jsr303实现数据校验
除了前端的js验证,服务端也可加入数据验证,springmvc中有两种方式可以验证输入 利用spring自带的验证框架 利用jsr303实现 jsr303实现数据校验 jsr303是java为bean ...
- Spring Boot (十四): 响应式编程以及 Spring Boot Webflux 快速入门
1. 什么是响应式编程 在计算机中,响应式编程或反应式编程(英语:Reactive programming)是一种面向数据流和变化传播的编程范式.这意味着可以在编程语言中很方便地表达静态或动态的数据流 ...
- DOM操作方法、属性
话不多说直接上demo: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 运维自动化神器ansible之group模块
ansible之group模块 group模块是用来添加或者删除组 首先使用ansible-doc来查看用法 [root@note0 ansible]# ansible-doc -s group - ...
- 代码审计-phpcms9任意文件读取
漏洞文件: /phpcms/modules/content/down.php download函数 这个函数开始几行代码的作用和init函数中的几乎一样,都是从parse_str 解析传入的a_k参数 ...