LVS 负载均衡 keepalive
为什么要学lvs
工作在网络模型的7层,可以针对http应用做一些分流的策略,比如针对域名、
目录结构, Nginx单凭这点可利用的场合就远多于LVS了。
最新版本的Nginx也支持4层TCP负载,曾经这是LVS比Nginx好的地方。
Nginx对网络稳定性的依赖非常小,理论上能ping通就就能进行负载功能,这个
也是它的优势之一,相反LVS对网络稳定性依赖比较大。
Nginx安装和配置比较简单,测试起来比较方便,它基本能把错误用日志打印出
来。 LVS的配置、测试就要花比较长的时间了, LVS对网络依赖比较大。
简单一句话,当并发超过了Nginx上限,就可以使用LVS了。
日1000-2000W PV或并发请求1万以下都可以考虑用Nginx。
大型门户网站,电商网站需要用到LVS。
LVS 介绍
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系
统,可以在UNIX/LINUX平台下实现负载均衡集群功能。该项目在1998年5月由章文嵩博士组
织成立,是中国国内最早出现的自由软件项目之一。
官网:http://www.linuxvirtualserver.org/index.html
中文资料
LVS项目介绍 http://www.linuxvirtualserver.org/zh/lvs1.html
LVS集群的体系结构 http://www.linuxvirtualserver.org/zh/lvs2.html
LVS集群中的IP负载均衡技术 http://www.linuxvirtualserver.org/zh/lvs3.html
LVS集群的负载调度 http://www.linuxvirtualserver.org/zh/lvs4.html
LVS内核模块ip_vs介绍
早在2.2内核时, IPVS就已经以内核补丁的形式出现。
从2.4.23版本开始, IPVS软件就合并到Linux内核的常用版本的内核补丁的集合。从2.4.24以后IPVS已经成Linux官方标准内核的一部分。
LVS无需安装
安装的是管理工具,第一种叫ipvsadm,第二种叫keepalive
ipvsadm是通过命令行管理,而keepalive读取配置文件管理
后面我们会用Shell脚本实现keepalive的功能
lvs集群部署

安装lpvsadm管理工具
查看系统的LVS模块
- lsmod|grep ip_vs
默认没有加载模块,安装管理工具
 - yum install -y ipvsadm
查看lvs默认状态并且激活lvs
 - [root@lb03 ~]# ipvsadm
 - IP Virtual Server version 1.2.1 (size=4096)
 - Prot LocalAddress:Port Scheduler Flags
 - -> RemoteAddress:Port Forward Weight ActiveConn InActConn
 
配置lvs负载均衡服务
第一步:在eth0网卡绑定VIP地址(ip)
第二步:清楚当前说有LVS规则(-C)
第三步:设置tcp、tcpfin、udp链接超时时间(--set)
第四步:添加虚拟服务(-A),调度算法(man ipvsadm)
第五步:将虚拟服务关联到真是服务上(-a)
第六步:查看配置结果(ln)
- ip addr add 10.0.0.13/24 dev eth0
 - ipvsadm -C
 - ipvsadm --set 30 5 60 #控制浏览器与lb01的超时时间
 - ipvsadm -A -t 10.0.0.13:80 -s wrr -p 20 -p控制lb01与web01、web02的超时时
 - ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.17:80 -g -w 1
 - ipvsadm -a -t 10.0.0.13:80 -r 10.0.0.18:80 -g -w 1
 - ipvsadm -ln
 


配置web操作
- ip addr add 10.0.0.13/32 dev lo
 - cat >>/etc/sysctl.conf<<EOF
 - net.ipv4.conf.all.arp_ignore = 1
 - net.ipv4.conf.all.arp_announce = 2
 - net.ipv4.conf.lo.arp_ignore = 1
 - net.ipv4.conf.lo.arp_announce = 2
 - EOF
 - sysctl -p
修改web03 web04 tomcat端口号为 80
 

web03 启动 tomcat8_1
web04 启动 tomcat_02
访问测试

lb02测试

说有访问的返回值都是10.0.0.3
lvs跟nginx不一样 17和18不通过IP地址访问,通过mac地址访问
lvs通过mac地址访问
访问10.0.0.3就是访问lb01

10.0.0.3的数据包mac地址的返回值就是访问web03

抓包结果总结
数据包的ip地址只有lb的vip 10.0.0.3
数据包的接收mac地址也是lb01的网卡mac地址
数据包的返回mac地址可能是web03的网卡mac,也可能是web04的网卡mac地址。
服务器切换arp
vip漂移,手动更改vip的mac地址
- 在lb03删除vip
 - ip addr del 10.0.0.13/24 dev eth0
 - 在lb04添加vip
 - ip addr add 10.0.0.13/24 dev eth0
 - 查看lb04 eth0的vip地址
 - ip addr show eth0
 - 全网广播vip的mac地址改变
 - arping -I eth0 -c 1 -U 10.0.0.13
 - windows查看
 - arp -a
 
lvs高可用
keepalive功能:
通用功能:实现vip高可用,漂移。
LVS专属技能:通过配置文件控制LVS集群节点。
LVS专属技能:对后端的真实服务器节点进行健康检查。
在lb03和lb04安装Keepalive
- yum -y install keepalived
 
Keepalive的配置文件分成三部分配置
- vim /etc/keepalived/keepalived.conf
 
1.global_defs è全局定义
同一集群每个节点不一样
router_id LVS_03
router_id LVS_04
- ###########lb03###########
 - global_defs {
 - router_id LVS_03
 - }
 - ###########lb04###########
 - global_defs {
 - router_id LVS_04
 - }
 
2.vrrp 实例配置 èVIP
- ###########lb01########### ###########lb02###########
 - vrrp_instance VI_1 { vrrp_instance VI_1 {
 - state MASTER state BACKUP
 - interface eth0 interface eth0
 - virtual_router_id 51 virtual_router_id 51
 - priority 150 priority 100
 - advert_int 1 advert_int 1
 - authentication { authentication {
 - auth_type PASS auth_type PASS
 - auth_pass 1111 auth_pass 1111
 - } }
 - virtual_ipaddress { virtual_ipaddress {
 - 10.0.0.3/24 10.0.0.3/24
 - } }
 - } }
 
virtual_router_id 51 分组,同一集群每个节点相同不同集群一定不要同。
3.virtual_server配置 èlvs的配置
- virtual_server 10.0.0.13 80 {
 - delay_loop 6
 - lb_algo wrr
 - lb_kind DR
 - nat_mask 255.255.255.0
 - persistence_timeout 50
 - protocol TCP
 - real_server 10.0.0.17 80 {
 - weight 1
 - TCP_CHECK {
 - connect_timeout 8
 - nb_get_retry 3
 - delay_before_retry 3
 - connect_port 80
 - }
 - }
 - real_server 10.0.0.18 80 {
 - weight 1
 - TCP_CHECK {
 - connect_timeout 8
 - nb_get_retry 3
 - delay_before_retry 3
 - connect_port 80
 - }
 - }
 - }
 
keepalive健康检查功能
模拟web03出现问题
查看lb03 lvs状态

关闭web03

查看lb03状态

web03被剔除
开启web03

查看lvs状态

web03返回。
以上是健康检查功能
LVS集群的工作模式
DR直接路由模式

NAT模式

FULLNAT

TUNNEL

		
LVS 负载均衡 keepalive的更多相关文章
- 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群
		
高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...
 - 十 LVS 负载均衡
		
回顾nginx 反向代理负载均衡 负载均衡的妙用 负载均衡(Load Balance)集群提供了一种廉价.有效.透明的方法, 来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力. 提 ...
 - LVS负载均衡集群
		
回顾-Nginx反向代理型负载 负载均衡(load balance)集群,提供了一种廉价.有效.透明的方法,来扩展网络设备和服务器的负载.带宽.增加吞吐量.加强网络数据处理能力.提高网络的灵活性和可用 ...
 - Linux中keepalived+LVS负载均衡的搭建测试
		
1.1 LVS简介 LVS(Linux Virtual Server),也就是Linux虚拟服务器, 是一个自由软件项目.使用LVS技术要达到的目标是:通过LVS提供的负载均衡技术和Lin ...
 - LVS负载均衡-基础知识梳理
		
一. 集群的概念 服务器集群简称集群是一种服务器系统,它通过一组松散集成的服务器软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台服务器.集群系统中的单个服务器通常称 ...
 - 观nginx与lvs负载均衡的较量
		
在技术工作者中,常用到的就是lvs负载均衡和Nginx负载均衡了.这两者也是比较普及的.那么,根据不同的需求,两者存在着不同的优势.具体选择哪一个,还要看您的要求了.那么我们在此为大家分享一篇文章,对 ...
 - lvs负载均衡的搭建
		
lvs负载均衡的搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在部署环境前,我们需要了解一下一些协议 一.什么是arp 地址解析协议,即ARP(Addr ...
 - nginx 反向代理 和lvs负载均衡
		
nginx反向代理:用户请求nginx代理服务器然后代理服务器将用户请求转为服务器再由nginx代理服务器将服务器的响应反应给用户. lvs负载均衡:用户请求nginx代理服务器然后代理服务器将用户请 ...
 - (转)详解LVS负载均衡之三种工作模型原理和10种调度算法
		
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://linuxnx.blog.51cto.com/6676498/1195379 LV ...
 
随机推荐
- Metronic前端模板
			
Metronic前端模板是我现在公司正在使用的,觉得还是蛮强大,最重要的是只要有Bootstrap的使用经验或者HTML.CSS.JS基础足够好,完全可以玩转它. 当然了,就算不好也没有关系,对于使用 ...
 - 初识Qt简单动画
			
Qt提供了类QPropertyAnimation来实现图片的一些简单的动画操作效果. 1.新建一个Qt空项目,同时添加资源文件,并在资源文件中添加图片路径.之后在main.cpp函数中添加以下代码 # ...
 - java中的对象和类
			
1.类:类是一个模板,它描述一类对象的行为和状态. 一个类可以包含以下类型变量: 局部变量:在方法.构造方法或者语句块中定义的变量被称为局部变量.变量声明和初始化都是在方法中,方法结束后,变量就会自动 ...
 - Ext4文件系统架构分析(一)
			
本文描述Ext4文件系统磁盘布局和元数据的一些分析,同样适用于Ext3和Ext2文件系统,除了它们不支持的Ext4的特性外.整个分析分两篇博文,分别概述布局和详细介绍各个布局的数据结构及组织寻址方式等 ...
 - 树莓3B+_teamviewer_install
			
操作系统 pi@raspberrypi:~ $ uname -a Linux raspberrypi 4.14.79-v7+ #1159 SMP Sun Nov 4 17:50:20 GMT 2018 ...
 - WCF知识点记录
			
1:WCF有两种序列化器,XmlSerializer和DataContractSerializer,XmlSerializer能够直接对数据对象进行序列化输出,而DataContractSeriali ...
 - 【转载】进程内COM与进程外COM
			
原文:http://www.cnblogs.com/jyz/archive/2009/03/08/1406229.html 1.进程内和进程外Com COM/DCOM 组件可以在DLL 或EXE 文档 ...
 - 4011: [HNOI2015]落忆枫音
			
4011: [HNOI2015]落忆枫音 链接 分析: 原来是一个DAG,考虑如何构造树形图,显然可以给每个点找一个父节点,所以树形图的个数就是$\prod\limits_u deg[u]$. 那么加 ...
 - P3354 [IOI2005]Riv 河流
			
树形dp,设f[i][j][k]表示第i个点的子树中选择j个点作为伐木场,而且k是建了伐木场的最浅的i的祖先的情况下,最小的收益. 这种题还要练一下,咕咕 然后转移可以n4方做. // luogu-j ...
 - 洛咕 P2465 [SDOI2008]山贼集团
			
裸的状压dp. 设f[i][j]表示在i字数内放j集合的分部,直接sb转移. // luogu-judger-enable-o2 #include<bits/stdc++.h> #defi ...