轉眼間surging 開源已經有1年了,通過1年的打磨,surging已從最初在window 部署的分佈式微服務框架,到如今的能夠在docker部署利用rancher 進行服務編排的分佈式微服務引擎,再把業務進行剝離, 經過配置路徑就能驅動加載業務模塊,這樣的細粒度設計,能更加靈活從業務中針對於對象加以細分,能更加靈活的拆分聚合服務。而這篇文章咱們來談談基於docker 如何部署javascript
surging源碼下載html
容器,就是用來存放鏡像的器皿,而鏡像是構建成的一個輕量的、獨立的、可執行的包,包括了執行它所須要的全部東西:代碼、運行環境、系統工具、系統庫、設置。java
程序被構建成鏡像放到容器中,那麼它所依賴的下層環境就再也不重要了。它能夠在任何地方運行,甚至在混合雲環境下也能夠。因此爲什麼容器能流行起來,而容器技術興起讓Docke也漸漸的映入你們的眼簾,git
那麼Docker又是什麼呢?github
Docker是基於Go語言開發並開源的容器引擎sql
Docker將應用軟件運行時所需的一切都打包成互相隔離的容器docker
Docker能夠自動執行並配置開發/線上環境,快速構建,測試和運行復雜的多容器應用程序json
對擁有數千個節點或容器的應用程序,Docker也能快速的擴展和調配bootstrap
能夠運行在主流的Linux系統,Mac以及Windows上,而且保證不管軟件在哪裏部署,都能正常運行並獲得相同的結果vim
相關概念介紹
Image鏡像和Container容器:你能夠把二者理解爲類和實例對象,或者是ISO系統鏡像和虛擬機的關係。不一樣的Image所包含的軟件或者環境是不一樣的,可是你可使用Dockerfile(docker特有語法規則所建立的文件)進行管理。而Container則是以Image做爲模板,能夠獨立運行的微型系統,一個Image能夠建立出來多個Container容器的實例
Registry:Docker Hub鏡像倉庫,爲每一個人提供龐大的鏡像資源進行拉取和使用
Dockerfile:是一個將鏡像命令組合在一塊兒的文件,用於Image的自動構建
系統環境
宿主機:Windows 10 專業版
Linux服務器: CentOS 3.10
Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
經過 uname -r 命令查看你當前的內核版本
1
|
[root@runoob ~]# uname -r 3.10.0-862.E17.X86_64
|
# yum install docker-engine 安裝docker包
安裝成功後,使用docker version命令查看是否安裝成功,安裝成功後------以下圖
啓動 Docker
1
|
systemctl start docker
|
查看docker信息,以下圖
1
|
systemctl status docker
|
測試運行 hello-world
1
|
#docker run hello-world
|
下載鏡像
1
|
docker pull rancher/server
|
啓動
rancher
1
|
docker run -d --restart=always -p 8080:8080 rancher/server
|
安裝成功後,經過http://ip:8080訪問,以下圖所示
下載鏡像
1
|
#docker pull rabbitmq:management
|
啓動
rabbitmq
1
|
#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
下載鏡像
1
|
#docker pull docker.io/consul:latest
|
建立 Consul 配置
1
|
#vim /opt/platform/consul/server.json
|
1
2
3
4
5
6
7
8
9
10
11
12
|
{
"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
的參數,而我是把參數寫到了配置文件裏。
0.0.0.0
,若是有多塊網卡,須要指定,不然啓動報錯127.0.0.1
;啓動 consul-server
1
|
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訪問,以下圖所示
下載鏡像
#sudo docker pull microsoft/dotnet:2.1-runtime
啓動
1
|
#sudo docker run -it microsoft/dotnet:2.1-runtime
|
FROM microsoft/dotnet:2.1-runtime WORKDIR /app COPY . . ENTRYPOINT ["dotnet", "Surging.Services.Server.dll"]
發佈程序
1
|
dotnet publish -r centos.7-x64 -c release
|
使用Dockerfile建立鏡像
1
|
#docker build -t surgingserver .
|
啓動
1
2
|
#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
|
配置說明
啓動後在rancher以下圖所示
由於方便,把宿主機的目錄進行了掛載,microsurging 爲分佈式微服務引擎,Modules 爲業務模塊目錄,surgingapi爲網關
1
2
3
4
|
FROM microsoft/dotnet:2.1-runtime
WORKDIR /app
COPY . .
ENTRYPOINT [
"dotnet"
,
"Surging.ApiGateway.dll"
]
|
發佈程序
1
|
dotnet publish -r centos.7-x64 -c release
|
使用Dockerfile建立鏡像
1
|
docker build -t surgingapi .
|
啓動
1
|
#docker run --name surgingapi -it -p 729:729 --env Register_Conn=192.168.249.162:8500 surgingapi
|
啓動後在rancher以下圖所示
能夠經過http://ip:729進行訪問
而後能夠經過postman 來測試網關,以下圖
經過1年的開發,surging 也趨於完善,性能很是不錯,平均訪問在0.12ms 左右,並且6月30日會在上海微軟研發中心和你們見面講解下surging 微服務引擎,也請你們多多關注