負載均衡路由__服務發現和負載均衡_用戶指南_容器服務-阿裏雲
暴露 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-阿裏雲