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可以解决该问题 , 它不仅仅有高可用的功能 , 还有负载均 ...
随机推荐
- python @staticmethod和@classmethod的作用
一般来说,要使用某个类的方法,需要先实例化一个对象再调用方法. 而使用@staticmethod或@classmethod,就可以不需要实例化,直接类名.方法名()来调用. 这有利于组织代码,把某些应 ...
- mysql导出长数字到excel避免显示为科学记数法 解决方法
经常遇到MYSQL导出长数字或纯数字字符串(如身份证.卡券号.条码.流水号等)到csv或excel文件,用excel打开会显示为科学记数法,甚至后几位转为0.这是由Excel的特性决定的:Excel显 ...
- .NET开发人员遇到Maven
由.NET转向Java开发,总是会带着.NET平台的一些概念和工具想着在对应的Java平台是否也有着相同的解决方案.第一次用Maven随手打开pom.xml,看着里面许多属性描述我的感觉就是这是一个M ...
- a排兵布阵
来源hdu1166 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了.A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵 ...
- poj 3348
裸的凸包,,我就来粘一下板子 把jls和dls的代码混合了一下(雾),感觉我要是能把camp里的几何掌握的差不多就稳 了.(mxy到底打了什么?) 感觉叉积实在是个好东西qwq 今晚c ...
- 哈密顿绕行世界问题 (dfs)
一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input前20行的第i行有3个数,表示与第i个城市相邻的3个城市.第20行 ...
- nginx_ssl安装
Nginx的安装依赖于以下三个包,意思就是在安装Nginx之前首先必须安装一下的三个包,安装顺序为我写的顺序: c.1 SSL功能需要openssl库,下载地址:http://www.openssl. ...
- ajax 上传文件,监听进度(progress)
mdn 前端代码 github <body class="m-2"> <label for="a" class="btn btn-p ...
- jar命令打jar包
jar -cvfM0 cloudwarehouse-enter.jar ./BOOT-INF ./META-INF ./org jar -cvfM0 xxl-job-admin.war ./BOOT- ...
- phpspider php爬虫框架
其实我自身的不是经常写正则,而且不规则的html去写正则本身就是件很麻烦的事情,如果页面有些微变动和更新就得再次去维护正则表达式,其实是非常蛋疼的 我第一感觉就是去找一下爬虫的库,但是发现现在php爬 ...