原创|NO.A.0002|集群|LBC负载均衡集群|6台server|
Posted Java BBS
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了原创|NO.A.0002|集群|LBC负载均衡集群|6台server|相关的知识,希望对你有一定的参考价值。
一、LBC-介绍(负载均衡集群介绍)
集群拓扑图
web负载均衡集群拓扑
用户通过互联网访问到了网站,其实不是直接连接到web服务器上,
若访问到的主机是有web服务集群的,其实访问到负载均衡调度器,负载均衡个调度器接收到访问数据通过轮询的方法发给真正的web服务器。
若还要访问数据库,若是访问量比较少的话,可能是单个的数据存储,数据量大的话可能是数据库集群。
负载均衡服务器还有主备的集群
此环境包含:负载均衡集群,高可用,存储集群
负载均衡结构图(上图拆分出来的一部分)
负载调度器(最简单的是轮询)
负载调度器:
真实服务器池:
分类:软件/硬件
LVS:最普及的软件负载均衡
nginx:代理负载均衡的功能,企业版的:融合了监控nginx-plagues服务;相当于是插件的含义;HAProc:linux 中HA项目中的一个子项目;专门做负载调度器的。四层的话没有LVS广;拆成7层的话没有nginx用途广。
F5:硬件:半圆球发红光的去定位为F5
分类-工作层级
注:
物理层:负责实际的bite流传输,及其特性定义
网络层:安全的编址,路由选择,
传输层:端口 确定传输协议,确定是UDP还是TCP的
会话层:提供给用户识别的部分
表示层:提供给用户识别的部分
应用层:提供给用户识别的部分
七层:应用层:nginx典型代表,向下的6层它可以全部识别,可以识别http/域名/主机名进行数据识别分发。F5在七层也是可以实现的,可以和F5和LVS来实现负载再来一层nginx。常规不需要这样做。实现特定的功能。
二、LBC-原理(负载均衡集群原理)
分类-四层工作逻辑
注:
Apache是谁访问我,我给谁数据。
在Apache压力大的持续叠加Apache服务器的时候,LVS压力是最大的,需要配置高可用。
不涉及到真实的转发
分类-七层工作逻辑
注:
用户会发送一个数据报文到nginx负载调度器。
会根据当前的算法,想后端服务器去要数据,Apache会接收到nginx的请求,返回给nginx服务器。两个不同的tcp文件。
源变为负载均衡服务器;直接不会告诉Apache不是客户要的数据,而是我要的。nginx收到数据后,把数据重新封装后反馈给用户。
这里进行了两次不同的完整的TCP连接以及访问。
对nginx的压力最大。所有的数据都会进行过重新封装分发。nginx是轻量级的,但在负载均衡上来说,压力是比较大的。
涉及到数据的真实转发
分类-访问量
注:
LVS是nginx代理的上百倍,
适用场景
注:
LVS:B/S C/S 可以代理任何TCP/UDP TCP里面还有http协议,这就是BS结构, mysql是C/S结构,
NGINX:C/S:只能代理/C/S结构,只能识别到http协议;标准版本,识别协议,端口,主机名,IP都是可以识别到的。
nginx的负载均衡压力会很大,在有些场景下还是需要nginx来做负载,在特定需要直接进行数据转发会使用。
三、LVS-工作方式
LVS工作层级
注:
user:用户空间:更贴近用户;用户连接
kernel:内核空间:更贴近系统,驱动,操作系统,QQ,微信都是在内核空间的
ipvsadm:通过命令行管理工具去触发,类似于/etc/sysconfig开启路由转发。
ipvs:它才是真正的内核组件,是嵌在linux主机内核的,才是真正的LVS 的核心组件,只需要考虑有没有触发,通过命令确认
LVS工作模式分类
注:第四种模式正在开发,GitHub上可以看到,提交了一个新的字典,目前还是只支持三种模式
NAT模式:LVS有两个网卡, ,内网网卡:需要和后端的生产服务器建立所谓的数据传输,必须要相互通信。公网网卡:和用户去连接的部分。通过私网和负载路由器相连
TUN模式:负载路由器和用户都是通过公网直接和业务服务器直连的,也就意味着我们的业务服务器在全国各地的情况下通过TUN模式把它结合起来,构成一个完整的负载均衡集群,比较特殊,用途不是特别广泛
DR模式:负载路由器与我们的业务服务器都是处于同一个广播域之中,若外部用户想访问进来的话,需要借助一个物理的路由器进行跳转,这种模式是整个环境中负载量最高的一种方式。也是企业比较容易选择的一种方式。
LVS-NAT模式
注:
负载和业务服务器是处于同一个网域之中的,
数据包经过交换及路由的传输,会到达负载路由器
数据包能够到达客户端吗?肯定是没有任何问题的
客户与之能够与源数据服务器建立连接吗,是不行的只有当发出的数据报文的格式源时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模式
注:
不管是负载调度器,真实服务器都是处于同一个网络域中,必须处于同一个网络域
把数据报文转发给后边某一台真实服务器上,怎么转发:
源和目标对应不上,改为目标mac,可以通过三层转,也可以通过三层转,
LVS-DR模式-总结
集群节点处于同一个广播域中
真实服务器将网关指向真实路由器:真实路由器:只是做了一个二层数据报文的修改。
负载调度器只负责处理入站请求,压力最小;并发量越大的原有;并发量最大。
不支持端口映射:协议层是配置不到的,所以不支持端口映射,客户端访问的80,真实服务器的端口是80 ,访问的443,真实服务器的端口必须是443。
负载调度器必须是Linux,真实服务器最好是Linux
LVS-TUN模式
注:
公网用户:公网IP
北京的负载调度器:公网IP
广州的真实服务器2:公网IP
上市的真实服务器1:公网IP
说明客户端可以被公网IP路由到。客户端发送数据包,可以被负载调度器探测到,并改写。
数据包的二次封装。耗费的资源比LVS-NAT模式高一些,不太好用,走的是公网网络,公网网络典型的特点是慢,特殊的环境中生产服务器下,可以执行这种方案,一般不会去使用。
LVS-TUN模式-总结
真实服务器必须将网关指向真实网关处
不支持端口映射:需要对数据报文进行二次封装,端口映射的话不便于进行修改。
DS与RS必须开启隧道功能:必须要对数据报文进行MAC,TCP,UDP的封装,不然不可以进行LVS-TUN级别的负载均衡的。
入站由DS完成,出站由RS完成:入站是需要进过负载调度器的,负载调度器进行二次封装以后转发至真实服务器,真是服务器在进行第二次报文返回给客户真实数据,完成真个链路的负载。
负载调度器是Linux操作系统,真实服务器随意:支持隧道功能就可以配置;现在市面上的服务器都支持隧道功能的。
压力较大:需要对数据进行二次封装,所以压力较大,用途不是很广泛。
四、LVS-DR构建
硬件环境准备(个人环境说明)
注:实验环境:硬件环境准备。
网络:
10.10.10.11/12/13/14/15/16 6 台
配置:
VMware 14 pro
网络类型:仅主机模式(把自己确定的DHCP关闭,若开启DHCP会优先抢占)
操作系统配置: 硬件选项 2 U/1GB/20GB/2块网卡(2 UCPU/1GB内存/20GB存储空间/2块网卡)
操作系统配置:安装desktop桌面版(centos6.8)桌面版本的是因为PXE会借助桌面的配置。
授权版本:GPLv2版本
kdump:内存崩溃保护机制,内存是一次性存储器,断电后数据会丢失,kdump功能可以在断电后把内存中的信息保存到硬盘中,是一个缓存同步机制。
——>VMware硬件环境准备<——
虚拟机设置:编辑虚拟机设置——>网络适配器——>仅主机模式——>确定——>END
操作系统硬件准备:
HA-server1:10.10.10.11
HA-server2:10.10.10.12
HA-server3:10.10.10.13
HA-server4:10.10.10.14
HA-server5:10.10.10.15
HA-server6:10.10.10.16
——>操作系统配置<——
//1、linux桌面环境安装,修改默认启动为字符界面设置:Ctrl+Alt+F3=命令行界面——>vim /etc/inittab——>id:5:initdcfault:——>修改为:id:3:initdcfault:———>重启后为字符界面——>END
//2、关闭防火墙
[ ]
[ ]
//3、关闭selinux
[ ]
SELINUX=disabled
[ ]
[ ]
//4、[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:FA:34:71
TYPE=Ethernet
UUID=e5be5c71-003b-46c9-be75-f576f4fbb97d
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.10.10.11
NETMASK=255.255.255.0
//5、配置区域网yum源
//编辑虚拟机设置——>CD/DVD——>勾选:已连接,启动时连接——>确定——>END //表示把光盘插入到光驱
[ ]
[ ]
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-6
EFI GPL isolinux RELEASE-NOTES-en-US.html RPM-GPG-KEY-CentOS-6 RPM-GPG-KEY-CentOS-Security-6 TRANS.TBL
//设置开机自动挂载
[ ]
[ ]
[ ]
[ ]
[ ]
[ ]
name=CentOS-$releasever - Media
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
[ ]
[ ]
//安装gcc编译环境
[ ]
//关闭初始化环境,打快照。命名为:Justinstall
[ ]
LVS-DR
注:
D:eth0:10.10.10.11 | eth0:0:10.10.10.100 负载路由器
RS1:真实服务器1
RS2:真实服务器2
arp-ignore:改为1 arp-announce:改为2 既不向外发出公告,别人来的时候又不会主动接收
ARP通讯行为:ARP响应级别:
arp-ignore
ARP通告行为:
arp-announce
五、LVS-NAT构建
LVS-NAT
注:
C:20.20.20.22:充当本机的客户端
假设数据包发送给RS1,RS1接收到数据报文之后,RS1会回信给网关,此环境它会把网关指向负载调度器10.10.10.11,负载调度器会把这个数据报文传递给客户端。
END
声明:JavaBBS论坛主要用于IT技术专题的交流学习,为开源技术爱好者提供广泛、权威的技术资料。若您在技术专题有更好的想法或者建议,欢迎交流!!!
推荐阅读
Recommended reading
Git JavaBBS
→
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|的主要内容,如果未能解决你的问题,请参考以下文章