從零開始部署基於阿里容器雲的微服務(consul+registrator+template)(一)

長話短說,本文旨在記錄基於阿里容器雲的微服務部署過程,讓大家對阿里容器雲的使用,微服務的部署有一個整體認識。這個話題我會分幾篇文章闡述,由淺入深,部署由笨拙到靈巧,大家一起學習,進步!今天我們說說來看看整體框架的部署過程:


1.
登陸阿里雲consle創建容器集羣並加入三個ecs節點
阿里雲console-->容器服務-->集羣-->創建集羣
wKiom1ia_YzArIHNAAEk9wL_zdQ470.png-wh_50                           

我們的測試節點如下:

192.168.1.1 node1

192.168.1.2 node2consul master

192.168.1.3 node3

2.分別登陸測試節點node1-node3獲取consul
docker pull progrium/consul

 

3.node2上啓動consul master

docker run -d -h master -v /data:/data\

-p 192.168.1.2:8300 \

-p 192.168.1.2:8301:8301 \

-p 192.168.1.2:8302:8302 \

-p192.168.1.2:8400:8400 \

-p 8500:8500 \

progrium/consul -server-advertise 192.168.1.2 -bootstrap-expect 3(等到集羣節點到三個才啓動)

4.node1node3上啓動consuljoinnode2

node1

docker run -d -h node1 -v /data:/data \

-p 192.168.1.1:8300:8300 \

-p 192.168.1.1:8301:8301 \

-p 192.168.1.1:8302:8302 \

-p 192.168.1.1:8400:8400 \

-p 8500:8500 \

progrium/consul -server -advertise 192.168.1.1-join 192.168.1.2

 

node3

docker run -d -h node1 -v /data:/data \

-p 192.168.1.3:8300:8300 \

-p 192.168.1.3:8301:8301 \

-p 192.168.1.3:8302:8302 \

-p 192.168.1.3:8400:8400 \

-p 8500:8500 \

progrium/consul -server -advertise 192.168.1.3-join 192.168.1.2

 

5.檢查consul集羣狀態

Node2上執行

wKiom1ia5YqD5D_PAABow73eP9c282.png-wh_50

顯示節點信息

 

6.安裝部署registrator並註冊到consul

Node1

docker run -d -v/var/run/docker.sock:/tmp/docker.sock --name node1 -h node1gliderlabs/registrator:latest consul://192.168.1.2:8500

node2:

docker run -d -v/var/run/docker.sock:/tmp/docker.sock --name node2 -h node2gliderlabs/registrator:latest consul://192.168.1.2:8500

node3:

docker run -d -v/var/run/docker.sock:/tmp/docker.sock --name node3 -h node3 gliderlabs/registrator:latestconsul://192.168.1.2:8500

 

查看註冊到consul的服務,此刻因爲我們沒有啓動任何的服務,所以會看到空的列表:

curl 192.168.1.2:8500/v1/catalog/services|jq .

 

7.下載consul-template

安裝unzip

yuminstall unzip -y
wgethttps://releases.hashicorp.com/consul-template/0.7.0/consul-template_0.7.0_linux_amd64.zip
unzip consul-template_0.7.0_linux_amd64.zip -d /usr/local/bin/


8.
製作Dockfile並生成鏡像

A,定義模板文件

vi/usr/local/service.ctmpl

upstreampython-service {
least_conn;
{{range service "python-micro-service"}}server ``.`Address`:``.`Port`max_fails=3 fail_timeout=60 weight=1;
`else`server 127.0.0.1:65535; # force a 502 `end`
}

server {
listen 80 default_server;
charset utf-8;

location / {
proxy_pass http://python-service;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}

 

B.定義nginx啓動腳本

vi start.sh

#!/bin/bash

service nginx start

consul-template -consul=192.168.1.2:8500-template="/templates/service.ctmpl:/etc/nginx/conf.d/service.conf:servicenginx reload"

 

C.定義Dockerfile

 

cp /usr/local/bin/consul-template .

vi Dockerfile

 

FROMnginx:latest

ENTRYPOINT ["/bin/start.sh"]
EXPOSE 80
VOLUME /templates
ENV 192.168.1.2:8500

ADDstart.sh /bin/start.sh
#RUN rm -v /etc/nginx/conf.d/*
ADD consul-template /usr/local/bin/
RUN chmod +x /usr/local/bin/consul-template && chmod +x /bin/start.sh

 

D.製作nginx鏡像文件

docker build -t nginx_test_123 .

 

E.查看製作的鏡像文件

Docker images

wKiom1ia5gSg36SlAAMQEPAfxvQ410.png-wh_50

 

看到我們剛剛創建的nginx鏡像了

 

9.上傳鏡像

直接使用docker push會直接推送imagedocker hub上,我們是要上傳到我們的阿里雲倉庫的,步驟如下:

A.    在阿里雲後臺先定義鏡像名稱

wKioL1ia5h-Bc_E3AAD1QuTKDmU167.png-wh_50

B.    重新指定我們的鏡像名字

Docker tag 3cde0ec0444snginx容器id

registry.cn-beijing.aliyuncs.com/test/nginx_test_123

 

C.    鏡像上傳

登陸阿里docker hub

docker login --username=aliyun賬戶  --password="hub密碼"   registry.cn-beijing.aliyuncs.com

 

上傳鏡像
docker push registry.cn-beijing.aliyuncs.com/test/nginx _test_123

 

查看上傳的鏡像

wKioL1ia5maSrzWKAAEWLxczVoY141.png-wh_50

 

10.使用鏡像批量部署應用

阿里雲-容器雲-應用-創建應用-通過鏡像創建應用-鏡像名創建,假設我們部署到集羣的三個節點則compose編排如下:

wKioL1ia5n_iSWpDAACsZ8BZ6qg548.png-wh_50


11
.再次查看consul註冊服務註冊信息可看到剛發佈的nginx已經註冊好了

 

 

今天先記錄到這,下次我們進行java類的微服務部署,因爲是直接啓動的jar包所以不涉及到template文件的編寫,registrator直接註冊到consul就可以了

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章