305
微信
负载均衡路由__服务发现和负载均衡_用户指南_容器服务-阿里云
暴露 HTTP 协议或者 HTTPS 协议的服务
推荐使用简单路由服务(即 routing)的方式来暴露 HTTP 服务或者 HTTPS 协议的服务,如果您希望搭建自己的路由链路,可以开通新的内网或者公网负载均衡实例路由到 VM 的端口(通过 label aliyun.lb.port_$container_port 来实现),并设置主机和容器的映射关系来进行请求的路由。
适用场景:
7 层协议负载均衡,自定义各服务的路由,在将传统架构迁移到容器架构过程中非容器集群的服务访问容器集群中容器的服务。
暴露 TCP 协议或者 UDP 协议的服务
目前如果要暴露 TCP 协议的服务,需要您自行设置负载均衡实例或者公网 IP,并配置好主机端口与容器端口的映射(通过 label aliyun.lb.port_$container_port 来实现)。
适用场景:
4 层协议的负载均衡,自定义各服务的路由,在将传统架构迁移到容器架构过程中非容器集群的服务访问容器集群中容器的服务。
示例:
通过自定义负载均衡的方式来将容器集群内的 Redis 服务暴露给容器集群外的 Python 应用。
首先在 负载均衡管理控制台 (单击页面右上角的 创建负载均衡)购买创建一个用于路由的负载均衡实例。
本示例中选择的是公网实例,您可以根据自己的需要选择公网或者私网。
注意: 由于负载均衡不支持跨地域(Region)部署,因此应选择与您所使用容器服务集群相同的地域。
返回 负载均衡管理控制台,将购买创建的负载均衡实例命名为 slb_redis_app。容器服务会通过该名称来引用这个负载均衡实例。
单击左侧导航栏中的 实例管理 > 选择实例所在的地域 > 选择所需实例 > 编辑实例的名称并单击 确定。
创建监听端口。
单击实例右侧的 管理 > 单击右侧导航栏中的 监听 > 单击 添加监听 > 设置监听配置。创建协议为 TCP,端口映射为 6379:6379。如下图所示。
登录 容器服务管理控制台,选择一个已有的集群,创建一个名称为 redis-demo 的应用,单击 使用镜像创建。
有关如何创建应用,参见 创建应用。
注意:由于负载均衡不支持跨地域(Region)部署,因此您所使用的容器服务集群需要和上边创建的负载均衡实例处于相同的地域。
选择 Redis 镜像并设置 端口映射。
注意:此处 Redis 镜像只是开通了容器的 6379 端口,为了使创建的负载均衡路由到这个容器端口,您必须知道 Redis 镜像的主机:端口映射。
在 端口映射 中,指定主机端口为 6379,主机端口 6379 即为负载均衡实例绑定的后端主机端口,选择使用的协议为 TCP.
为了配置自定义负载均衡,需要让 Redis 服务知道使用的负载均衡实例的信息。您可以通过向服务注入一个标签来实现或者通过设置 自定义 SLB。
向服务注入一个标签。本示例中,标签为
aliyun.lb.port_6379: tcp://slb_redis_app:6379
。标签格式如下,带
$
的变量为占位符。aliyun.lb.port_$container_port:$scheme://$[slb_name|slb_id]:$front_port
$container_port
表示容器要暴露的端口。$scheme
表示负载均衡实例监听端口支持的协议,可能的值为tcp
、http
、https
、udp
。$[slb_name|slb_id]
表示可以填写负载均衡实例的名称或者 ID。$front_port
表示负载均衡实例要暴露的前端端口。
更多详细信息,参见 aliyun.lb.port_$container_port。
在 创建应用 页面,单击 自定义 SLB 右侧的加号图标,设置要配置的负载均衡实例的信息,如下图所示。
该设置对应的标签内容为
aliyun.lb.port_6379: tcp://slb_redis_app:6379
。
本示例中,路由到的容器端口为 6379,引用前面创建的负载均衡实例名称
slb_redis_app
,与上面主机:容器端口映射设置的 TCP 协议相呼应,本示例设置监听端口的协议为 TCP 协议,同时设置负载均衡的前端端口为 6379。注意:本示例中,同时将负载均衡实例的前端端口、后端端口(即主机的端口)和容器端口均设置为 6379,您可以根据自己的需要设置不同的前端端口和主机端口。
单击 创建,Redis 应用即开始创建了。Redis 应用在创建的过程中会自动将名称为 slb_redis_app 的负载均衡实例绑定到部署了 redis 镜像的后端主机。
当应用处于就绪状态后,登录 负载均衡管理控制台,查看名为
slb_redis_app
的负载均衡实例的状态。单击左侧导航栏中的 实例管理 > 选择实例所在的地域 > 选择所需实例 > 单击实例右侧的 管理 > 单击左侧导航栏中的 服务器。
由健康状态可见,负载均衡已经正确地绑定到了 Redis 的后端。
您可以在 负载均衡管理控制台 的 实例管理 页面查看负载均衡实例的 IP 地址,并使用命令行工具
telnet $Server_Load_Balancer_IP_address 6379
来检查端口的可访问性。为了测试以上配置,在本地运行一个简单的 Python 应用来通过 slb_redis_app 负载均衡实例访问容器集群内的 Redis。
注意:Redis 主机地址是负载均衡的 IP 地址。
app.py
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='$Server_Load_Balancer_IP_address', port=6379)
@app.route('/')
def hello():
redis.incr('hits')
return 'Hello World! I have been seen %s times.' % redis.get('hits')
if __name__ == "__main__":
app.run(host="0.0.0.0", debug=True)
requirements.txt
flask
redis
shell
$ pip install -r requirements.txt
$ python app.py
Running on https://0.0.0.0:5000/ (Press CTRL+C to quit)
Restarting with stat
Debugger is active!
Debugger pin code: 243-626-653
访问结果如下图所示。
最后更新:2016-12-13 13:56:18
上一篇:
集群内服务间路由和负载均衡__服务发现和负载均衡_用户指南_容器服务-阿里云
下一篇:
容器间的互相发现__服务发现和负载均衡_用户指南_容器服务-阿里云
Logstash收集csv日志__常见日志格式_用户指南_日志服务-阿里云
到期__常见问题_云解析-阿里云
多线程上传示例__SDK示例_批量数据通道_大数据计算服务-阿里云
设置NotifyURL__直播流操作接口_API 手册_CDN-阿里云
功能实时性__常见问题_日志服务-阿里云
修改查询删除伸缩规则__伸缩规则_用户指南_弹性伸缩-阿里云
AvailableDiskCategoriesType__数据类型_API 参考_云服务器 ECS-阿里云
高速通道相关API的鉴权规则__借助RAM实现子账号对主账号资源访问_API使用手册_高速通道-阿里云
AttachPolicyToRole__授权策略管理接口_RAM API文档_访问控制-阿里云
FTP上传经常中断__故障处理_云服务器 ECS-阿里云
相关内容
常见错误说明__附录_大数据计算服务-阿里云
发送短信接口__API使用手册_短信服务-阿里云
接口文档__Android_安全组件教程_移动安全-阿里云
运营商错误码(联通)__常见问题_短信服务-阿里云
设置短信模板__使用手册_短信服务-阿里云
OSS 权限问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
消息通知__操作指南_批量计算-阿里云
设备端快速接入(MQTT)__快速开始_阿里云物联网套件-阿里云
查询API调用流量数据__API管理相关接口_API_API 网关-阿里云
使用STS访问__JavaScript-SDK_SDK 参考_对象存储 OSS-阿里云