lvs-nat负载均衡模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lvs-nat负载均衡模式相关的知识,希望对你有一定的参考价值。

文章的开始,我们要先弄懂一下几个问题

1. 为什么要使用lvs?

    随着互联网的发展使多媒体网络服务器面对的访问量快速增加,服务器需要具备提供大量并发访问的能力,因此对于大负载的服务器来讲,CPU,I/O处理能力很快会成为瓶颈。由于单台服务器的性能总是有限的,简单地提高硬件性能并不能真正解决这个问题。为此,必须采用多服务器和负载均衡技术才能满足大量并发访问的需求。linux虚拟服务器使用负载均衡技术将多台服务器组成一个虚拟服务器。它为适应快速增长的网络访问量提供了一个负载能力易于扩展,而价格低廉的解决方案。

2.什么是lvs?

     LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目   在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。

 3.lvs工作原理

VS: Virtual Server ,负责调度

RS: Real Server ,负责真正提供服务

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

4.lvs集群的类型

lvs-nat :修改请求报文的目标IP, 多目标IP DNAT

lvs-dr :操纵封装新的MAC 地址

lvs-tun :在原请求IP 报文之外新加一个IP 首部

lvs-fullnat :修改请求报文的源和目标IP


今天就先讲一下lvs-nat模式

工作原理

Virtual Server via NAT(VS-NAT):用地址翻译实现虚拟服务器地址转换器有能被外界访问到的合法IP地址,它修改来自专有网络的流出包的地址外界看起来包是来自地址转换器本身,当外界包送到转换器时,它能判断出应该将包送到内部网的哪个节点优点是节省IP 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器

技术分享


LVS负载均衡NAT工作流程
技术分享


  (1). 当用户请求到达Director Server,此时请求的数据报文会先到内核空间的PREROUTING链。 此时报文的源IP为CIP,目标IP为VIP
 (2). PREROUTING检查发现数据包的目标IP是本机,将数据包送至INPUT链
 (3). IPVS比对数据包请求的服务是否为集群服务,若是,修改数据包的目标IP地址为后端服务器IP,然后将数据包发至POSTROUTING链。 此时报文的源IP为CIP,目标IP为RIP
 (4). POSTROUTING链通过选路,将数据包发送给Real Server
 (5). Real Server比对发现目标为自己的IP,开始构建响应报文发回给Director Server。 此时报文的源IP为RIP,目标IP为CIP
 (6). Director Server在响应客户端前,此时会将源IP地址修改为自己的VIP地址,然后响应给客户端。 此时报文的源IP为VIP,目标IP为CIP


lvs用到的软件为ipvsadm

程序包:ipvsadm

Unit File: ipvsadm.service

主程序:/usr/sbin/ipvsadm

规则保存工具/usr/sbin/ipvsadm-save

规则重载工具:/usr/sbin/ipvsadm-restore

配置文件/etc/sysconfig/ipvsadm-config


ipvsadm 命令

集群服务的RS 管理:增、删、改

格式:

ipvsadm -A|E -t|u|f service-address [-sscheduler] [-p [timeout]][-M netmask][--pepersistence_engine] [-bsched-flags]

ipvsadm -A ——add-service 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。

ipvsadm -E ——edit-service 编辑内核虚拟服务器表中的一条虚拟服务器记录

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

ipvsadm C 清空

ipvsadm R 重载

ipvsadm -S [-n] 保存

 增、改: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: UDP 协议的端口,VIP:UDP_PORT

-f firewall MARK ,标记,一个数字

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


 增、改:ipvsadm -a|e-t|u|f service-address -rserver-address [-g|i|m] [-w weight]

 删:ipvsadm -d -t|u|fservice-address -r server-address

 server-address 

rip[:port] 如省略port ,不作端口映射

 选项:

lvs 类型:

-g: gateway, dr 类型,默认

-i: ipip, tun 类型

-m: masquerade, nat 类型

-w weight :权重

 清空定义的所有内容:ipvsadm –C

 清空计数器:ipvsadm -Z[-t|u|f serv ice-address]

 查看:ipvsadm -L|l[options]

--numeric, -n :以数字形式输出地址和端口号

--exact :扩展信息,精确值

--connection -c :当前IPVS 连接输出

--stats :统计信息

--rate :输出速率信息

 ipvs 规则: /proc/net/ip_vs

 ipvs 连接:/proc/net/ip_vs_conn

保存及重载规则

保存:建议保存至/etc/sysconfig/ipvsadm

ipvsadm-save > /PATH/TO/IPVSADM_FILE

ipvsadm -S > /PATH/TO/IPVSADM_FILE

systemctl stop ipvsadm.service

 重载:

ipvsadm-restore </PATH/FROM/IPVSADM_FILE

ipvsadm -R < /PATH/FROM/IPVSADM_FILE

systemctl restart ipvsadm.service

设计要点:

(1) RIP DIP 在同一IP 网络, RIP 的网关要指向DIP

(2) 支持端口映射

(3) Director 要打开核心转发功能

实验


实验之前要先检查lnmp是否已经成功,若出现错误页面,查看端口80 3306 9000php-fpm mariadb nginx是否开启

准备工作:三台虚拟机一台lvs-server 两台lnmp(仅主机模式):lnmp01,lnmp02,关掉selinux和防火墙。

1.lvs-server:yum install ipvsadm

添加一条新的虚拟服务器记录 ipvsadm -A -t 172.17.136.172:80 -s wrr

技术分享

添加真实服务器lnmp01 lnmp02记录:

ipvsadm -a -t 172.17.136.172:80 -r 192.168.136.174:80 -m -w 1

ipvsadm -a -t 172.17.136.172:80 -r 192.168.136.174:80 -m -w 1

技术分享

vim /etc/sysctl.conf

net.ipv4.ip_forward=1

lnmp01

添加指向DIP的网关:route add default gw 192.168.136.172

lnmp02

添加指向DIP的网关: route add default gw 192.168.136.172

Lnmp01

测试:写两个网页

Cd /data/web/

Vim index.html

Hello world

Lnmp02

Vim index.html

Good morning

技术分享

通过访问一个IP地址可以访问两个页面,这个测试说明可以通过lvs将并发访问量分发到两个real-server上从而实现负载均衡。


















本文出自 “13162732” 博客,请务必保留此出处http://13172732.blog.51cto.com/13162732/1980104

以上是关于lvs-nat负载均衡模式的主要内容,如果未能解决你的问题,请参考以下文章

lvs负载均衡实践之lvs-nat

企业——LVS-NAT模式负载均衡构建配置

LVS负载均衡群集—地址转换模式(LVS-NAT)

lvs-nat负载均衡实验

lvs-nat负载均衡模式

负载均衡集群之——LVS-NAT的部署