lvs-nat负载均衡模式

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介:

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

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 地址,能对内部进行伪装;缺点是效率低,因为返回给请求方的流量经过转换器

9efbd1b0f3f962c45a8cc36708308802.png


LVS负载均衡NAT工作流程
c56edd89855bfd0c69b12d25b0ea0bb0.png


  (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 清空

ipvsadm 重载

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

8234c9b146a85c7fbba270e8b18c1c98.png

添加真实服务器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

a02518470318cc03e34acdb9712508db.png

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

4d1a022d054a16e29bd7d70cd1e75f6e.png

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



本文转自    honeyorange   51CTO博客,原文链接:http://blog.51cto.com/13172732/1980104
相关文章
|
22天前
|
域名解析 移动开发 负载均衡
阿里云DNS常见问题之DNS负载均衡调加权模式失败如何解决
阿里云DNS(Domain Name System)服务是一个高可用和可扩展的云端DNS服务,用于将域名转换为IP地址,从而让用户能够通过域名访问云端资源。以下是一些关于阿里云DNS服务的常见问题合集:
|
4月前
|
负载均衡 网络协议 网络架构
VRRP负载均衡模式配置实用吗?
VRRP负载均衡模式配置实用吗?
65 0
|
6月前
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
|
6月前
|
存储 负载均衡 网络协议
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
企业实战(13)LVS负载均衡DR(直接路由)模式实战详解(二)
105 0
|
7月前
|
存储 负载均衡 应用服务中间件
LVS负载均衡群集——NAT模式实操
LVS负载均衡群集——NAT模式实操
182 0
|
4月前
|
负载均衡 监控 算法
负载均衡一般用什么模式
负载均衡可以采用多种模式,具体的选择取决于应用程序的需求、架构设计和性能目标。以下是一些常见的负载均衡模式: 1. **轮询(Round Robin):** 请求依次分发到每个后端服务器,循环进行。这是一种简单的负载均衡算法,适用于后端服务器性能相对均衡的情况。 2. **加权轮询(Weighted Round Robin):** 类似于轮询,但可以为每个后端服务器分配不同的权重,以便更灵活地分配负载。性能更高的服务器可以分配更高的权重。 3. **最小连接数(Least Connections):** 请求分发到当前连接数最少的后端服务器。这可以确保负载更平均地分布到服务器上,适用于处
140 0
|
7月前
|
负载均衡 应用服务中间件 nginx
nginx这种负载均衡模式,你用过吗
nginx这种负载均衡模式,你用过吗
74 0
|
存储 负载均衡 算法
作者推荐 | 【分布式技术专题】「架构设计方案」图解学习法总结集群模式下的各种软负载均衡策略实现及原理分析
作者推荐 | 【分布式技术专题】「架构设计方案」图解学习法总结集群模式下的各种软负载均衡策略实现及原理分析
134 0
作者推荐 | 【分布式技术专题】「架构设计方案」图解学习法总结集群模式下的各种软负载均衡策略实现及原理分析
|
11月前
|
负载均衡 网络协议 算法
LVS负载均衡(三种工作模式、原理、实验)
LVS负载均衡(三种工作模式、原理、实验)
372 0
|
负载均衡 网络协议 网络架构
VRRP负载均衡模式配置实用吗?
VRRP负载均衡模式配置实用吗?
176 0
VRRP负载均衡模式配置实用吗?