基于云落地SLB+Tengine实现高可用集群负载均衡

本次分享基于618慕课网直播,更多精彩可以关注:https://class.imooc.com/sale/javaarchitect

服务器配置

4台阿里云节点:

  • 2核2g * 1
  • 1核1g * 3

部署:

  • 2核2g:tomcat + tengine
  • 1核1g:tomcat

SLB负载均衡器介绍

官方详细介绍:https://help.aliyun.com/document_detail/27539.html

本质上,使用任何一家云厂商的都可以,每家厂商的名字取名不同,腾讯叫做CLB,阿里叫做SLB。都是负载均衡器,购买的时候需要注意,不同类型的SLB所支持的并发也不同。可以参考如下图:https://help.aliyun.com/document_detail/85931.html
-w1027

务必注意:SLB所在地域需要和ECS所在地域相同,ECS所在地域不仅要相同,而且所在区也需要相同,比如如下,所有的ECS都所处上海,并且在华东2 可用区E,这样才能让所有服务器节点在一个私有网络,也就是内网,内网的话带宽才会打,吞吐量才会高,性能才会更好。
-w200

如果多个服务器节点在不同的可用区,那么他们走公网,带宽小了并发就上不去了,这一点需要注意。

对了啊,这个SLB是可以购买多个的,比如异地多活,同城双活,多区高可用都能实现,阿里云或者腾讯云这样的厂商也都提供相应的解决方案。直接使用云产品会大大降低成本,以及风险。(风险是任何项目管理中必须考虑的因素,项目越大,风险越大)

部署架构图

nginx/tengine 虽然写着主备,但是真正使用起来他们是同时运行的,下游还有SLB转发给他们请求。
-w909

  • 图中两台甚至多台Nginx可以构成集群,单个宕机那么其他的还能继续服务,SLB检测到后会自动剔除,待恢复后会自动加入。
  • tomcat也为后端构成了高可用集群,并且分摊流量。
  • 那么这种方式的话在我们架构师群里有几个同学的公司也是采用的这种方式进行的部署,tomcat部分可以用docker去部署微服务,原理本质都差不多。

  • 需要注意,如果nginx不需要处理请求,也不需要处理header等信息,仅仅只是用作转发代理的话,那么直接使用SLB也可以,架构图可以参考如下:
    -w732

构建SLB高可用集群负载均衡

  1. 多区高可用,按照上海、北京、深圳等地域进行部署,流量通过dns分发到不同的地区,这也是按照地域的负载均衡,同时在某个地区全部宕机或者发生不可预料的自然灾害的时候,可以把流量分发给就近的地域服务器实例,从而保证多区高可用。

  2. slb架构分为两种,如下:

  3. SLB本质原理就是通过网卡进行IP漂移,产生虚拟ip,也就是vip,我们在架构师课程中手把手的带着大家搭建了基于keepalived的双主热备和双机主备,以及LVS+Keepalived+nginx的高可用集群对吧。这个其实就是云负载均衡器的原理。如果在云服务器中,直接使用SLB即可,没有必要再去搭建,除非自己自建机房。那么这块内容也不难,跟着老师的步骤去实操一遍心里有个底就行。毕竟不是运维。

扩展加餐:弹性伸缩

创建负载均衡

首先需要购买,这里已经需要买好了,和所有的服务器节点同处于一个地区,都是在上海E区,购买好以后就能配置SLB实例了。

  • 在实例管理中可以看到如下图红框,这个就是SLB的ip,也就是LVS的虚拟ip

  • 添加上游服务器

  • 选择两条七层代理服务器

  • 点击下一步,随后配置权重,这里随意,这里的权重比例可以为1:2,或者1:1,根据自己的实际情况

  • 确定以后,在服务器组中就有了两条上游服务器:

  • 接下来需要配置监听

  • 需要注意,我们这里是配置4层转发,那么选择TCP即可,如果你没有nginx的业务需求的话,直接使用http作为7层转发即可,不过7层转发需要有域名备案,这个要注意。

  • 在这里可以配置选择会话保持,一定时间内的固定ip请求都会转发到特定的一台节点,保证吞吐量,不需要每次都重新建立连接。

  • 选择上游服务器组

  • 再下一步

  • 最后提交

  • 如此一来4层负载均衡就配置成功了

  • 那么接下来只需要结合自身业务,通过slb的虚拟ip来进行访问即可

也可以通过命令行CURL来进行测试:
-w663

需要注意,在咱们课程中,lvs+keepalived下,我们发起访问之后,那么会得到指定的一个内部ip地址和它通信,后面我们再次发起请求,就会和这个内部地址直接交互,因此浏览器只会显示只轮询了一个RS真实地址。如果换一个客户端发请求,返回的应该就会是另一个地址了。这也就是持久连接的出现情况。参考文献:https://help.aliyun.com/document_detail/27656.html

一条tcp的连接经过lvs后,lvs会把这台记录保存15分钟,就是因为这个时间过长,所以大部分人都会发现做好LVS DR之后轮询现象并没有发生

可以通过关闭浏览器进程,等待几秒后,再重新打开后刷新,可以看到请求变化了

小节

简单小节一下,我们之前在架构师课程中所操练的其实就是偏底层的配置,而云服务器里我们是不需要这么做的,我们只需要在云供应商的应用层之上去建立相关的资源配置即可。所以原理以及实操都在架构师体系课程中,有兴趣的同学可以跟琳琳关注一波。

公众号底部二维码
公众号底部知识星球二维码

原文地址:https://www.cnblogs.com/leechenxiang/p/13194126.html