摘要:基礎環境準備創建虛擬機安裝系統主機說明開啟并配置服務安裝在阿里云服務器上搭建公司私有倉庫搭建私有鏡像倉庫操作對象即阿里云服務器請參照這篇文章搭建私有倉庫和批量上傳鏡像到私有倉庫私有倉庫的使用在客戶端主機創建文件夾例如先將文件傳到客戶端主
基礎環境準備
創建虛擬機;
安裝Ubuntu 16.04 Server amd64系統;
主機說明;
開啟并配置ssh服務;
安裝Docker;
在阿里云服務器上搭建公司私有倉庫搭建私有鏡像倉庫(操作對象:xytech-即阿里云服務器);
請參照這篇文章:Docker Registry搭建私有倉庫和批量上傳鏡像到私有倉庫
私有倉庫的使用;
# 在客戶端主機創建文件夾(DomainName:Port例如example.com:9527) mkdir -p /etc/docker/certs.d/DomainName:Port # 先將ca.crt文件傳到客戶端主機 # 在ca.crt的當前目錄下將該證書復制到上面創建的文件夾 cp ca.crt /etc/docker/certs.d/DomainName:Port/ # 重啟docker服務 service docker restart # 接下來就可以從私有倉庫拉取鏡像或向其上傳鏡像了。Docker集群搭建-Consul
創建Consul服務的Docker鏡像(操作對象:三臺主機);
# 這里直接拉取可用的鏡像 docker pull willem.top:6666/mongo-consul && docker tag willem.top:6666/mongo-consul mongo-consul && docker rmi willem.top:6666/mongo-consul
修改主機的配置文件(操作對象:三臺主機);
獲取docker0的ip配置信息,用于修改本地配置文件,如下圖:
更改本地配置文件“/etc/default/docker”
vim /etc/default/docker
本地配置文件編輯內容如下
DOCKER_OPTS="--dns 172.17.0.1 --dns 8.8.8.8 --dns-search service .consul"
啟動具有自啟動功能的Consul節點(操作對象:Docker01);
# 1.創建工作目錄 mkdir -p /opt/consul # 2.進入工作目錄 cd /opt/consul # 3.在工作目錄中創建啟動具有自啟動功能的Consul節點的腳本 vim consul-start.sh # 4.編輯啟動具有自啟動功能的Consul節點的腳本內容如下(請根據自己的情況更改鏡像名稱以及ip地址-查詢方式:ifconfig) docker rm -f consul01 docker run -d --restart always -h $HOSTNAME -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 53:53/udp --name consul01 mongo-consul -server -advertise 192.168.2.129 -bootstrap-expect 3 # 5.給腳本賦予可執行權限(也可使用相對路徑:chmod +x ./consul-start.sh) chmod +x /opt/consul/consul-start.sh # 6.執行腳本(也可使用相對路徑:./consul-start.sh) /opt/consul/consul-start.sh
啟動Docker02的Consul節點(操作對象:Docker02);
# 1.創建工作目錄 mkdir -p /opt/consul # 2.進入工作目錄 cd /opt/consul # 3.在工作目錄中創建啟動具有自啟動功能的Consul節點的腳本 vim consul-start.sh # 4.編輯啟動具有自啟動功能的Consul節點的腳本內容如下(請根據自己的情況更改鏡像名稱以及ip地址) docker rm -f consul02 docker run -d --restart always -h $HOSTNAME -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 53:53/udp --name consul02 mongo-consul -server -advertise 192.168.2.56 -join 192.168.2.129 # 5.給腳本賦予可執行權限(也可使用相對路徑:chmod +x ./consul-start.sh) chmod +x /opt/consul/consul-start.sh # 6.執行腳本(也可使用相對路徑:./consul-start.sh) /opt/consul/consul-start.sh
啟動Docker03的Consul節點(操作對象:Docker03);
Docker03跟Docker02的操作唯一的區別就是在第4步的配置文件中的內容稍有變化,內容如下:
docker rm -f consul03 docker run -d --restart always -h $HOSTNAME -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 53:53/udp --name consul03 mongo-consul -server -advertise 192.168.2.77 -join 192.168.2.129
其他的操作根據Docker02來即可。
通過瀏覽器訪問下面的網址即可查看Consul集群的情況(如下圖);
創建并進入工作目錄(操作對象:三臺主機);
mkdir -p /opt/disapp cd /opt/disapp
獲取基礎鏡像并修改鏡像名稱和標簽(如果從底層鏡像開始構建過于麻煩,這里直接修改替換配置文件來構建新鏡像)
# 操作對象:Docker01和Docker02 docker pull willem.top:6666/mongo-app && docker tag willem.top:6666/mongo-app mongo-app && docker rmi willem.top:6666/mongo-app # 操作對象:Docker03 docker pull willem.top:6666/mongo-client && docker tag willem.top:6666/mongo-client mongo-client && docker rmi willem.top:6666/mongo-client
創建并編輯Dockerfile(內容如下)
# 操作對象:Docker01和Docker02 FROM mongo-app MAINTAINER MongADD uwsgi-consul.ini /opt/distributed_app/ # 操作對象:Docker03 FROM mongo-client MAINTAINER Mong ADD client.rb /opt/distributed_client/
創建并編輯配置文件
操作對象:Docker01
vim uwsgi-consul.ini # 編輯配置文件內容如下(-根據自己的情況修改ip,現在用hosts映射還有些問題,暫時先用ip,%h等同于hostname) [uwsgi] plugins = consul socket = 127.0.0.1:9999 master = true enable-threads = true [server1] consul-register = url=http://192.168.2.129:8500,name=distributed_app,id=server1,port=2001 mule = config.ru [server2] consul-register = url=http://192.168.2.129:8500,name=distributed_app,id=server2,port=2002 mule = config.ru
操作對象:Docker02
vim uwsgi-consul.ini # 編輯配置文件內容如下 [uwsgi] plugins = consul socket = 127.0.0.1:9999 master = true enable-threads = true [server1] consul-register = url=http://192.168.2.56:8500,name=distributed_app,id=server1,port=2001 mule = config.ru [server2] consul-register = url=http://192.168.2.56:8500,name=distributed_app,id=server2,port=2002 mule = config.ru
操作對象:Docker03
vim client.rb # 編輯配置文件內容如下 require "rubygems" require "json" require "net/http" require "uri" require "resolv" empty = "There are no distributed applications registered in Consul" uri = URI.parse("http://172.17.0.1:8500/v1/catalog/service/distributed_app") http = Net::HTTP.new(uri.host, uri.port) request = Net::HTTP::Get.new(uri.request_uri) response = http.request(request) while true if response.body == "{}" puts empty sleep(1) elsif result = JSON.parse(response.body) result.each do |service| puts "Application #{service["ServiceName"]} with element #{service["ServiceID"]} on port #{service["ServicePort"]} found on node #{service["Node"]} (#{service["Address"]})." dns = Resolv::DNS.new.getresources("distributed_app.service.consul", Resolv::DNS::Resource::IN::A) puts "We can also resolve DNS - #{service["ServiceName"]} resolves to #{dns.collect { |d| d.address }.join(" and ")}." sleep(1) end end end
構建新鏡像
# 操作對象:Docker01和Docker02 docker build -t mongo-app-add . # 操作對象:Docker03 docker build -t mongo-client-add .
啟動分布式服務的應用和客戶端
# 操作對象:Docker01和Docker02 docker run --restart always -h $HOSTNAME -d --name docker-02-app mongo-app-add # 操作對象:Docker03 docker run --restart always -h $HOSTNAME -d --name docker-03-client mongo-client-add
通過瀏覽器訪問下面的網址即可查看Consul集群和分布式服務的情況(如下圖);
查看客戶端的日志可以看到Consul集群各節點中的分布式服務的部署情況(如下圖);
# 操作對象:Docker03 docker logs -f docker-03-clien
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/26609.html
摘要:快速開始跨主機網絡方案原生第三方方案之前介紹了搭建集群,所以在此直接選用自帶的方案來做,和完美結合。直接檢查網絡列表發現已經在其中。 Docker overlay 網絡搭建 Overlay網絡是指通過在現有網絡上疊加一個軟件定義的邏輯網絡,最大程度的保留原有網絡,通過定義其上的邏輯網絡,實現業務邏輯,解決原有數據中心的網絡問題。 快速開始 Docker跨主機網絡方案 docker ...
摘要:拉取鏡像啟動發現后端創建集群創建主管理員操作對象因為這里的既是主管理員又是發現服務后臺,所以和的都是。主管理員操作節點的容器查看集群節點的容器列表刪除容器啟停容器與直接操作的區別就是后面加了 搭建基礎環境 官方文檔中演示時用到了五臺主機/虛擬機; showImg(https://segmentfault.com/img/bVzce2); 這里因為資源有限,只用三臺; showImg(h...
摘要:同時注冊中心也會檢查注冊的服務是否可用,不可用則剔除。服務消費者即在注冊中心注冊的服務,他們之間不再通過具體地址訪問,而是通過服務名訪問其他在冊服務的資源。方法是在配置文件里加上信息,保證了,如果服務已停止,則從注冊中心中移除。 近期新聞 css宣布支持三角函數ES10即將來臨 基本架構 showImg(https://img-blog.csdnimg.cn/2019040811481...
摘要:注冊器監視每個守護進程的事件,并在生命周期事件期間自動更新。條件可以包括親和規則否定至軟強制意味著盡可能地避免。當使用通用標記如或部署服務時,可能會出現意外的后果。月日,北京海航萬豪酒店,容器技術大會即將舉行。 在這篇文章中,我們將討論如何用Rancher實現consul的服務發現。 如果你還沒有準備好,推薦你閱讀本系列中先前的文章:第一篇:CI /CD和Docker入門第二篇:使部署...
摘要:個推針對服務場景,基于和搭建了微服務框架,提高了開發效率。三容器化在微服務落地實踐時我們選擇了,下面將詳細介紹個推基于的實踐。 2016年伊始Docker無比興盛,如今Kubernetes萬人矚目。在這個無比需要創新與速度的時代,由容器、微服務、DevOps構成的云原生席卷整個IT界。個推針對Web服務場景,基于OpenResty和Node.js搭建了微服務框架,提高了開發效率。在微服...
閱讀 3328·2023-04-26 00:07
閱讀 3922·2021-11-23 10:08
閱讀 2940·2021-11-22 09:34
閱讀 859·2021-09-22 15:27
閱讀 1749·2019-08-30 15:54
閱讀 3743·2019-08-30 14:07
閱讀 913·2019-08-30 11:12
閱讀 678·2019-08-29 18:44