详细解答可以参考官方帮助文档
目前如果要暴露 TCP 协议的服务,需要您自行设置负载均衡实例或者公网 IP,并配置好主机端口与容器端口的映射(通过阿里云扩展标签lb 来实现)。
Note | |
如果要使用负载均衡实例,您需要购买一个新的负载均衡实例。多个服务不能共享使用同一个负载均衡实例,同时不能共享使用集群默认负载均衡实例。 |
适用场景:
4 层协议的负载均衡,自定义各服务的路由,在将传统架构迁移到容器架构过程中非容器集群的服务访问容器集群中的服务。
示例:
通过自定义负载均衡的方式来将容器集群内的 Redis 服务暴露给容器集群外的 Python 应用。
本示例中选择的是公网实例,您可以根据自己的需要选择公网或者私网。
Note | |
由于负载均衡不支持跨地域(Region)部署,因此应选择与您所使用容器服务集群相同的地域。 |
有关如何创建应用,参见创建应用。
Note | |
由于负载均衡不支持跨地域(Region)部署,因此您所使用的容器服务集群需要和上边创建的负载均衡实例处于相同的地域。 |
Note | |
此处 Redis 镜像只是开通了容器的 6379 端口,为了使创建的负载均衡路由到这个容器端口,您必须指定 Redis 镜像的主机端口:容器端口的映射。 |
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
表示负载均衡实例要暴露的前端端口。 更多详细信息,参见阿里云扩展标签lb。
aliyun.lb.port_6379: tcp://slb_redis_app:6379
。
本示例中,路由到的容器端口为 6379,引用前面创建的负载均衡实例名称 slb_redis_app
,与上面主机端口:容器端口的映射设置的 TCP 协议相呼应,本示例设置监听端口的协议为 TCP 协议,同时设置负载均衡的前端端口为 6379。
Note | |
本示例中,同时将负载均衡实例的前端端口、后端端口(即主机的端口)和容器端口均设置为 6379,您可以根据自己的需要设置不同的前端端口和主机端口。 |
slb_redis_app
的负载均衡实例的状态。 单击左侧导航栏中的实例管理,选择实例所在的地域 > 选择所需实例 > 单击实例右侧的管理 > 单击左侧导航栏中的 。
telnet $Server_Load_Balancer_IP_address 6379
来检查端口的可访问性。 Note | |
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 http://0.0.0.0:5000/ ## Press CTRL+C to quit
Restarting with stat
Debugger is active!
Debugger pin code: 243-626-653
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。