日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何打造真正可動態(tài)擴展的服務架構

云計算 Docker 的出現(xiàn),以及微服務架構的興起,讓眾多開源項目開始關注在松耦合的架構前提下,如何基于 Docker 實現(xiàn)一套真正可動態(tài)擴展的服務架構。

在太平等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網(wǎng)站設計制作、網(wǎng)站設計 網(wǎng)站設計制作定制網(wǎng)站開發(fā),公司網(wǎng)站建設,企業(yè)網(wǎng)站建設,高端網(wǎng)站設計,成都全網(wǎng)營銷,外貿(mào)網(wǎng)站建設,太平網(wǎng)站建設費用合理。

在互聯(lián)網(wǎng)應用領域,服務的動態(tài)性需求十分常見,這就對服務的自動發(fā)現(xiàn)和可動態(tài)擴展提出了很高的要求。

Docker 的出現(xiàn),以及微服務架構的興起,讓眾多開源項目開始關注在松耦合的架構前提下,如何基于 Docker 實現(xiàn)一套真正可動態(tài)擴展的服務架構。

基本需求

基本的需求包括:

  • 服務啟動后要能自動被發(fā)現(xiàn)(vs 傳統(tǒng)需要手動進行注冊);
  • 負載要能動態(tài)在可用的服務實例上進行均衡(vs 傳統(tǒng)需要靜態(tài)寫入配置);
  • 服務規(guī)模要方便進行快速調(diào)整(vs 傳統(tǒng)需要較長時間的手動調(diào)整)。

相關項目

服務發(fā)現(xiàn)

服務發(fā)現(xiàn)的項目已經(jīng)有不少,包括之前介紹的 consul,以及 skydns、serf、以及主要關注一致性的強大的 zookeeper 等。

這些項目各有優(yōu)缺點,功能上大同小異,都是要通過某種機制來獲取服務信息,然后通過維護一套(分布式)數(shù)據(jù)庫來存儲服務的信息。這也是為什么 etcd 受到大家關注和集成。

在這里,選用 HashiCorp 公司的 consul 作為服務發(fā)現(xiàn)的管理端,它的簡介可以參考 這里。

服務注冊

服務注冊的手段有很多,當然,從發(fā)起方是誰可以分為兩大類,主動注冊還是被動探測。

主動注冊,顧名思義,服務啟動后,向指定的服務發(fā)現(xiàn)管理端的 API 發(fā)送請求,給出自身的相關信息。這樣做,對管理端的要求簡單了很多,但意味著服務自身要完成注冊工作,并且極端情況下,管理端比較難探測出真正存活的服務。

被動探測,則是服務發(fā)現(xiàn)管理端通過某種機制來探測存活的服務。這樣可以獲取真實的服務情況,但如何探測是個很難設計的點,特別當服務類型比較復雜的時候。

以上兩種,都對網(wǎng)絡連通性要求較高。從短期看,主動注冊方式會比較容易實現(xiàn)一些,應用情形更廣泛;但長期維護上,被動探測方式應該是更高效的設計。

這里,我們選用 gliderlabs 的 registrator,它可以通過跟本地的 docker 引擎通信,來獲取本地啟動的容器信息,并且注冊到指定的服務發(fā)現(xiàn)管理端。

配置更新

服務被調(diào)整后,負載均衡器要想動態(tài)重新分配負載,就需要通過配置來獲取更新。這樣的方案也有不少,基本上都是要安裝一些本地 agent 來監(jiān)聽服務發(fā)現(xiàn)管理端的信息,生成新的配置,并執(zhí)行更新命令。

HashiCorp 公司 的consul-template,可以通過監(jiān)聽 consul 的注冊信息,來完成本地應用的配置更新。

負載均衡

負載均衡對性能要求很高,其實并不是軟件所擅長的領域,但軟件方案勝在成本低、維護方便。包括 lvs、haproxy 都是很優(yōu)秀的設計方案。

這里,我們選用 nginx。nginx 不僅是個強大的 web 代理服務器,同時在負載均衡方面表現(xiàn)也不俗。更關鍵的,新版本的 nginx 對在線升級支持做到了極致。實時配置更新更是不在話下,可以保證服務的連續(xù)性。

實驗過程

準備工作

首先,從 這里 下載模板文件。

主要內(nèi)容如下:

  
 
 
  1. #backend web application, scale this with docker-compose scale web=3 
  2. web: 
  3.   image: yeasy/simple-web:latest 
  4.   environment: 
  5.     SERVICE_80_NAME: http 
  6.     SERVICE_NAME: web 
  7.     SERVICE_TAGS: backend 
  8.   ports: 
  9.   - "80" 
  10.  
  11. #load balancer will automatically update the config using consul-template 
  12. lb: 
  13.   image: yeasy/nginx-consul-template:latest 
  14.   hostname: lb 
  15.   links: 
  16.   - consulserver:consul 
  17.   ports: 
  18.   - "80:80" 
  19.  
  20. consulserver: 
  21.   image: gliderlabs/consul-server:latest 
  22.   hostname: consulserver 
  23.   ports: 
  24.   - "8300" 
  25.   - "8400" 
  26.   - "8500:8500" 
  27.   - "53" 
  28.   command: -data-dir /tmp/consul -bootstrap -client 0.0.0.0 
  29.  
  30. # listen on local docker sock to register the container with public ports to the consul service 
  31. registrator: 
  32.   image: gliderlabs/registrator:master 
  33.   hostname: registrator 
  34.   links: 
  35.   - consulserver:consul 
  36.   volumes: 
  37.   - "/var/run/docker.sock:/tmp/docker.sock" 
  38.   command: -internal consul://consul:8500 

如果沒有安裝 docker 和 docker-compose,需要先進行安裝,以 ubuntu 系統(tǒng)為例。

  
 
 
  1. $ curl -sSL https://get.docker.com/ | sh 
  2. $ sudo pip install docker-compose 

執(zhí)行

docker-compose 模板所在目錄,執(zhí)行

  
 
 
  1. $ sudo docker-compose up 

相關鏡像即可自動被下載,下載完畢后,容器就啟動起來了。

訪問 http://localhost 可以看到一個 web 頁面,提示實際訪問的目標地址。

多次刷新,可以看到目標地址沒有變化,這是因為,目前我們只有一個 web 后端服務器。

  
 
 
  1. 2015-08-18 03:37:58: 6 requests from  to WebServer <172.17.1.148> 

調(diào)整后端為 3 個服務器。

  
 
 
  1. $ sudo docker-compose scale web=3 

然后,再次訪問 http://localhost,多次刷新,可以看到訪問的實際目標地址發(fā)生了變化,新啟動的 web 服務器被自動注冊,并且 nginx 自動對它們進行了負載均衡。

  
 
 
  1. 2015-08-18 03:37:58: 6 requests from  to WebServer <172.17.1.148> 
  2. 2015-08-18 03:38:17: 5 requests from  to WebServer <172.17.1.152> 
  3. 2015-08-18 03:38:20: 5 requests from  to WebServer <172.17.1.153> 

博文出處:http://blog.csdn.net/yeasy/article/details/47749725


網(wǎng)站標題:如何打造真正可動態(tài)擴展的服務架構
鏈接URL:http://m.5511xx.com/article/ccdgsho.html