概要
阿裡雲負載均衡(Server Load Balancer)是将通路流量根據轉發政策分發到後端多台雲伺服器(Elastic Compute Service,簡稱 ECS)的流量分發控制服務。
負載均衡服務通過設定虛拟服務位址,将位于同一地域的多台ECS執行個體虛拟成一個高性能、高可用的應用服務池;再根據應用指定的方式,将來自用戶端的網絡請求分發到雲伺服器池中。負載均衡服務是ECS面向多機方案的一個配套服務,需要同ECS結合使用。
負載均衡服務會檢查雲伺服器池中ECS執行個體的健康狀态,自動隔離異常狀态的ECS執行個體,進而解決了單台ECS執行個體的單點問題,提高了應用的整體服務能力。在标準的負載均衡功能之外,負載均衡服務還具備TCP與HTTP抗DDoS攻擊的特性,增強了應用服務的防護能力。
此篇文章中,我将示範Rancher如何通過Aliyun-slb服務對接阿裡雲SLB 。Rancher的安裝這裡就不再叙述,具體安裝方法可參照部署文檔http://rancher.com/docs/rancher/v1.6/en/ 或觀看線上教育訓練。以下文章基于一套已經搭建好的Rancher系統。
Aliyun-SLB應用原理
首先,我們需要在阿裡雲SLB頁面建立SLB執行個體,記錄執行個體的ID号,然後進入執行個體建立一條監聽政策,政策中配置了前端端口和後端伺服器端口。
按阿裡雲SLB原始的工作方式,需要手動添加有對應端口的伺服器到後端伺服器池,這樣通過前段端口發來的請求會自動轉發到後端伺服器。而通過Aliyun-SLB可以實作自動把對應後端伺服器添加到後端伺服器池中。
Aliyun-SLB 應用通過API與阿裡雲平台對接, Rancher中啟動服務時添加一個标簽來表示這個服務需要使用阿裡雲負載均衡,啟動的應用需要映射主控端端口。 Aliyun-SLB應用根據建立應用映射的主控端端口去檢測阿裡雲負載均衡有沒有監聽相應的端口。如果端口檢測通過,那麼Aliyun-SLB會把服務的相關參數傳遞給負載均衡;否則會提示重新整理配置失敗,負載均衡沒有監聽某某端口。
Aliyun-SLB 服務安裝
添加Aliyun-SLB應用商店
通過Rancher_server-ip:8080登入WEB後,在系統管理|系統設定中添加一個自定義商店。
名稱:SLB
位址:https://github.com/niusmallnan/slb-catalog.git
版本:master
儲存後,在應用商店|全部 中搜尋slb可以看到相應的應用。
<a href="https://s4.51cto.com/wyfs02/M00/9D/D5/wKiom1mHF5Wwjs6MAAAdjZono0s307.png" target="_blank"></a>
Aliyun-slb安裝
點選詳情後進入配置界面:
<a href="https://s4.51cto.com/wyfs02/M00/9D/D4/wKioL1mHF6bTV35uAAChRp2Sim0245.png" target="_blank"></a>
名稱:保持預設;
描述:可選;
配置選擇
SLB Access Key ID: AccessKey管理器中檢視;
SLB Secret Access Key:AccessKey管理器中檢視;
SLB Region:SLB所在區域。進入SLB首頁後,選中你SLB服務所在的區域,檢視浏覽器的位址。比如,如果是華南區,檢視浏覽器位址
<a href="https://s3.51cto.com/wyfs02/M01/9D/D5/wKiom1mHF7PwEGw5AAAGV-6Opc8657.png" target="_blank"></a>
那麼cn-shenzhen就是它的區域;
Aliyun VPC ID:VPC ID,進入VPC網絡首頁,找到你ECS綁定的VPC網絡并點選進去,頁面的中間有一個ID;
<a href="https://s3.51cto.com/wyfs02/M01/9D/D4/wKioL1mHF7zBq2psAAAYwkeo5rA523.png" target="_blank"></a>
ECS Private IP Lookup :這個地方需要選擇true,原因後面講解;
最後點選啟動,等待應用啟動完成。
Aliyun SLB配置
登入阿裡雲控制台,進入負載均衡首頁。右上角點選建立負載均衡,根據需要建立好負載均衡後,如圖:
<a href="https://s3.51cto.com/wyfs02/M02/9D/D4/wKioL1mHF8rTiDoAAABXkg49r6k037.png" target="_blank"></a>
點選負載均衡名稱進入負載均衡配置界面,點選左側監聽,接着點選右上角添加監聽。
如下圖,因為接下來要啟動一個nginx服務來示範,是以這裡前端通過http協定監聽8888端口,後端(ECS伺服器)容器映射到8888端口上;
寬帶和排程算法保持預設;
虛拟伺服器組:把多個運作相同服務的主機捆綁在一起,這個适用于手動配置SLB,Aliyun SLB動态配置不需要勾選;
進階配置保持預設;
監控檢測中端口設定8888,其他預設;
其他的保持預設,傳回負載均衡清單。
配置好的負載均衡如下圖:
<a href="https://s2.51cto.com/wyfs02/M00/9D/D4/wKioL1mHF_Cxv3PkAABbCkQy2no045.png" target="_blank"></a>
因為Aliyun SLB應用動态注冊可用的服務資訊到負載均衡執行個體上,後端伺服器這裡就不需要設定。
現在,我們回到前面講到的ECS Private IP Lookup 開關,如果設定沒有打開,ECS伺服器的IP位址無法傳遞給負載均衡執行個體,最後會導緻負載均衡執行個體無法動态擷取到後端伺服器。
示例服務配置
接下來建立一個nginx應用棧并建立一個nginx服務。建立服務的時候有幾個地方要設定:
1、端口映射
服務映射到主控端的端口必須與負載均衡裡面配置的端口相同;
2、服務容器标簽
建立容器的時候需要指定一個标簽:io.rancher.service.external_lb.endpoint=xxxx, 後面的XXXX為建立的負載均衡執行個體ID,這個ID在負載均衡首頁可以看到。
nginx服務跑起來之後,我們看Aliyun SLB服務的日志:
<a href="https://s2.51cto.com/wyfs02/M02/9D/D4/wKioL1mHGBjAQHKuAABtumM-pv0513.png" target="_blank"></a>
我起了兩個nginx執行個體分别運作在兩台主機上。
<a href="https://s1.51cto.com/wyfs02/M00/9D/D4/wKioL1mHGCXiHkzgAADkUqq-jkc959.png" target="_blank"></a>
現在可以正常通路了。進入負載均衡首頁檢視,已經擷取到後端伺服器了。
<a href="https://s2.51cto.com/wyfs02/M02/9D/D5/wKiom1mHGDKSiTOvAAAW8wQlKkM645.png" target="_blank"></a>
負載均衡測試
首先修改nginx預設頁面的内容并重新整理,因為預設為輪詢,是以每重新整理一次頁面就會變化:
9月27日,北京海航萬豪酒店,容器技術大會Container Day 2017即将舉行。
CloudStack之父、海航科技技術總監、華為PaaS部門部長、恒豐銀行科技部總經理、阿裡雲PaaS工程總監、民生保險CIO······均已加入豪華講師套餐!
<a href="https://s4.51cto.com/wyfs02/M01/A5/98/wKioL1nAfVOCYKR7AAgMYxVaxjM935.png" target="_blank"></a>
本文轉自 RancherLabs 51CTO部落格,原文連結:http://blog.51cto.com/12462495/1954116