LVS负载均衡之NAT模式部署

1、LVS的NAT模式介绍

参考自官网:http://www.linuxvirtualserver.org/zh/lvs3.html

由于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用保留IP地址(10.0.0.0/255.0.0.0、 172.16.0.0/255.128.0.0和192.168.0.0/255.255.0.0)[64, 65, 66]。这些地址不在Internet上使用,而是专门为内部网络预留的。当内部网络中的主机要访问Internet或被Internet访问时,就需要 采用网络地址转换(Network Address Translation, 以下简称NAT),将内部地址转化为Internets上可用的外部地址。NAT的工作原理是报文头(目标地址、源地址和端口等)被正确改写后,客户相信 它们连接一个IP地址,而不同IP地址的服务器组也认为它们是与客户直接相连的。由此,可以用NAT方法将不同IP地址的并行网络服务变成在一个IP地址 上的一个虚拟服务。

VS/NAT的体系结构如图所示。在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的。这些服务器 提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系 统(如NFS)共享,也可以通过一个分布式文件系统来提供。

客户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达调度器,调度器根据连接调度算法从一组真实服务器中选出一台服务器,将报文的目标地址 Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。同时,调度器在连接Hash 表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务 器。当来自真实服务器的响应报文经过调度器时,调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口,再把报文发给用户。我们在连接上引入一个状态机,不同的报文会使得连接处于不同的状态,不同的状态有不同的超时值。在TCP 连接中,根据标准的TCP有限状态机进行状态迁移,这里我们不一一叙述,请参见W. Richard Stevens的《TCP/IP Illustrated Volume I》;在UDP中,我们只设置一个UDP状态。不同状态的超时值是可以设置的,在缺省情况下,SYN状态的超时为1分钟,ESTABLISHED状态的超 时为15分钟,FIN状态的超时为1分钟;UDP状态的超时为5分钟。当连接终止或超时,调度器将这个连接从连接Hash表中删除。

这样,客户所看到的只是在Virtual IP Address上提供的服务,而服务器集群的结构对用户是透明的。对改写后的报文,应用增量调整Checksum的算法调整TCP Checksum的值,避免了扫描整个报文来计算Checksum的开销。

在一些网络服务中,它们将IP地址或者端口号在报文的数据中传送,若我们只对报文头的IP地址和端口号作转换,这样就会出现不一致性,服务会中断。所以,针 对这些服务,需要编写相应的应用模块来转换报文数据中的IP地址或者端口号。我们所知道有这个问题的网络服务有FTP、IRC、H.323、 CUSeeMe、Real Audio、Real Video、Vxtreme / Vosiac、VDOLive、VIVOActive、True Speech、RSTP、PPTP、StreamWorks、NTT AudioLink、NTT SoftwareVision、Yamaha MIDPlug、iChat Pager、Quake和Diablo。

简单来说,这种模式借助iptables的nat表来实现

用户的请求到分发器后,通过预设的iptables规则,把请求的数据包转发到后端的rs上去

rs需要设定网关为分发器的内网ip

用户请求的数据包和返回给用户的数据包全部经过分发器,所以分发器成为瓶颈

在nat模式中,只需要分发器有公网ip即可,所以比较节省公网ip资源

缺点:扩展性有限。高负载模式下,director可能成为瓶颈

优点:支持任意操作系统,节点服务器使用私有IP地址,与负载调度器位于同一个物理网络,安全性比DR模式和TUN模式要高。

部署过程

环境:

lvs        eth0:10.0.0.3            gateway:10.0.0.254        eth1:192.168.1.3

web01    eth0:192.168.1.7        gateway:192.168.1.3

web02    eth0:192.168.1.8        gateway:192.168.1.3

1、配置lvs服务器为路由器

web01和web02只有内网卡,配置lvs为路由器使其上网

[[email protected] ~]# vim /etc/sysctl.conf

[[email protected] ~]# sysctl -p

net.ipv4.ip_forward = 1

[[email protected] ~]# iptables -F

[[email protected] ~]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

2、web服务器准备

在web服务器上安装httpd服务来进行模拟,每台服务器的web首页不同,在负载均衡测试的时候以便区分

web01

[[email protected] ~]# yum install -y httpd

[[email protected] ~]# systemctl start httpd.service

[[email protected] ~]# systemctl enable httpd.service

[[email protected] ~]# echo ‘web01‘> /var/www/html/index.html

[[email protected] ~]# curl 127.0.0.1

web01

web02

[[email protected] ~]# yum install -y httpd

[[email protected] ~]# systemctl start httpd.service

[[email protected] ~]# systemctl enable httpd.service

[[email protected] ~]# echo ‘web02‘> /var/www/html/index.html

[[email protected] ~]# curl 127.0.0.1

web02

3、lvs服务器配置

[[email protected] ~]# yum install -y ipvsadm        #安装lvs核心管理软件包

[[email protected] ~]# ipvsadm -C

[[email protected] ~]# ipvsadm -A -t 10.0.0.3:80 -s rr

[[email protected] ~]# ipvsadm -a -t 10.0.0.3:80 -r 192.168.1.7 -m

[[email protected] ~]# ipvsadm -a -t 10.0.0.3:80 -r 192.168.1.8 -m

参数说明:

-C    --clear清除内核虚拟服务器表中的所有记录

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

-t    --tcp-service service-address说明虚拟服务器提供的是tcp 的服务

-s     --scheduler scheduler使用的调度算法,调度算法可以指定以下8种:rr(轮询),wrr(权重),lc(最后连接),wlc(权重),lblc(本地最后连接),lblcr(带复制的本地最后连接),dh(目的地址哈希),sh(源地址哈希),sed(最小期望延迟),nq(永不排队)

-a    --add-server在内核虚拟服务器表的一条记录里添加一条新的真实服务器记录。也就是在一个虚拟服务器中增加一台新的真实服务器

-r    --real-server server-address指定真实的服务器[Real-Server:port]

-m     --masquerading指定LVS 的工作模式为NAT 模式

调度测试

[[email protected] ~]# curl 10.0.0.3

web01

[[email protected] ~]# curl 10.0.0.3

web02

[[email protected] ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 10.0.0.3:80 rr

-> 192.168.1.7:80 Masq 1 0 0

-> 192.168.1.8:80 Masq 1 0 1

-L    --list 显示内核虚拟服务器表

-n    不解析端口使用的协议

4、keepalived结合lvs_NAT模式

配置keepalived增加虚拟ip,从而管理到lvs,可以进一步配置为lvs服务器的高可用

[[email protected] ~]# yum install keepalived -y

[[email protected] ~]# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

router_id LVS_DEVEL        #表示keepalived服务器的一个标识

}

vrrp_instance VI_1 {            #定义一个vrrp组,组名唯一

state MASTER                #定义改主机为keepalived的master主机

interface eth0            #监控eth0号端口

virtual_router_id 51        #虚拟路由id号为51,id号唯一,这个id决定了多播的MAC地址

priority 100                #节点优先级

advert_int 1                #检查间隔,默认为1秒

authentication {

auth_type PASS        #认证方式,密码认证

auth_pass 1111        #认证密码

}

virtual_ipaddress {

10.0.0.4                #虚拟ip地址

}

}

virtual_server 10.0.0.4 80 {    #虚拟主机设置

delay_loop 6                #每隔6秒查询realserver状态

lb_algo rr                #lvs的调度算法

lb_kind NAT                #lvs的集群模式

persistence_timeout 50    #同一IP的连接50秒内被分配到同一台realserver

protocol TCP                #用TCP协议检查realserver状态

real_server 192.168.1.7 80 {    #后端真实主机ip

weight 1                    #每台机器的权重,0表示不给该机器转发请求,直到它恢复正常

TCP_CHECK {                #以下为健康检查项目

connect_timeout 3        #连接超时时间,单位为秒

nb_get_retry 3            #检测失败后的重试次数,如果达到重试次数仍然失败,将后端从服务器池中移除

delay_before_retry 3    #失败重试的间隔时间,单位为秒

connect_port 80        #检查的连接端口

}

}

real_server 192.168.1.8 80 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

connect_port 80

}

}

}

[[email protected] ~]# systemctl start keepalived.service

[[email protected] ~]# ipvsadm -L -n

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

TCP 10.0.0.3:80 rr

-> 192.168.1.7:80 Masq 1 0 0

-> 192.168.1.8:80 Masq 1 0 0

TCP 10.0.0.4:80 rr

-> 192.168.1.7:80 Masq 1 0 0

-> 192.168.1.8:80 Masq 1 0 0

这里keepalived服务启动后,配置的vip也成功实现了lvs负载均衡,还需要做的就是在web服务器上增加辅助ip10.0.0.33即可

原文地址:https://www.cnblogs.com/ssgeek/p/9504825.html

时间: 2024-10-13 05:29:54

LVS负载均衡之NAT模式部署的相关文章

Lvs 负载均衡之nat模式配置

Lvs nat模式全称是Virtual Server via Network Address Translation(VS/NAT),通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器:真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程. Lvs nat工作原理图如下 特点: 1,所有的后端服务器和Lvs服务器(调度器)要在同一个网段内 2,后端服务器IP是私有地址,仅用于集群节点之间进行通信 3,Lvs服务器同

LVS负载均衡群集--NAT模式

LVS简介1. 在互联网应用中,随着站点对硬件性能.响应速度.服务稳定性.数据可靠性等要求越来越高,单台服务器难以承担所有的访问.除了使用价格昂贵的大型机.专用负载分流设备以外,企业多选择构建群集服务器--通过整合多台相对廉价的普通服务器,以同一个地址对外提供相对的服务.本篇博客将介绍企业中常用的一种群集技术--LVS.负载均衡群集:以提高应用系统的响应能力.尽可能处理更多的访问请求.减少延迟为目标,获得高并发.高负载(LB)的整体性能.LB的负载分配依赖于主节点的分流算法,将来自客户机的访问请

LVS负载均衡之nat模式的配置

nat模式的配置:(假设    dir:192.168.2.122(假设成公网IP) 192.168.109.136(内网) rs1:192.168.109.130 rs2:192.168.109.131) (1)先在dir上安装lvs服务: yum install -y ipvsadm (2)编写lvs配置的启动脚本: #!/bin/bash # director 服务器上开启路由转发功能: echo 1 > /proc/sys/net/ipv4/ip_forward #关闭icmp的重定向

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

群集 群集(或集群)的称呼来自于英语单词"Cluster",表示一群.一串的意思,用在服务器领域则表示大量服务器的集合体. 群集的类型 无论是哪种群集,都至少包括两台节点服务器,而对外表现为一个整体,只提供一个访问入口(域名或 IP 地址),相当于一台大型计算机.根据群集所针对的目标差异,可分为以下三种类型. 复杂均衡群集(Load Balance Cluster):以提高应用系统的响应能力.尽可能处理更多的访问请求.减少延迟为目标,获得高并发.高负载(LB)的整体性能. 高可用群集(

LVS负载均衡群集DR模式

LVS-DR在DR模式的群集中,LVS负载器为访问入口,但不作网关处理:服务器池中所有节点都各自接入internet,发送给客户端WEB响应数据包不需要LVS负载调度器.nat模式和dr模式的区别 两种模式都是实现负载均衡lvs的方法,nat模式在包进入的时候在分发器上做了目的地址的mac转换,也就是DNAT,包回去的时候从哪进来的也要从哪里出去,这就造成了nat模式在real server过多的时候造成了数据包在回去的时候都是从一个出口方向,也就造成了瓶颈. DR模式在数据包进入的时候由分发器

LVS负载均衡三种模式的实现

何为lvs负载均衡? lvs负载均衡(linux virtual server)又名linux虚拟服务器.由章文嵩博士主导的负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案.如下图所示,互联网用户通过web请求访问到lvs调度器,然后调度器再根据算法把请求送给后端的linux web服务器上.比如这里拿负载均衡模式来说,由于web服务器都是连接的相同的存储,又都是跑的相同的服务,所以不论哪个服务器回应客户端,内容则都是一致

LVS负载均衡之DR模式

LVS负载均衡之DR 一.实验环境 二.实验步骤 配置VIP目的:为了客户机来请求时lvs直接调度节点服务器,节点服务器用VIP回应客户机请求.如果不配置VIP,用自己的ip回应,则客户机丢弃web本机地址,因为不是客户机所要找的IP地址. LVS配置 ip:vmnet2:192.168.1.2 VIP:eth0:0:192.168.1.254  NETMASK:255.255.255.0 1.加载ip_vs模块并安装ipvsadm #modprobe  ip_vs #yum  -y  inst

LVS负载均衡群集-NAT

LVS的全称Linux vitual system, linux vitual server 是由目前阿里巴巴的著名工程师章文嵩博士开发的一款开源软件.LVS工作在一台server上提供Directory(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的realserver(真正提供服务的主机),从而实现集群环境中的负载均衡. LVS的核心组件ipvs工作在kernel中,是真正的用于实现根据定义的集群转发规则把客户端的请求转发到特定的realserver.而另一个组件ipvs

LVS负载均衡之LVS-NAT实例部署(配置篇)

前面我们了解了关于LVS三种模式(LVS/NAT,LVS/DR,LVS/TUN)的工作原理,以及它们间区别和优势,下面我们逐一介绍关于这三种模式的实例部署,本节主要介绍LVS/NAT实例部署,如下: LVS/NAT实例部署 如图所示为整体的拓扑图: 一.部署前说明: (1)系统版本: centos 6.6 (2)角色及ip相关信息: CIP:192.168.10.13/24VIP:192.168.10.100/24 DIR:eth0:192.168.1.100/24 Eth1:192.168.1