原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

Posted Java BBS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原创|NO.A.0002|集群|LBC负载均衡集群|6台server|相关的知识,希望对你有一定的参考价值。

一、LBC-介绍(负载均衡集群介绍)

集群拓扑图


  • web负载均衡集群拓扑

  • 用户通过互联网访问到了网站,其实不是直接连接到web服务器上,

  • 若访问到的主机是有web服务集群的,其实访问到负载均衡调度器,负载均衡个调度器接收到访问数据通过轮询的方法发给真正的web服务器。

  • 若还要访问数据库,若是访问量比较少的话,可能是单个的数据存储,数据量大的话可能是数据库集群。

  • 负载均衡服务器还有主备的集群

  • 此环境包含:负载均衡集群,高可用,存储集群

负载均衡结构图(上图拆分出来的一部分)

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

负载调度器(最简单的是轮询)

  • 负载调度器:

  • 真实服务器池:

分类:软件/硬件

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

  • LVS:最普及的软件负载均衡

  • nginx:代理负载均衡的功能,企业版的:融合了监控nginx-plagues服务;相当于是插件的含义;HAProc:linux 中HA项目中的一个子项目;专门做负载调度器的。四层的话没有LVS广;拆成7层的话没有nginx用途广。

  • F5:硬件:半圆球发红光的去定位为F5

分类-工作层级

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

物理层:负责实际的bite流传输,及其特性定义

网络层:安全的编址,路由选择,

传输层:端口 确定传输协议,确定是UDP还是TCP的

会话层:提供给用户识别的部分

表示层:提供给用户识别的部分

应用层:提供给用户识别的部分

  • 七层:应用层:nginx典型代表,向下的6层它可以全部识别,可以识别http/域名/主机名进行数据识别分发。F5在七层也是可以实现的,可以和F5和LVS来实现负载再来一层nginx。常规不需要这样做。实现特定的功能。

二、LBC-原理(负载均衡集群原理)

分类-四层工作逻辑

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • Apache是谁访问我,我给谁数据。

  • 在Apache压力大的持续叠加Apache服务器的时候,LVS压力是最大的,需要配置高可用。

  • 不涉及到真实的转发

分类-七层工作逻辑

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • 用户会发送一个数据报文到nginx负载调度器。

  • 会根据当前的算法,想后端服务器去要数据,Apache会接收到nginx的请求,返回给nginx服务器。两个不同的tcp文件。

  • 源变为负载均衡服务器;直接不会告诉Apache不是客户要的数据,而是我要的。nginx收到数据后,把数据重新封装后反馈给用户。

  • 这里进行了两次不同的完整的TCP连接以及访问。

  • 对nginx的压力最大。所有的数据都会进行过重新封装分发。nginx是轻量级的,但在负载均衡上来说,压力是比较大的。

  • 涉及到数据的真实转发

分类-访问量

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • LVS是nginx代理的上百倍,

适用场景

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • LVS:B/S C/S 可以代理任何TCP/UDP    TCP里面还有http协议,这就是BS结构,  mysql是C/S结构,

  • NGINX:C/S:只能代理/C/S结构,只能识别到http协议;标准版本,识别协议,端口,主机名,IP都是可以识别到的。

  • nginx的负载均衡压力会很大,在有些场景下还是需要nginx来做负载,在特定需要直接进行数据转发会使用。

三、LVS-工作方式

LVS工作层级

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • user:用户空间:更贴近用户;用户连接

  • kernel:内核空间:更贴近系统,驱动,操作系统,QQ,微信都是在内核空间的

  • ipvsadm:通过命令行管理工具去触发,类似于/etc/sysconfig开启路由转发。

  • ipvs:它才是真正的内核组件,是嵌在linux主机内核的,才是真正的LVS 的核心组件,只需要考虑有没有触发,通过命令确认

LVS工作模式分类

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:第四种模式正在开发,GitHub上可以看到,提交了一个新的字典,目前还是只支持三种模式

  • NAT模式:LVS有两个网卡, ,内网网卡:需要和后端的生产服务器建立所谓的数据传输,必须要相互通信。公网网卡:和用户去连接的部分。通过私网和负载路由器相连

  • TUN模式:负载路由器和用户都是通过公网直接和业务服务器直连的,也就意味着我们的业务服务器在全国各地的情况下通过TUN模式把它结合起来,构成一个完整的负载均衡集群,比较特殊,用途不是特别广泛

  • DR模式:负载路由器与我们的业务服务器都是处于同一个广播域之中,若外部用户想访问进来的话,需要借助一个物理的路由器进行跳转,这种模式是整个环境中负载量最高的一种方式。也是企业比较容易选择的一种方式。    

LVS-NAT模式

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • 负载和业务服务器是处于同一个网域之中的,

  • 数据包经过交换及路由的传输,会到达负载路由器

  • 数据包能够到达客户端吗?肯定是没有任何问题的

  • 客户与之能够与源数据服务器建立连接吗,是不行的只有当发出的数据报文的格式源时11,12,13,14,目标是11,12,13,14的时候,源数据报文才能够到达我们的客户端

  • rs1、rs2、rs3都是指向DNAT/SNAT,进行数据的转发。所有的数据报文都是需要进过负载路由器进行数据的转发。

LVS-NAT模式-总结

  • 集群节点处于同一个网络环境中:

  • 真实服务器必须将网关指向负载调度器

  • RIP通常是私有IP,仅用于各个集群节点通信

  • 负载调度器必须位于RS与DS之间,充当网关:客户与真实服务器之间,

  • 支持端口映射:真实服务器的端口不一定一直,只需要在LVS中把对应端口注明明确即可

  • 负载调度器必须是Linux操作系统,真实服务器随意;LVS:linux虚拟服务技术,所以必须是linux系统。

  • 进出数据报文都要进过负载调度器机器,压力较大;

LVS-DR模式

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • 不管是负载调度器,真实服务器都是处于同一个网络域中,必须处于同一个网络域

  • 把数据报文转发给后边某一台真实服务器上,怎么转发:

  • 源和目标对应不上,改为目标mac,可以通过三层转,也可以通过三层转,

LVS-DR模式-总结

  • 集群节点处于同一个广播域中

  • 真实服务器将网关指向真实路由器:真实路由器:只是做了一个二层数据报文的修改。

  • 负载调度器只负责处理入站请求,压力最小;并发量越大的原有;并发量最大。

  • 不支持端口映射:协议层是配置不到的,所以不支持端口映射,客户端访问的80,真实服务器的端口是80 ,访问的443,真实服务器的端口必须是443。

  • 负载调度器必须是Linux,真实服务器最好是Linux

LVS-TUN模式

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • 公网用户:公网IP

  • 北京的负载调度器:公网IP

  • 广州的真实服务器2:公网IP

  • 上市的真实服务器1:公网IP

  • 说明客户端可以被公网IP路由到。客户端发送数据包,可以被负载调度器探测到,并改写。

  • 数据包的二次封装。耗费的资源比LVS-NAT模式高一些,不太好用,走的是公网网络,公网网络典型的特点是慢,特殊的环境中生产服务器下,可以执行这种方案,一般不会去使用。

LVS-TUN模式-总结

  • 真实服务器必须将网关指向真实网关处

  • 不支持端口映射:需要对数据报文进行二次封装,端口映射的话不便于进行修改。

  • DS与RS必须开启隧道功能:必须要对数据报文进行MAC,TCP,UDP的封装,不然不可以进行LVS-TUN级别的负载均衡的。

  • 入站由DS完成,出站由RS完成:入站是需要进过负载调度器的,负载调度器进行二次封装以后转发至真实服务器,真是服务器在进行第二次报文返回给客户真实数据,完成真个链路的负载。

  • 负载调度器是Linux操作系统,真实服务器随意:支持隧道功能就可以配置;现在市面上的服务器都支持隧道功能的。

  • 压力较大:需要对数据进行二次封装,所以压力较大,用途不是很广泛。

四、LVS-DR构建

硬件环境准备(个人环境说明)

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:实验环境:硬件环境准备。

  1. 网络:

  • 10.10.10.11/12/13/14/15/16           6 台

  1. 配置:

  • VMware         14  pro

  • 网络类型:仅主机模式(把自己确定的DHCP关闭,若开启DHCP会优先抢占)

  1. 操作系统配置: 硬件选项  2 U/1GB/20GB/2块网卡(2 UCPU/1GB内存/20GB存储空间/2块网卡)

  • 操作系统配置:安装desktop桌面版(centos6.8)桌面版本的是因为PXE会借助桌面的配置。

  • 授权版本:GPLv2版本

  • kdump:内存崩溃保护机制,内存是一次性存储器,断电后数据会丢失,kdump功能可以在断电后把内存中的信息保存到硬盘中,是一个缓存同步机制。

——>VMware硬件环境准备<——

  1. 虚拟机设置:编辑虚拟机设置——>网络适配器——>仅主机模式——>确定——>END

  • 操作系统硬件准备:

  1. HA-server1:10.10.10.11

  2. HA-server2:10.10.10.12

  3. HA-server3:10.10.10.13

  4. HA-server4:10.10.10.14

  5. HA-server5:10.10.10.15

  6. HA-server6:10.10.10.16

——>操作系统配置<——

//1、linux桌面环境安装,修改默认启动为字符界面设置:Ctrl+Alt+F3=命令行界面——>vim /etc/inittab——>id:5:initdcfault:——>修改为:id:3:initdcfault:———>重启后为字符界面——>END//2、关闭防火墙[root@localhost ~]# service iptables stop[root@localhost ~]# chkconfig iptables off//3、关闭selinux[root@localhost ~]# vim /etc/sysconfig/selinuxSELINUX=disabled[root@localhost ~]# setenforce 0 //0表示临时关闭selinux[root@localhost ~]# setenforce 1 //1表示临时开启selinux//4、[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0HWADDR=00:0C:29:FA:34:71TYPE=EthernetUUID=e5be5c71-003b-46c9-be75-f576f4fbb97dONBOOT=yesNM_CONTROLLED=yesBOOTPROTO=staticIPADDR=10.10.10.11NETMASK=255.255.255.0//5、配置区域网yum源//编辑虚拟机设置——>CD/DVD——>勾选:已连接,启动时连接——>确定——>END //表示把光盘插入到光驱[root@localhost ~]# mkdir /mnt/cdrom[root@localhost ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/mount: block device /dev/sr0 is write-protected, mounting read-only CentOS_BuildTag EULA images Packages repodata RPM-GPG-KEY-CentOS-Debug-6 RPM-GPG-KEY-CentOS-Testing-6EFI GPL isolinux RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Security-6 TRANS.TBL//设置开机自动挂载[root@localhost ~]# echo "/dev/sr0 /mnt/cdrom iso9660 defaults 0 0" >>/etc/fstab[root@localhost yum.repos.d]# mkdir back[root@localhost yum.repos.d]# mv * back/[root@localhost yum.repos.d]# cp -a back/CentOS-Media.repo .[root@localhost yum.repos.d]# vim CentOS-Media.repo [c6-media]name=CentOS-$releasever - Mediabaseurl=file:///mnt/cdromgpgcheck=0enabled=1gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 [root@localhost yum.repos.d]# yum clean all[root@localhost yum.repos.d]# yum makecache//安装gcc编译环境[root@localhost yum.repos.d]# yum install -y gcc gcc-c++ lrzsz//关闭初始化环境,打快照。命名为:Justinstall[root@localhost yum.repos.d]# shutdown -h now

LVS-DR

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • D:eth0:10.10.10.11    |    eth0:0:10.10.10.100            负载路由器

  • RS1:真实服务器1

  • RS2:真实服务器2

  • arp-ignore:改为1        arp-announce:改为2        既不向外发出公告,别人来的时候又不会主动接收

ARP通讯行为:ARP响应级别:

  1. arp-ignore

ARP通告行为:

  1. arp-announce

五、LVS-NAT构建

LVS-NAT

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

注:

  • C:20.20.20.22:充当本机的客户端

  • 假设数据包发送给RS1,RS1接收到数据报文之后,RS1会回信给网关,此环境它会把网关指向负载调度器10.10.10.11,负载调度器会把这个数据报文传递给客户端。

   

END





声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!



原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

推荐阅读

Recommended reading

原创|NO.A.0002|集群|LBC负载均衡集群|6台server|

  JavaBBSGit   

  JavaBBS大数据/dsj

  JavaBBS云存储/ycc

  JavaBBS数据库/sjk

  JavaBBS云计算/yjs

  JavaBBSIT.Log

  JavaBBSNginx/ngx

  JavaBBSzabbix/zbx

  JavaBBSJavaSE/jse
  JavaBBS社区文章/bwz

  JavaBBS社区资料/bzl


以上是关于原创|NO.A.0002|集群|LBC负载均衡集群|6台server|的主要内容,如果未能解决你的问题,请参考以下文章

分布式集群负载均衡高可用的概念

Nginx反向代理与负载均衡

Linux 集群总结 + LVS(负载均衡器)原理及配置

集群--介绍

负载均衡集群

数据库水平切分的实现原理解析——分库,分表,主从,集群,负载均衡器(转)