Rancher配置有两种类型的Catalog(应用服务目录)来部署应用:Rancher官方认证的Catalog和社区版Catalog,其中社区版Catalog让社区成员能贡献可重复使用的预建的应用程序模板。
最近的一个很赞的社区Catalog模板是AWS Classic Elastic Load Balancer的外部负载均衡器,它能让现有的负载均衡器随着Rancher服务上的EC2实例持续更新,这些服务有一个或多个暴露的端口和特定的标签。
这篇文章将解释如何建立一个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。
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”:
之后,你必须为负载均衡器提供基本的配置,比如名字、VPC、和监听器:
你还应该为Classic ELB配置安全组和健康检查,你无需增加EC2实例标签,因为Rancher的外部服务会为我们更新这个Classic ELB。
创建Rancher环境
快速启动指南(链接:http://docs.rancher.com/rancher/v1.2/en/quick-start-guide/)提供了在一台至少有1GB内存的Linux主机上搭建Rancher平台的详细步骤,然而你应该将EC2主机添加到Rancher平台,你可以采用AWS的docker machine driver。
在这个例子中,我将在AWS上之前创建的Classic ELB所在的区域中创建两个实例。
创建ELB Catalog服务
在Catalog标签中,搜索“ELB”,然后选择ELB Classic Load Balancer这一项:
Catalog至少需要配置AWS“密钥ID”和“密钥”,点击启动:
测试:Nginx服务
为了测试外部ELB,创建一个服务应满足两个条件:
- 与经典ELB监听器匹配的暴露端口。
- 设置标签io.rancher.service.external_lb.endpoint为ELB的名字。
外部服务的日志的更新如下:
你应该也看到了用Classic ELB注册的两个实例:
为了测试这个ELB,对于Classic ELB使用DNS名称:
来自Nginx热情的welcome!至此,一切大功告成!
评论前必须登录!
注册