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

本文将详尽演示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/ranch... 或观看在线培训。以下文章基于一套已经搭建好的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/niusmallna...
版本: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默认页面的内容并刷新,因为默认为轮询,所以每刷新一次页面就会变化:

图片描述
图片描述


9月27日,北京海航万豪酒店,容器技术大会Container Day 2017即将举行。

CloudStack之父、海航科技技术总监、华为PaaS部门部长、恒丰银行科技部总经理、阿里云PaaS工程总监、民生保险CIO······均已加入豪华讲师套餐!

11家已容器落地企业,15位真·云计算大咖,13场纯·技术演讲,结合实战场景,聚焦落地经验。免费参会+超高规格,详细议程及注册链接请戳

图片描述


Rancher
1.2k 声望2.5k 粉丝

Rancher是一个开源的企业级Kubernetes管理平台,实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理。Rancher一向因操作体验的直观、极简备受用户青睐,被Forrester评为“2020年多云容器开发平台领导厂商...