前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LVS集群详解

LVS集群详解

作者头像
小小科
发布2018-05-04 16:17:45
1.8K0
发布2018-05-04 16:17:45
举报
文章被收录于专栏:北京马哥教育北京马哥教育

一、什么是集群

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-02-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档