Rancher | AWS ELB外部负载均衡服务全解读

Rancher配置有两种类型的Catalog(应用服务目录)来部署应用:Rancher官方认证的Catalog和社区版Catalog,其中社区版Catalog让社区成员能贡献可重复使用的预建的应用程序模板。

最近的一个很赞的社区Catalog模板是AWS Classic Elastic Load Balancer的外部负载均衡器,它能让现有的负载均衡器随着Rancher服务上的EC2实例持续更新,这些服务有一个或多个暴露的端口和特定的标签。

 

20161124194316

 

这篇文章将解释如何建立一个Classic ELB,并详细介绍如何在社区版Catalog里启动ELB的Catalog模板,如何达到Classic ELB的自动更新。

Classic Elastic Load Balancer

ELB是一种亚马逊网络服务,自动将传入的通信量分配给多个亚马逊EC2实例,ELB提供了两种类型的负载均衡器:

  • Classic Load Balancers:一个简单的负载均衡器,与多个后端EC2实例进行基于网络和应用层信息的路由通信,它提供了许多特性,包括4级或7级的负载均衡,可以仅仅基于TCP协议进行路由通信或者使用HTTP / HTTPS协议,使用level-7特性比如X-Forwarded和粘性会话。
  • Application Load Balancers:这种类型的负载均衡选择路由通信是基于内容、在应用层进行操作的,它允许定义一套路由规则与多个服务或容器进行通信,它提供了更多的特性,如Layer-7支持、HTTP / 2、WebSockets、安全特性等等。

ELB Catalog模板

这个模板是一个由Jan B创造的社区版Catalog模板。该模板创建了一个服务,用EC2实例管理现有的Classic Load Balancer,这些EC2实例带有暴露端口的Rancher服务和一个标签io.rancher.service.external_lb.endpoint。

 

20161124194326

 

Catalog模板使用一些环境变量来修改服务:

  • ELBV1_AWS_ACCESS_KEY:AWS的访问许可,由外部的ELB服务用于与ELB进行通信。
  • ELBV1_AWS_SECRET_KEY:AWS的密钥,由外部的ELB服务用于与ELB进行通信。
  • ELBV1_AWS_REGION:常常用来告知有ELB和实例存在的区域内的服务。服务将运行在该实例的默认区域。
  • ELBV1_AWS_VPCID:Rancher环境中负载均衡器和EC2实例的VPC。服务将运行在该实例的默认VPC。
  • ELBV1_USE_PRIVATE_IP:用于令服务采用EC2实例的私有IP更新ELB。

以上这些选项是用来设置服务的,但在创建服务之前Classic ELB应该已经存在。

启动Classic ELB

创造Classic ELB之前,你应该为ELB配置一个或多个监听器,监听器有一个前端和后端,两者都配置了端口和协议。

弹性负载均衡支持以下协议:

  • HTTP
  • HTTPS (secure HTTP)
  • TCP
  • SSL (secure TCP)

启动一个Classic ELB,打开亚马逊EC2控制台,然后从导航栏中选择负载均衡器,然后选择“Creat Load Balancer”:

 

20161124194335

 

之后,你必须为负载均衡器提供基本的配置,比如名字、VPC、和监听器:

 

20161124194342

 

你还应该为Classic ELB配置安全组和健康检查,你无需增加EC2实例标签,因为Rancher的外部服务会为我们更新这个Classic ELB。

 

20161124194351

 

创建Rancher环境

快速启动指南(链接:http://docs.rancher.com/rancher/v1.2/en/quick-start-guide/)提供了在一台至少有1GB内存的Linux主机上搭建Rancher平台的详细步骤,然而你应该将EC2主机添加到Rancher平台,你可以采用AWS的docker machine driver。

 

20161124194358

 

在这个例子中,我将在AWS上之前创建的Classic ELB所在的区域中创建两个实例。

 

20161124194406

 

创建ELB Catalog服务

在Catalog标签中,搜索“ELB”,然后选择ELB Classic Load Balancer这一项:

 

20161124194414

 

Catalog至少需要配置AWS“密钥ID”和“密钥”,点击启动:

 

20161124194421

 

测试:Nginx服务

为了测试外部ELB,创建一个服务应满足两个条件:

  1. 与经典ELB监听器匹配的暴露端口。
  2. 设置标签io.rancher.service.external_lb.endpoint为ELB的名字。

外部服务的日志的更新如下:

 

20161124194439

 

你应该也看到了用Classic ELB注册的两个实例:

 

20161124194447

 

为了测试这个ELB,对于Classic ELB使用DNS名称:

 

20161124194455

 

来自Nginx热情的welcome!至此,一切大功告成!

分享到:更多 ()