1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > lvs-nat负载均衡模式

lvs-nat负载均衡模式

时间:2021-05-25 02:22:26

相关推荐

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 9000,php-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上从而实现负载均衡。

本文转自 honeyorange 51CTO博客,原文链接:/13172732/1980104

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。