阿里云ECS服务器SLB负载均衡实践

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了阿里云ECS服务器SLB负载均衡实践相关的知识,希望对你有一定的参考价值。

参考技术A

​ 负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

拥有大量用户的企业,经常会面临如下的难题:在高并发的情况下,经常会导致服务器响应速度慢,严重的情况会直接导致服务器停止服务。此时,会导致企业的业务中断,影响客户的正常访问。

负载均衡应运而生

<u>需求:本次实验最低需求两台云服务器ECS</u>

上图创建了两台云服务器ECS实例和一个负载均衡实例,它们各自拥有各自的弹性IP地址

在浏览器两个页面分别输入两台云服务器ECS的弹性IP访问

比较两台ECS的访问结果,发现部署的网站内容相同,只是显示的后端服务器IP不同。

在阿里云登陆界面选择用RAM用户登录

使用实验提供的 子用户名称 子用户名密码 登陆阿里云管理控制台

<img src="https://upload-images.jianshu.io/upload_images/20425542-fa1a73a6dc138f09.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" style="zoom:50%;" />

<img src="https://upload-images.jianshu.io/upload_images/20425542-4d17f4b440d7c9a5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" style="zoom:50%;" />

登录后点击左侧 导航栏的 产品与服务 选择 负载均衡

<img src="https://upload-images.jianshu.io/upload_images/20425542-3bad79d4ddfed80d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" style="zoom: 67%;" />

a. 在控制台点击左侧 实例管理 ,在右侧页面中的红框处看到负载均衡的 公网服务地址

该公网服务地址即为负载均衡实例的弹性IP地址

b.在浏览器上输入a的公网服务地址并访问

可见后端服务器IP尾数为131(ECS-2),但当我们刷新一遍后,如下图

后端服务器IP尾数变为130(第二台ECS-1)

当我们不停的刷新,会发现后端服务器IP 实在这两台ECS的 内外地址 之间轮流转换

因为我们在第二步配置的两台ECS的权重是相同的

下一步我们试着改变两台ECS的权重不相同看看效果如何

a.进入控制台--选择负载均衡--实例管理--点击进入实例--默认服务器组,进入如下图所示

b.勾选两台服务器--点击修改权重

c.设置权重 30,90,效果如下图

d.在浏览器中,刷新多次 负载均衡服务地址 的页面,统计页面的 后端服务器IP

可以发现:每 4 次刷新,将有 3 次访问 权重 90 的 ECS实例, 1 次访问权重为 30 的 ECS实例。

用户可以根据实际情况调整负载均衡器的请求分发,一般将 配置高的服务器设置的权重调高 配置较低的服务器设置的权重调低 。这样可以避免在高并发时,配置较低的服务器因为压力较大服务异常的发生。

a.实例管理界面---监听---修改监听配置

b.点击修改

c.开启会话保持、可选择修改会话保持超时时间

d.依次点击下一步,不修改

e. 再次在浏览器中输入 负载均衡 IP地址 多次刷新 ,发现在会话保持的超时时间内请求 只会分发到某一台 ECS 上(究竟是哪一台 ECS 没有规定),时间超出后,重新按照权重比例分发。

a.进入实例

b.点击停止

<img src="https://upload-images.jianshu.io/upload_images/20425542-e7d5f08534cd1938.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" style="zoom:67%;" />

c.返回,显示如下图所示,ECS-2已关闭

d.在监听页面和实例管理页面,健康状态显示异常

e. 再次刷新浏览器中 负载均衡 的 IP地址 ,此时,请求发送到 健康检查状态 为 正常 的ECS-1上。

Rancher通过Aliyun-slb服务对接阿里云SLB教程

概要


阿里云负载均衡(Server Load Balancer)是将访问流量根据转发策略分发到后端多台云服务器(Elastic Compute Service,简称 ECS)的流量分发控制服务。


负载均衡服务通过设置虚拟服务地址,将位于同一地域的多台ECS实例虚拟成一个高性能、高可用的应用服务池;再根据应用指定的方式,将来自客户端的网络请求分发到云服务器池中。负载均衡服务是ECS面向多机方案的一个配套服务,需要同ECS结合使用。


负载均衡服务会检查云服务器池中ECS实例的健康状态,自动隔离异常状态的ECS实例,从而解决了单台ECS实例的单点问题,提高了应用的整体服务能力。在标准的负载均衡功能之外,负载均衡服务还具备TCP与HTTP抗DDoS攻击的特性,增强了应用服务的防护能力。


此篇文章中,我将演示Rancher如何通过Aliyun-slb服务对接阿里云SLB 。Rancher的安装这里就不再叙述,具体安装方法可参照部署文档http://rancher.com/docs/rancher/v1.6/en/ 或观看在线培训。以下文章基于一套已经搭建好的Rancher系统。


Aliyun-SLB应用原理


首先,我们需要在阿里云SLB页面创建SLB实例,记录实例的ID号,然后进入实例创建一条监听策略,策略中配置了前端端口和后端服务器端口。


按阿里云SLB原始的工作方式,需要手动添加有对应端口的服务器到后端服务器池,这样通过前段端口发来的请求会自动转发到后端服务器。而通过Aliyun-SLB可以实现自动把对应后端服务器添加到后端服务器池中。


Aliyun-SLB 应用通过API与阿里云平台对接, Rancher中启动服务时添加一个标签来表示这个服务需要使用阿里云负载均衡,启动的应用需要映射宿主机端口。 Aliyun-SLB应用根据创建应用映射的宿主机端口去检测阿里云负载均衡有没有监听相应的端口。如果端口检测通过,那么Aliyun-SLB会把服务的相关参数传递给负载均衡;否则会提示刷新配置失败,负载均衡没有监听某某端口。


Aliyun-SLB 服务安装


添加Aliyun-SLB应用商店


通过Rancher_server-ip:8080登录WEB后,在系统管理|系统设置中添加一个自定义商店。


名称:SLB

地址:https://github.com/niusmallnan/slb-catalog.git

版本:master


保存后,在应用商店|全部  中搜索slb可以看到相应的应用。


技术分享


Aliyun-slb安装


点击详情后进入配置界面:


技术分享


名称:保持默认;

描述:可选;


配置选择

SLB Access Key ID:  AccessKey管理器中查看; 

SLB Secret Access Key:AccessKey管理器中查看;

SLB Region:SLB所在区域。进入SLB首页后,选中你SLB服务所在的区域,查看浏览器的地址。比如,如果是华南区,查看浏览器地址


技术分享


那么cn-shenzhen就是它的区域;


Aliyun VPC ID:VPC ID,进入VPC网络首页,找到你ECS绑定的VPC网络并点击进去,页面的中间有一个ID;


技术分享


ECS Private IP Lookup :这个地方需要选择true,原因后面讲解;


最后点击启动,等待应用启动完成。


Aliyun SLB配置


登录阿里云控制台,进入负载均衡首页。右上角点击创建负载均衡,根据需要创建好负载均衡后,如图:


技术分享


点击负载均衡名称进入负载均衡配置界面,点击左侧监听,接着点击右上角添加监听。


如下图,因为接下来要启动一个nginx服务来演示,所以这里前端通过http协议监听8888端口,后端(ECS服务器)容器映射到8888端口上;


宽带和调度算法保持默认;


虚拟服务器组:把多个运行相同服务的主机捆绑在一起,这个适用于手动配置SLB,Aliyun SLB动态配置不需要勾选;


高级配置保持默认;


监控检测中端口设置8888,其他默认;


技术分享技术分享技术分享


其他的保持默认,返回负载均衡列表。


配置好的负载均衡如下图:


技术分享


因为Aliyun SLB应用动态注册可用的服务信息到负载均衡实例上,后端服务器这里就不需要设置。


现在,我们回到前面讲到的ECS Private IP Lookup 开关,如果设置没有打开,ECS服务器的IP地址无法传递给负载均衡实例,最后会导致负载均衡实例无法动态获取到后端服务器。


示例服务配置


接下来创建一个nginx应用栈并创建一个nginx服务。创建服务的时候有几个地方要设置:


1、端口映射


服务映射到宿主机的端口必须与负载均衡里面配置的端口相同;


2、服务容器标签


创建容器的时候需要指定一个标签:io.rancher.service.external_lb.endpoint=xxxx,  后面的XXXX为创建的负载均衡实例ID,这个ID在负载均衡首页可以看到。


技术分享技术分享


nginx服务跑起来之后,我们看Aliyun SLB服务的日志:


技术分享


我起了两个nginx实例分别运行在两台主机上。


技术分享


现在可以正常访问了。进入负载均衡首页查看,已经获取到后端服务器了。


技术分享


负载均衡测试


首先修改nginx默认页面的内容并刷新,因为默认为轮询,所以每刷新一次页面就会变化:


技术分享技术分享


原文来源:Rancher Labs


本文出自 “12452495” 博客,请务必保留此出处http://12462495.blog.51cto.com/12452495/1954116

以上是关于阿里云ECS服务器SLB负载均衡实践的主要内容,如果未能解决你的问题,请参考以下文章

Rancher通过Aliyun-slb服务对接阿里云SLB教程

阿里云SLB学习总结

阿里slb做为k8s的负载均衡的限制

阿里云自建k8s集群使用slb负载均衡

阿里云ACP笔记-ECS

阿里云负载均衡配置异常解决方法