设为首页 收藏本站
查看: 1816|回复: 1

[经验分享] 使用LVS+NAT搭建集群实现负载均衡

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2016-10-27 09:21:57 | 显示全部楼层 |阅读模式

LVS集群简介

   计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多   


QQ截图20161027091906.png

LVS集群分布图

集群有三种类型:

                1:负载均衡

                2:高可用集群式我们互联网行业常用的集群架构

                3:高性能计算集群--HPC
(1)负载均衡集群--LB
    负载均衡集群为企业提供了更为实用,性价比更高的系统架构解决方案。负载均衡集群把很多客户集中访问的请求负载压力可能尽可能平均的分摊到计算机集群中处理。客户请求负载通常包括应用程度处理负载和网络流量负载。这样的系统非常适合向使用同一组应用程序为大量用户提供服务。每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。      
   负载均衡运行时,一般通过一个或多个前端负载均衡器将客户访问请求分发到后端一组服务器上,从而达到整个系统的高性能和高可用性。这样计算机集群有时也被称为服务器群。一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。                                

负载均衡集群的作用
1)分担访问流量(负载均衡)
2)保持业务的连续性(高可用


(2)高可用性集群--HA
    一般是指当集群中的任意一个节点失效的情况下,节点上的所有任务自动转移到其他正常的节点上,并且此过程不影响整个集群的运行,不影响业务的提供。 类似是集群中运行着两个或两个以上的一样的节点,当某个主节点出现故障的时候,那么其他作为从 节点的节点就会接替主节点上面的任务。从节点可以接管主节点的资源(IP地址,架构身份等),此时用户不会发现提供服务的对象从主节点转移到从节点。                                                
   高可用性集群的作用:当一个机器宕机另一台进行接管。比较常用的高可用集群开源软件有:       keepalive,heardbeat。                                                                    

(3)高性能计算集群--HPC
    高性能计算集群采用将计算任务分配到集群的不同计算节点儿提高计算能力,因而主要应用在科学计算领域。比较流行的HPC采用Linux操作系统和其它一些免费软件来完成并行运算。这一集群配置通常被称为Beowulf集群。这类集群通常运行特定的程序以发挥HPCcluster的并行能力。这类程序一般应用特定的运行库, 比如专为科学计算设计的MPI库。
    HPC集群特别适合于在计算中各计算节点之间发生大量数据通讯的计算作业,比如一个节点的中间结果或影响到其它节点计算结果的情况。

常用集群软硬件

常用开源集群软件有:lvs,keepalived,haproxy,nginx,apache,heartbeat

常用商业集群硬件有:F5,  Netscaler, Radware,A10等


LVS集群的优点

1)把单台计算机无法承受的大规模的并发访问或数据流量分担到多台节点设备上分别处理,减少用户等待响应的时间,提升用户体验。
2)单个重负载的运算分担到多台节点设备上做并行处理,每个节点设备处理结束后,将结果汇总,返回给用户,系统处理能力得到大幅度提高。
3)7*24小时的服务保证,任意一个或多个设备节点设备宕机,不能影响到业务。在负载均衡集群中,所有计算机节点都应该提供相同的服务,集群负载均衡获取所有对该服务的如站请求。


LVS的三种工作模式:
1)VS/NAT模式(Network address translation)
2)VS/TUN模式(tunneling)
3)DR模式(Direct routing)


NAT模式的概述与工作原理
NAT模式概述
    Network Address Translation(NAT地址转化)
    NAT(网络地址映射)通过网络地址转换。 NAT方式可支持任何的操作系统,以及私有网络,并且只需一个Internet IP地址,但是整个系统的性能受到限制。因为执行NAT每次需要重写包,有一定的延迟;另外,大部分应用有80%的数据是从服务器流向客户机,也就是用户的请求非常短,而服务器的回应非常大,对负载均衡器形成很大压力,成为了新

LVS NAT 模式工作原理: NAT模式-网络地址转换
    这个是通过网络地址转换的方法来实现调度的。首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个后端的真实服务器(RS)。然后调度就把客户端发送的请求数据包的目标IP地址及端口改成后端真实服务器的IP地址(RIP),这样真实服务器(RS)就能够接收到客户的请求数据包了。真实服务器响应完请求后,查看默认路由(NAT模式下我们需要把RS的默认路由设置为LB服务器。)把响应后的数据包发送给LB,LB再接收到响应包后,把包的源地址改成虚拟地址(VIP)然后发送回给客户端。

步骤1:客户端访问VIP1的网站
QQ截图20161027091921.png

步骤2:客户端访问调度器时,调度器通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;
QQ截图20161027091935.png


步骤3:真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。 QQ截图20161027091948.png
原理图简述:
1)客户端请求数据,目标IP为VIP
2)请求数据到达LB服务器,LB根据调度算法将目的地址修改为RIP地址及对应端口(此RIP地址是根据调度算法得出的。)并在连接HASH表中记录下这个连接。
3)数据包从LB服务器到达RS服务器webserver,然后webserver进行响应。Webserver的网关必须是LB,然后将数据返回给LB服务器。
4)收到RS的返回后的数据,根据连接HASH表修改源地址VIP&目标地址CIP,及对应端口80.然后数据就从LB出发到达客户端。
5)客户端收到的就只能看到VIP\DIP信息。
NAT模式优缺点:
1、NAT技术将请求的报文和响应的报文都需要通过LB进行地址改写,因此网站访问量比较大的时候LB负载均衡调度器有比较大的瓶颈,一般要求最多之能10-20台节点
2、只需要在LB上配置一个公网IP地址就可以了。
3、每台内部的节点服务器的网关地址必须是调度器LB的内网地址。
4、NAT模式支持对IP地址和端口进行转换。即用户请求的端口和真实服务器的端口可以不一致。


一:实验目标
1:正确理解NAT的工作原理  
2:使用LVS+NAT搭建集群实现负载均衡

二:实验拓扑

QQ截图20161027092004.png
                                         真实环境中的拓扑图                                       
QQ截图20161027092019.png
                                      本次实验拓扑


各类IP的作用
CIP
   客户端计算机的IP可能是一个本地的、与VIP在同一网络的私有ip地址,或者是一个因特网上的公共ip地址。用作向集群发送请求的源ip地址。
VIP
   分发器上虚拟的IP,是由分发器的接口分出的一个虚拟IP,用于接收访问集群服务的请求。
DIP
   分发器上的DIP,用于将分发器上VIP所接收访问集群服务的请数据包进行解析,再转发到各个集群节点 。
RIP
   集群服务器上的真实IP,是客户端访问集群的终点。在LVS术语中,向外部世界提供服务的节点叫做真实服务器,因此在真实服务器上使用的ip地址叫做真实ip地址

三:实验环境
1、准备3台
分发器:xuegod63  VIP:eth1:192.168.1.63
                DIP:eth0:192.168.2.63
RIP:xuegod62:  eth0: vmnet4 : 192.168.2.62 网关: 192.168.2.63
RIP:xuegod64:  eth0: vmnet4 : 192.168.2.64 网关: 192.168.2.63           
2、iptables -F , 清除规则
3、selinux关闭
4:red had 6.5版本 64位操作系统

四:实验代码
xuegod63配置成分发器:
1、打开路由转发功能
[iyunv@xuegod63 ~]# vim /etc/sysctl.conf
改:net.ipv4.ip_forward = 0
为:net.ipv4.ip_forward = 1
[iyunv@xuegod63 ~]# sysctl -p #让配置生效:

2、配置网络环境: 添加一个网卡, 配置成以下网络环境
eth0 192.168.1.63 模式:br0 模拟公网
eth1 192.168.2.63 模式:vmnet4 模拟公网
Director分发器:需要开启80(服务的)端口

3:安装: LVS管理工具: ipvsadmin
[iyunv@xuegod63 Packages]# rpm -ivh ipvsadm-1.25-9.el6.x86_64.rpm

4、使用这个命令设置规则:
[iyunv@xuegod63 ~]# ipvsadm -A -t 192.168.1.63:80 -s rr #rr代表轮循
ipvsadm 命令参数
ipvsadm 命令的作用
-A
添加
-t
指定分发器上的VIP地址
-s
指定调度算法 rr表示round-robin 轮循
-a
表示添加real server的地址
-r
指定real server的IP地址
-m
表示masquerade 也就是NAT方式的LVS
[iyunv@xuegod63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.2.64 -m
[iyunv@xuegod63 ~]# ipvsadm -a -t 192.168.1.63:80 -r 192.168.2.62 -m

查看: ipvsadm 配置及查看内核IPVS表和算法的工具类似于iptables
[iyunv@xuegod63 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.1.63:80 rr
-> 192.168.2.62:80 Masq 1 0 0
-> 192.168.2.64:80 Masq 1 0 0
保存ipvsadm的配置
[iyunv@xuegod63 ~]# /etc/init.d/ipvsadm save #保存以上的配置

RealServer:xuegod62和xuegod64上面配置:
准备: 配置IP:REAL SERVER自己的网络相关信息配置成如下:。
xuegod62: eth0: vmnet4 : 192.168.2.62 网关: 192.168.2.63
xuegod64: eth0: vmnet4 : 192.168.2.64 网关: 192.168.2.63

1:配置xuegod64为realserver, 并启web服务
[iyunv@xuegod64 ~]# yum install -y httpd
[iyunv@xuegod64 ~]# vim /etc/httpd/conf/httpd.conf
ServerName 192.168.2.64:80 #改为这样
[iyunv@xuegod64 ~]# service httpd restart
[iyunv@xuegod64 ~]# echo "192.168.2.64" > /var/www/html/index.html #(实验期间,各个服务器的页面不同)

2:配置xuegod62为realserver, 并启web服务
[iyunv@xuegod62 ~]# yum install -y httpd
[iyunv@xuegod62 ~]# vim /etc/httpd/conf/httpd.conf
ServerName 192.168.2.62:80 #改为这样
[iyunv@xuegod62 ~]# service httpd restart
[iyunv@xuegod62 ~]# echo "192.168.2.62" > /var/www/html/index.html #(实验期间,各个服务器的页面不同)

测试:
在xuegod63上测试realserver :
[iyunv@xuegod63 ~]# yum install elinks  
[iyunv@xuegod63 ~]# elinks 192.168.2.64 --dump
192.168.2.64
[iyunv@xuegod63 ~]# elinks 192.168.2.62 --dump
192.168.2.62
在xuegod63上测试VIP:
QQ截图20161027092144.png

在物理机上测试
访问: 在物理上打开浏览器访问: 每按F5刷新一次,就会变换一个页面。

QQ截图20161027092048.png



#每刷新一次就跳转到下一个页面,这样就实现了地址转换和负载均衡。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-291846-1-1.html 上篇帖子: LVS+keepalived生产环境实现电信联通双VIP(DR模式) 下篇帖子: LVS-Fullnat之编译内核 将fullnat模块添加到内核
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表