小編給大家分享一下基于docker部署surging分布式微服務引擎的案例,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
10余年專注成都網(wǎng)站制作,成都企業(yè)網(wǎng)站定制,個人網(wǎng)站制作服務,為大家分享網(wǎng)站制作知識、方案,網(wǎng)站設計流程、步驟,成功服務上千家企業(yè)。為您提供網(wǎng)站建設,網(wǎng)站制作,網(wǎng)頁設計及定制高端網(wǎng)站建設服務,專注于成都企業(yè)網(wǎng)站定制,高端網(wǎng)頁制作,對成都玻璃鋼雕塑等多個行業(yè),擁有豐富的網(wǎng)站制作經(jīng)驗。1、前言
轉(zhuǎn)眼間surging 開源已經(jīng)有1年了,經(jīng)過1年的打磨,surging已從最初在window 部署的分布式微服務框架,到現(xiàn)在的可以在docker部署利用rancher 進行服務編排的分布式微服務引擎,再把業(yè)務進行剝離, 通過配置路徑就能驅(qū)動加載業(yè)務模塊,這樣的細粒度設計,能更加靈活從業(yè)務中針對于對象加以細分,能更加靈活的拆分聚合服務。基于docker 如何部署
2、概述
容器,就是用來存放鏡像的器皿,而鏡像是構(gòu)建成的一個輕量的、獨立的、可執(zhí)行的包,包括了執(zhí)行它所需要的所有東西:代碼、運行環(huán)境、系統(tǒng)工具、系統(tǒng)庫、設置。
程序被構(gòu)建成鏡像放到容器中,那么它所依賴的下層環(huán)境就不再重要了。它可以在任何地方運行,甚至在混合云環(huán)境下也可以。所以為何容器能流行起來, 而容器技術興起讓Docke也漸漸的映入大家的眼簾,
那么Docker又是什么呢?
Docker是基于Go語言開發(fā)并開源的容器引擎
Docker將應用軟件運行時所需的一切都打包成互相隔離的容器
Docker可以自動執(zhí)行并配置開發(fā)/線上環(huán)境,快速構(gòu)建,測試和運行復雜的多容器應用程序
對擁有數(shù)千個節(jié)點或容器的應用程序,Docker也能快速的擴展和調(diào)配
可以運行在主流的Linux系統(tǒng),Mac以及Windows上,并且保證無論軟件在哪里部署,都能正常運行并得到相同的結(jié)果
相關概念介紹
Image鏡像和Container容器:你可以把兩者理解為類和實例對象,或者是ISO系統(tǒng)鏡像和虛擬機的關系。不同的Image所包含的軟件或者環(huán)境是不同的,但是你可以使用Dockerfile(docker特有語法規(guī)則所創(chuàng)建的文件)進行管理。而Container則是以Image作為模板,可以獨立運行的微型系統(tǒng),一個Image可以創(chuàng)建出來多個Container容器的實例
Registry:Docker Hub鏡像倉庫,為每個人提供龐大的鏡像資源進行拉取和使用
Dockerfile:是一個將鏡像命令組合在一起的文件,用于Image的自動構(gòu)建
3、環(huán)境搭建
系統(tǒng)環(huán)境
宿主機:Windows 10 專業(yè)版
Linux服務器: CentOS 3.10
1.安裝Docker
Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內(nèi)核版本
[root@runoob ~]# uname -r 3.10.0-862.E17.X86_64
# yum install docker-engine 安裝docker包
安裝成功后,使用docker version命令查看是否安裝成功,安裝成功后------如下圖
啟動 Docker
systemctl start docker
查看docker信息,如下圖
systemctl status docker
測試運行 hello-world
#docker run hello-world
2.安裝rancher
下載鏡像
docker pull rancher/server
啟動 rancher
docker run -d --restart=always -p 8080:8080 rancher/server
安裝成功后,通過http://ip:8080訪問,如下圖所示
3.安裝rabbitmq
下載鏡像
docker run -d --restart=always -p 8080:8080 rancher/server
復制代碼 代碼如下:
#docker run -d --name rabbitmq --publish 5672:5672 --publish 4369:4369 --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 \rabbitmq:management
安裝成功后,通過http://ip:15672訪問,如下圖所示
4.安裝Consul
下載鏡像
#docker pull docker.io/consul:latest
創(chuàng)建 Consul 配置
#vim /opt/platform/consul/server.json
{ "datacenter": "quark-consul", "data_dir": "/consul/data", "server": true, "ui": true, "bind_addr": "192.168.249.162", "client_addr": "192.168.249.162", "bootstrap_expect": 1, "retry_interval": "10s", "rejoin_after_leave": false, "skip_leave_on_interrupt": true }
配置說明
官方在啟動容器的時候是將一部分配置作為 docker run
的參數(shù),而我是把參數(shù)寫到了配置文件里。
datacenter:數(shù)據(jù)中心名稱(庫名)
data_dir:數(shù)據(jù)存儲目錄
server:運行在server模式
ui:使用UI界面
bind_addr:內(nèi)部集群通信綁定的地址。默認是 0.0.0.0 ,如果有多塊網(wǎng)卡,需要指定,否則啟動報錯
client_addr:客戶端接口綁定的地址,默認是 127.0.0.1 ;
retry_join:重新加入集群
retry_interval:重試時間
rejoin_after_leave:在離開集群之后才重試加入
skip_leave_on_interrupt:在啟動后,是否 Ctrl+C 優(yōu)雅退出,我們是容器模式,所以不用管,直接 true 就好了。
啟動 consul-server
復制代碼 代碼如下:
docker run -d --net=host --name consul -v /opt/platform/consul/config:/consul/config -v /opt/platform/consul/data:/consul/data consul agent
安裝成功后,通過http://ip:8500訪問,如下圖所示
5. 安裝dotnetcore 2.1 runtime
下載鏡像
#sudo docker pull microsoft/dotnet:2.1-runtime
啟動
#sudo docker run -it microsoft/dotnet:2.1-runtime
三、部署程序
1. 部署surging引擎,無需引用任何業(yè)務模塊,新建Dockerfile文件
FROM microsoft/dotnet:2.1-runtime WORKDIR /app COPY . . ENTRYPOINT ["dotnet", "Surging.Services.Server.dll"]
發(fā)布程序
dotnet publish -r centos.7-x64 -c release
使用Dockerfile創(chuàng)建鏡像
#docker build -t surgingserver .
啟動
#docker run --name surgingserver --env Mapping_ip=192.168.249.162 --env Mapping_Port=198 --env RootPath=/home/fanly --env Register_Conn=192.168.249.162:8500 --env EventBusConnection=172.17.0.4 --env Surging_Server_IP=0.0.0.0 -v /home/fanly:/home/fanly -it -p 198:198 surgingserver
配置說明
Mapping_ip:映射的外部IP(環(huán)境變量)
Mapping_port :映射的外部端口 (環(huán)境變量)
RootPath:業(yè)務模塊存儲的根路徑 (環(huán)境變量)
Register_Conn:注冊中心地址 (環(huán)境變量)
EventBusConnection:eventbus 地址 (環(huán)境變量)
Surging_Server_IP:容器內(nèi)部IP (環(huán)境變量)
啟動后在rancher如下圖所示
因為方便,把宿主機的目錄進行了掛載,microsurging 為分布式微服務引擎,Modules 為業(yè)務模塊目錄,surgingapi為網(wǎng)關
2. 部署surging網(wǎng)關, 新建Dockerfile文件
FROM microsoft/dotnet:2.1-runtime WORKDIR /app COPY . . ENTRYPOINT ["dotnet", "Surging.ApiGateway.dll"]
發(fā)布程序
dotnet publish -r centos.7-x64 -c release
使用Dockerfile創(chuàng)建鏡像
docker build -t surgingapi .
啟動
復制代碼 代碼如下:
#docker run --name surgingapi -it -p 729:729 --env Register_Conn=192.168.249.162:8500 surgingapi
啟動后在rancher如下圖所示
可以通過http://ip:729進行訪問
然后可以通過postman 來測試網(wǎng)關,如下圖
以上是“基于docker部署surging分布式微服務引擎的案例”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!