keepalived + lvs
Keepalived原理 Keepalived原理
keepalived也是模块化设计,不同模块复杂不同的功能,下面是keepalived的组件
core check vrrp libipfwc libipvs-2.4 libipvs-2.6 core:是keepalived的核心,复杂主进程的启动和维护,全局配置文件的加载解析等
check:负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析
vrrp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的
libipfwc:iptables(ipchains)库,配置LVS会用到
libipvs*:配置LVS会用到
注意,keepalived和LVS完全是两码事,只不过他们各负其责相互配合而已 keepalived启动后会有三个进程
父进程:内存管理,子进程管理等等
子进程:VRRP子进程
子进程:healthchecker子进程 有图可知,两个子进程都被系统WatchDog看管,两个子进程各自复杂自己的事,healthchecker子进程复杂检查各自服务器的健康程度,例如HTTP,LVS等等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上的兄弟VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态
genhash 用法:
[root@localhost bin]# ./genhash -s 192.168.100.101 -p -u / #genhash http 页面探测时检查hash 值,首先要获取hash 值
MD5SUM = 47f174a067d193f370407ec4aa882ab0 [root@localhost bin]#
配置文件详解:本次测试着重点在keepalived 中使用LVS 功能
[root@localhost keepalived]# cat keepalived.conf
! Cconfiguration File for keepalived global_defs { #全局配置段
notification_email { #定义报警邮件接收地址
test1@ppap.com
test2@ppap.com
test3@ppap.com
}
notification_email_from error_from@ppap.com #定义告警邮件发送邮箱
smtp_server 114.114.114.114 #定义邮箱服务器
smtp_connect_timeout #定义邮件发送超时时间
router_id lvs_1 #定义路由标识信息,相同局域网唯一
} vrrp_instance VI_1 { #定义vrrp 实例,实例可以定义多个,在主+主,主+主+备 分别在不通服务器调用
state MASTER #状态参数,标识在当前主机上,实列状态,有master/backup
interface ens33 #指定绑定虚IP的网卡设备
virtual_router_id #路由 id 标识,用于区分不同vrrp 实例,相同实例id 必须一致:[-]
priority #定义当前实例的优先级,优先级大小决定主备
advert_int #主备通讯时间间隔 authentication {
auth_type PASS #定义实例认证类型
auth_pass #定义认证密码
}
virtual_ipaddress { #定义vrrp 需要发布的虚拟ip ,可以绑定网卡
192.168.100.201/
192.168.100.202/
192.168.100.203/ dev eth2 label eth2: 指定网卡和名称
} nopreempt #开启不抢占功能,默认抢占
} virtual_server 192.168.100.201 { #定义虚拟服务地址端口 delay_loop #查询后端real_server 状态间隔时间
lvs_sched wlc #定义lvs 负载算法
lvs_method DR #定义lvs 模式
persistence_timeout #定义会话保持时间
protocol TCP #定义负载协议为tcp real_server 192.168.100.101 { #定义real_server
weight #设置权重为1 ,默认为1
uthreshold #最大连接阈值
TCP_CHECK {
connect_timeout #定义探测超时时间默认为5 s
retry #尝试三次 }
}
real_server 192.168.100.103 {
weight # 设置权重为1,默认1
uthreshold # 设置连接最大阈值
HTTP_GET {
url {
path /
digest c32410fe653866bfc3e85c896a4abc94
status_code 200 #正常应该是 200 状态码 }
connect_timeout #定义探测超时时间,默认5s
retry # 尝试 次
}
} }
测试结果:
[root@localhost keepalived]# ip addr
: lo: <LOOPBACK,UP,LOWER_UP> mtu qdisc noqueue state UNKNOWN group default qlen
link/loopback ::::: brd :::::
inet 127.0.0.1/ scope host lo
valid_lft forever preferred_lft forever
inet6 ::/ scope host
valid_lft forever preferred_lft forever
: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP group default qlen
link/ether :::2d:b8:9a brd ff:ff:ff:ff:ff:ff
inet 192.168.100.100/ brd 192.168.100.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet 192.168.100.201/ scope global secondary ens33
valid_lft forever preferred_lft forever
inet 192.168.100.202/ scope global secondary ens33
valid_lft forever preferred_lft forever
inet6 fe80::18a9:d1fe::/ scope link noprefixroute
valid_lft forever preferred_lft forever
[root@localhost keepalived]# ipvsadm -L -n
IP Virtual Server version 1.2. (size=)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.100.201: wlc persistent
-> 192.168.100.101: Route
-> 192.168.100.103: Route
停止其中一个节点服务: 重启节点只能重新加载keepalived 配置
[root@localhost /]# systemctl stop httpd
[root@localhost /]#
Mar :: localhost Keepalived_healthcheckers[]: Error connecting server [192.168.100.103]:. Mar :: localhost Keepalived_healthcheckers[]: Error connecting server [192.168.100.103]:.
Mar 1 04:30:15 localhost Keepalived_healthcheckers[2966]: Check on service [192.168.100.103]:80 failed after 1 retry.
Mar :: localhost Keepalived_healthcheckers[]: Removing service [192.168.100.103]: from VS [192.168.100.201]:
Mar :: localhost Keepalived_healthcheckers[]: Remote SMTP server [114.114.114.114]: connected.
keepalived + lvs的更多相关文章
- Net分布式系统之三:Keepalived+LVS+Nginx负载均衡之高可用
上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx ...
- keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群
本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可 ...
- Keepalived+Lvs+Mysql主主复制
一简单介绍 Keepalived+lvs+mysql主主复制是比較经常使用的一种Mysql高可用方案,当中lvs 提供读负载均衡,Keepalived通过虚拟vip漂移实现故障自己主动转移,而Mysq ...
- mysql高可用架构方案之二(keepalived+lvs+读写分离+负载均衡)
mysql主从复制与lvs+keepalived实现负载高可用 文件夹 1.前言 4 2.原理 4 2.1.概要介绍 4 2.2.工作原理 4 2.3.实际作用 4 3方 ...
- Keepalived+LVS+Nginx负载均衡之高可用
Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常 ...
- 高可用之KeepAlived(2):keepalived+lvs
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- 高可用集群之keepalived+lvs实战-技术流ken
keepalived简介 lvs在我之前的博客<高负载集群实战之lvs负载均衡-技术流ken>中已经进行了详细的介绍和应用,在这里就不再赘述.这篇博文将把lvs与keepalived相结合 ...
- keepalived+lvs子网掩码造成VIP切换故障 + vrrp_script+track_script
keepalived+lvs子网掩码造成VIP切换故障 架构:keepalived+lvs ,前端调度器是双主模型 现象:keepalived手动停掉一台,但是虚拟IP不会切换 整体网络是24位 VI ...
- Keepalived+LVS高可用负载均衡集群
概述 Keepalived是专门针对LVS设计的一款强大的辅助工具,主要用来提供故障切换(Failover)和健康检查(HeathChecking)功能——判断LVS负载调度器.节点服务器的可用性,及 ...
- CentOS 7 keepalived+LVS
LVS架构中 , 不管是NAT模式还是DR模式 , 当后端的RS宕机了 , 调度器还是会把请求转发到宕掉的RS上 , 然而keepalived可以解决该问题 , 它不仅仅有高可用的功能 , 还有负载均 ...
随机推荐
- 微信小程序-bug-调用wx.login()无响应的原因和解决方案
想必,最近有些小程序开发者,在调用wx.login()的时候,在部分IOS上无响应的情况: 补充一点:在测试模式,调试模式,都是OK的,一上正式环境就GG了,百思不得其解啊! 响应结果如下: 在suc ...
- 开学收好这 17 种工具 App,让你新学期学习更有效率
开学啦!不管是想勾搭学长还是想讨好学妹,相信同学们对新学期.新同学或者新学校都已经满怀期待了.但是,除了帅气逼人的学长和青春靓丽的学妹,你们可不能忘记上学的首要任务还是学习噢. 那么,为了帮助同学们更 ...
- [转] 又踩到了crontab的老坑,特意记录下。
http://xiachaofeng.iteye.com/blog/1405184 今天遇见一个问题,crontab的定时任务不能自动执行,但是手动执行脚本一直能成功.查到最后,发现是脚本里用了系统的 ...
- python中的张量运算(tensor)
1,首先比较二者的参数部分:这就是处理0阶张量和1阶张量的区别 np.max:(a, axis=None, out=None, keepdims=False) 求序列的最值 最少接收一个参数 axis ...
- [LeetCode] Group Anagrams 群组错位词
Given an array of strings, group anagrams together. Example: Input: ["eat", "tea" ...
- cmd返回上一级和根目录
https://jingyan.baidu.com/article/066074d6154cf4c3c21cb013.html
- Linux命令行下快捷键
快捷键 说明 Ctrl+a 切换到命令行开始 Ctrl+e 切换到命令行末尾 Ctrl+c 终止当前命令或脚本 Ctrl+d ①退出当前shell,相当于exit②一个个删除光标后字符 Ctrl+l ...
- 使用 ASP.NET SignalR实现实时通讯
ASP.NET SignalR 是为 ASP.NET 开发人员提供的一个库,可以简化开发人员将实时 Web 功能添加到应用程序的过程.实时 Web 功能是指这样一种功能:当所连接的客户端变得可用时服务 ...
- lsass.exe占用cpu 解决方法
最终解决办法如下: RD /s /q "%USERPROFILE%\AppData\Roaming\Microsoft\Protect"
- PAT甲级1068 Find More Coins【01背包】
题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805402305150976 题意: n个硬币,每一个有一个特有的价 ...