LVS负载均衡初接触

Linux Cluster :

Cluster : 计算机集合, 为解决某个特定问题组合起来形成的单个系统;

Linux Cluster 类型 :

LB : Load Balancing, 负载均衡;()
HA : High Avaiibality, 高可用;( 通过冗余的方式让活动主机出现问题时取而代之, 并具有原主机一致的功能)
HP : High Performance, 高性能;(组合多台计算机分散计算量)

 系统扩展方式:

Scale UP:向上扩展
Scale Out:向外扩展
Cluster

LB Cluster :

实现 :

硬件 :

F5 Big-IP
Citrix Netscaler
A10 A10

软件 :

lvs : Linux Virtual Server (内核级别实现)
nginx :
haproxy :(实现功能与nginx相似)
ats :

基于工作协议层次划分(承前启后) :

传输层 : (通用解决方案)(DIP : DPORT)(四层路由器)
lvs :
nginx : (基于stream机制模拟调度)
haproxy : (基于TCP模型)
应用层 : (应用专用)(根据请求模型分类进行分发)
proxy sferver:

http:nginx, httpd, haproxy(mode http), …
fastcgi:nginx, httpd, …
mysql:mysql-proxy, …

VS : 根据请求报文的目标IP和目标协议将其调度转发至某realserver, 根据调度算法来挑选

Director 和各RS 都得配置实用VIP

lvs : ipvsadm/ipvs
报文的流程 : PREROUTING —> INPUT上的ipvs —-> POSTROUTING
ipvsadm : 用户空间的命令行工具, 规则管理器, 用于管理集群服务及RealServer
ipvs : 工作与内核空间
lvs 集群的类型 :

lvs-nat : 修改请求报文的目标IP
lvs-dr : 封装新的MAC地址
lvs-tun : 在原请求IP报文之外新加一个IP首部
lvs-fullnat : 修改请求报文的源和目标IP

lvs-nat :

多目标IP的DNAT机制, 通过将请求报文中的目标地址和目标端口修改为某挑出的RS和RIP的PORT实现转发

1. RIP 和DIP 必须在同一个IP 网络, 且应该使用私网地址; RS的网关要指向DIP
2. 请求报文和响应报文都必须经由Director转发, Director易于成为系统瓶颈
3. 支持端口映射, 可修改请求报文的目标PORT;
4. vs 必须是Linux 系统, rs 可是任意系统

LVS

lvs-dr :

通过为请求报文重新封装一个MAC首部进行转发, 源MAC 是DIP 所在接口的MAC, 目标MAC是某挑选出的RS的RIP所在接口的MAC地址, 源IP/PORT, 以及目标IP/PORT均保持不变

1. 确保前端路由器将目标IP为VIP的请求报文发完Director :
a. 在前端网关左静态绑定
b. 在RS 上使用arptables
c. 在RS 上修改内核参数以限制ARP通过及应答基本

arp_announce

echo 1  > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 1  > /proc/sys/net/ipv4/conf/lo/arp_ignore

arp_ignore

echo 2  > /proc/sys/net/ipv4/conf/all/arp_announce

echo 2  > /proc/sys/net/ipv4/conf/lo/arp_announce

2. RS 的RIP 可以使用私网地址, 也可以是公网地址, RIP 与DIP 在同一网络, RIP 的网关不能指向DIP, 以确保响应报文不会经由Director
3. RS跟Director要在同一个物理网络;
4. 请求报文要经由Director,但响应不能经由Director,而是由RS直接发往Client;
5. 不支持端口映射;

报文从那个接口出去源IP就为此接口的IPLVS-DR

1. DIP, VIP, RIP 都应该是公网地址
2. RS 的网关不能, 也不可能指向DIP
3. 请求报文要经由Director, 但响应不能经由Director
4. 不支持端口映射
5. RS 的OS 得支持隧道功能

为了支持dr模式, 有下列几种方法解决 :

1. ARPtables 将IP和MAC地址进行绑定
2. 内核参数, 将VIP地址绑定在一个比较特殊的接口上, 使其不能直接在内网响应请求
3. 路由器设置 (有路由器的管理权限)

lvs-fullnat :

同时修改请求报文和源IP地址和目标IP地址进行转发
CIP —> DIP
VIP —> RIP
1. VIP 是公网地址, RIP和DIP是私网地址, 通常不在

ipvs scheduler 根据其调度时是否考虑当前RS的负载情况, 可分为动态方法和静态方法.(调度算法)

静态方法 :

RR : roundrobin 轮询
WRR : Weighted RR 加权轮询(考虑服务器的权重(服务器的服务能力))
SH : Source Hashing 源IP地址HASH, 实现 session sticy(WRR 是其原生算法), 完成会话绑定, 将来自于同一个IP地址的请求始终发往第一次挑中的RS, 从而实现会话的绑定.
DH : Destination Hashing 目标地址HASH, 将发往同一个目标地址的请求始终发至第一次挑中的RS
动态方法 : 主要根据每RS 当前的负载状态及调度算法进行调度;
LC : Last Connections
Overhead = activeconns*256+inactiveconns (最初的时候, 自上而下的进行接收请求)
WLC : Weighted LC 加权LC
Overhead = (activeconns*256+inactiveconns)/weight
SED : Shortest Expection Delay 最短期望延迟
Overhead = (activeconns*256+inactiveconns + 1)/weight
NQ : Never Queue 不排队算法

LBLC : Locality-Based LC 动态的DH算法
LBLCR : LBLC with Replication 带复制功能的LBLC

ipvs 集群 :
(先定义服务, 在定义集群)
集群服务 :
服务上的RS :
ipvsadm (管理集群, 管理集群服务, 查看)
ipvsadm命令:

ipvsadm -A|E -t|u|f service-address [-s scheduler] [-p [timeout]] [-M netmask] [–pe persistence_engine] [-b sched-flags]
ipvsadm -D -t|u|f service-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f service-address -r server-address [options]
ipvsadm -d -t|u|f service-address -r server-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f service-address]

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

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

删:

ipvsadm -D -t|u|f service-address

service-address:

-t|u|f:

-t: TCP协议的端口,VIP:TCP_PORT
-u: TCP协议的端口,VIP:UDP_PORT
-f:firewall MARK,是一个数字;

[-s scheduler]:指定集群的调度算法,默认为wlc;

管理集群上的RS:增、改、删;

增、改:

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

删:

ipvsadm -d -t|u|f service-address -r server-address
server-address:

rip[:port]

选项:

lvs类型:

-g: gateway, dr类型
-i: ipip, tun类型
-m: masquerade, nat类型
-w weight:权重;权重越高优先级越高

清空定义的所有内容:

ipvsadm -C

查看:
ipvsadm -L|l [options]

–numeric, -n:numeric output of addresses and ports 数字格式显示IP和PORT
–exact:expand numbers (display exact values) 精确值
–connection, -c:output of current IPVS connections 显示IPVS连接
–stats:output of statistics information 统计数据
–rate :output of rate information 速率

保存和重载:

ipvsadm -S = ipvsadm-save
ipvsadm-save > /path/file
ipvsadm -R = ipvsadm-restore
ipvsadm-restore < /path/file

重置清零 :
ipvsadm -Z

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port         CPS(每秒连接数量)    InPPS(每秒入站报文数)   OutPPS(每秒出站报文数)    InBPS   OutBPS
-> RemoteAddress:Port
TCP  192.168.48.142:80                   1        6        4      474      454
-> 10.1.99.99:80                       0        3        2      232      217
-> 10.1.99.100:80                      0        3        2      242      237

同一个Director 可负载多个集群

负载均衡的设计要点 :

1. 是否需要回话保持
2. 是否需要共享存储

共享存储 : DS(分布式存储)
数据同步 : rsync + inotify 实现数据同步

设计要点 :
1. RIP与DIP在同一IP网络, RIP的网关要指向DIP
2. 支持端口映射
lvs-dr :
为了提升网络的承载能力的设计方案

dr 模型中, 各主机上均需要配置VIP, 解决地址冲突的方式有三种 :

1. 在前端网卡做静态绑定;
2. 在各RS使用arptables;
3. 在个RS修改内核参数, 来限制arp响应和通告的级别;

限制响应级别 : arp_ignore

0 : 默认值, 表示可使用本地任意接口上配置的任意地址进行响应
1 : 仅在请求目标IP 配置在本地主机的接收到请求报文接口上时, 才给予响应;
限制通告级别 : apr_announce

原创文章,作者:M20-石俊,如若转载,请注明出处:http://www.178linux.com/55129

(0)
M20-石俊M20-石俊
上一篇 2016-10-28 08:46
下一篇 2016-10-28 10:09

相关推荐

  • Linux文件管理及常用方法

    Linux文件管理及常用方法 一切皆文件,管理系统即用正确的方法管理相应的文件。 Linux系统中文件管理所涉及到的问题 ls -l boot.log   -rw-r–r–. 1 root   root     13…

    Linux干货 2016-11-06
  • Linux中的用户、组和权限的管理

    一、Linux的安全模型     在Linux中用户登陆时必须提供用户名和密码(用户是由root用户创建的,最初的密码也是root用户设定的)。系统使用用户和群组来控制使用者访问文件和其他资源的权限。每一个文件都一定属于一个用户(一般该用户就是文件的创造者)并与一个群组相关。每一个进程(处理程序)都会与一个用户和群组关…

    Linux干货 2016-08-07
  • 用NFS搭建wordpress让两台httpd服务同时服务

    一、博客实践作业: (1) nfs server导出/data/application/web,在目录中提供wordpress;  (2) nfs client挂载nfs server导出的文件系统至/var/www/html; (3) 客户端(lamp)部署wordpress,并让其正常访问;要确保能正常发文章,上传图片; (4) 客户端2(la…

    2017-06-07
  • 网络分层模型(OSI,TCP/IP)

    目前存在的两种网络分层模型:OSI模型和TCP/IP模型。 OSI模型一共分为七层 TCP/IP模型和OSI模型类似,但是只分为四层。 OSI模型 OSI的全程是Open Systems Interconncection,即开放系统互联,它由ISO(International Organization for Standardization)制定。 OSI是…

    2017-11-27
  • N28-第一周

    1. 描述計算機的組成及其功能。
    2. 按系列羅列Linux的發行版,並描述不同發行版之間的聯繫與區別。
    3. 描述Linux的哲學思想,並按照自己的理解對其進行解釋性描述。
    4.說明Linux系統上命令的使用格式;詳細介紹ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,並配合相應的示例來闡述。
    5.如何在Linux系統上獲取命令的幫助信息,請詳細列出,並描述man文檔的章節是如何劃分的?
    6.請羅列Linux發行版的基礎目錄名稱命名法則及功能規定。

    Linux干货 2017-12-04
  • Linux网络属性管理(二)

    Linux网络属性(二) Linux 网络属性管理(二) ip命令 ip – show / manipulate routing, devices, policy routing and tunnels ip [ OPTIONS …

    Linux干货 2016-07-07