LVS集群详解

一、什么是集群

LVS(Linux Virtual Server)Linux虚拟服务器,将多台虚拟主机组织起来满足同一个需求。由国人章文嵩开发,通过LVS提供的负载均衡可实现一个高性能、高可用的服务器群集,从而以低成本实现最优的服务性能。

二、集群类型

LB:Load balancing 高可用集群

HA:High Availavility 高可用集群

HP:High Performace 高性能集群

三、lvs的常用集群方式及其详解

1、lvs是由用户空间命令和工作在内核上的netfilter的INPUT链上钩子函数所组成,可根据用户自定义集群实现转发。

2、lvs术语

CIP:客服端使用的IP地址

VIP:虚拟服务器IP地址

DIP:director用于和Real server之间进行通信的IP地址

RIP:后端real server的IP地址

RS:real server

3、lvs类型

lvs-nat:lvs network address translation :lvs网络地址转换

lvs-dr:director routing 直连路由

lvs-tun:tuneling 隧道

lvs-fullnat:功能更加强大的网络地址转换

lvs-nat特性:

多源ip的目标地址转换,通过将请求报文中的目标地址和目标端口修改为从后端主机中挑选出的某RS的RIP和端口实现转发。

①RIP和DIP需在同一个网络中,且需使用私有地址,RS的网关需指向DIP,保证响应报文经过RS进行转发,此模型中VS容易成为单点故障,成为系统的瓶颈。

②请求报文和相应报文都经由Director进行转发

③支持端口映射

④VS需为Linux,RS可以是OS

LVS-DR特性:

通过为请求报文重新封装MAC地址进行转发,源MAC地址是DIP所在接口的MAC地址,目标MAC地址为调度器挑选出来的后端RS的MAC地址,IP首部不会发生改变。

①确保前端路由器将目标IP为vip的请求报文发往director

②RS的RIP可以是私网地址也可以是公网地址

③RS和director必须在同一个网络中

④请求报文必须经由调度器,但响应报文则一定不能有调度器转发,而是直接有real server响应客服端请求

⑤不支持端口映射,RS可使用OS

确保前端路由器将目标IP为vip的请求报文发往director

解决方案:

①在路由器上静态绑定VIP和director的MAC地址,禁止real server响应 arp请求,禁止RS的vip通告

②arptables

③修改RS的内核参数,并将VIP绑定lo的别名上,arp_ignore,arp_announce

限制响应级别:arp_announce

0:默认,把本机所有的接口信息向每个接口通告;

1:尽量避免向非本网络通告

2:总是避免;符合我们需要

限制通告级别:arp_ignore

0:默认使用本地任意接口上配置的地址进行响应

1:仅在请求的目标ip配置在本地主机的接口报文的接口上是,不给与响应

LVS-tun特性:

通过转发方式,不修改请求报文的ip首部,源ip为cip,目标ip为VIP,而是在源ip基础之上再封装一个ip首部,源ip为DIP,目标ip为调度器挑选的RS的VIP。

①RIP,DIP,VIP全为公网

②RS的网关不能指向DIP

③请求报文经由director转发,但响应报文直接发往CIP

④不支持端口映射

⑤RS必须支持隧道功能

LVS常用的调度算法:

静态的调度算法:

RR:Round Robin #轮询,轮转

WRR:Weighted Round Robin #加权轮询,根据后端每台real server的能承担的负载进行分配不同的请求个数

SH:Source Hashing #源地址哈希,将来自于同一台IP地址的请求发往同一台后端的real server服务器

DH:Destination Hashing #目标地址哈希,将发往同一个目标地址的请求始终发往前端调度器挑选出来的real server

动态的调度算法:

根据算法及其RS当前负载情况进行调度

LC:least connections,最少连接

WLC:weight least connections,加权最少连接

SED:shortest expections delay

NQ:never queue

LBLC:基于本地的最少连接

LBLCR:带复制功能的基于本地的最少连接

ipvs命令:

管理集群服务:增、删、改、查

ipvsadm -A |E -t |u |f service-address [-s scheduler]

-A:增加

-E:修改

-D:删除

-L:查看

-t:tcp,protocol type

-u:udp,protocol type

-f:firewall mark

server-address:

-t,tcp,vip:port

-u,udp,vip:port

-f firewall mark

-s:指定调度算法类型,默认为WLC

ipvsadm -C #清除所有ipvs

ipvsadm -Z [-t|u|f service-address]

-Z:清空计数器

管理集群上的RS:

ipvsadm -a|e -t|u|f service-address -r server-address [-g|i|m] [-w weight] [-x upper] [-y lower]

-a:增加

-e:修改

-r:real server_ip

-g,gateway,dr:直连路由

-m,masquerde,nat,目标地址转换

-i,ipip,tun,隧道

-w,权重

ipvsadm查看的其他子命令:

ipvsadm -L|l [options]

-L:查看

-n:数字格式显示

--stats:统计数据

--rate:速率统计

-c,connetions:显示连接数

-exact:精确显示

保存

ipvsadm -S >/path/to/some_rule_file

ipvsadm-save >/path/to/soem_rule_file

恢复:

ipvsadm -R </path/to/some_rule_file

ipvsadm-restore </path/to/soem_rule_file

实验拓扑图:

配置命令:

Real server1:

route add default gw 192.168.184.128

Real server2:

route add default gw 192.168.184.128

Virutal server:

ipvsadm -A -t 10.1.10.3:80 -s rr

ipvsadm -a -t 10.1.10.3:80 -r 192.168.184.129 -m -w 1

ipvsadm -a -t 10.1.10.3:80 -r 192.168.184.130 -m -w 2

echo 1>/proc/sys/net/ipv4/ip_forward #开启ip_forward转发功能

测试结果实验图:

LVS-DR实验拓扑图:

配置命令:

RS1:

RS2:

Real Server:

实验结果图:

如上述图所示,lvs-dr配置成功,前端调度器根据wrr算法调度后端服务器实现负载均衡调度,lvs配置很简单,但原理非常重要,只有懂了原理,才能真正的掌握好lvs.

作者:小耳朵

来源:http://purify.blog.51cto.com/10572011/1866256

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2017-02-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏linux系统运维

负载均衡集群介绍,LVS介绍, LVS调度算法,LVS NAT模式搭建

20420
来自专栏FreeBuf

我是如何黑掉惠普打印机的?

步骤 首先,我有机会测试惠普Officejet Pro系列打印机 其次,我决定测试它的安全性并用本地无线网络连接做一次扫描。 注:所有的安装步骤都是按照惠普说明...

21650
来自专栏恰童鞋骚年

《图解TCP/IP》读书笔记

  这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。   书中讲解了网络基础知识、TCP/IP基础知...

12320
来自专栏天天P图攻城狮

Android系统打印方案分析

Android Print API Android默认实现了打印的框架,使用PrintManager+PrintManagerService可以轻松实现打印...

2K40
来自专栏即时通讯技术

网络编程懒人入门(一):快速理解网络通信协议(上篇)

论坛和群里常会有技术同行打算自已开发IM或者消息推送系统,很多时候连基本的网络编程理论(如网络协议等)都不了解,就贸然定方案、写代码,显得非常盲目且充满技术风险...

11110
来自专栏云上大文件传输

RaySync 传输协议的有效带宽利用率分析介绍

最近在评论区收到不少朋友反应RaySync FTP文件传输的效果挺好,谢谢大家的鼓励。也有部分熟悉技术的同学希望介绍下原理,有部分同学咨询RaySync传输协议...

53560
来自专栏高性能服务器开发

C++日志系统如何设计

笔者在写作本章节的时候,并不敢把此章节的标题叫做《高性能日志系统的设计》,之所以不敢加上“高性能”三个字的原因是,第一,我的对于日志系统设计知识和经验都来自于学...

72330
来自专栏北京马哥教育

你真的掌握lvs工作原理吗?

lvs介绍 LVS(Linux Virtual Server 虚拟服务器):是一个虚拟的四层路由交换器集群系统,根据目标地址和目标端口实现用户请求转发。 lv...

63670
来自专栏Java3y

网络层【第三篇】

路由信息协议 RIP (Routing Information Protocol) 是内部网关协议 IGP 中最先得到广泛使用的协议。

17710
来自专栏SDNLAB

容器 Flannel vxlan 基本原理和验证

作者简介:yangjunsss,曾就职于IBM、青云QingCloud,现就职于华为,研究方向:容器微服务、IaaS、P2P分布式。邮箱 cj.yangjun@...

33620

扫码关注云+社区

领取腾讯云代金券