950
京東網上商城
Docker Swarm運行Spring Cloud應用(二):Eureka高可用
在上篇文章中介紹了如何如何在Docker Swarm集群中部署Spring Cloud應用。本文章為大家介紹如何實現Eureka的高可用。
Docker Swarm運行Spring Cloud應用(一):部署
Docker Swarm運行Spring Cloud應用(二):Eureka高可用(本文)
基礎服務獨立部署
把所有服務一次性部署好非常方便,但是在生產環境中使用的時候需要考慮這樣一些因素:
- 在生產環境中的基礎服務,如Eureka由於更新不頻繁,應該和頻繁更新應用服務分開部署
- 作為基礎服務的Eureka需要考慮高可用
我們可以把部署描述文件分成兩部分,eureka.yml 用來部署作為基礎服務的Eureka Server,是包含三各節點的集群。
eureka.yml
version: '3'
services:
eureka1:
image: binblee/demo-eurekaserver
networks:
springcloud-overlay:
aliases:
- eureka
ports:
- "8761:8761"
environment:
- ADDITIONAL_EUREKA_SERVER_LIST=https://eureka2:8761/eureka/,https://eureka3:8761/eureka/
...
eureka2:
image: binblee/demo-eurekaserver
networks:
springcloud-overlay:
aliases:
- eureka
ports:
- "8762:8761"
environment:
- ADDITIONAL_EUREKA_SERVER_LIST=https://eureka1:8761/eureka/,https://eureka3:8761/eureka/
...
eureka3:
image: binblee/demo-eurekaserver
networks:
springcloud-overlay:
aliases:
- eureka
ports:
- "8763:8761"
environment:
- ADDITIONAL_EUREKA_SERVER_LIST=https://eureka1:8761/eureka/,https://eureka3:8761/eureka/
...
networks:
springcloud-overlay:
external:
name: springcloud-overlay
Eureka部署到的網絡springcloud-overlay
需要手動創建,命令如下:
docker network create -d overlay springcloud-overlay
從部署模版中可以看出這三個Eureka實例在網絡上的別名(alias)都是eureka
,對於客戶端可以在配置文件中指定這個別名即可,不必指定三個示例的名字。
application.yml
eureka.client.serviceUrl.defaultZone=https://${EUREKA_SERVER_ADDRESS}:8761/eureka/
Eureka Server的地址通過${EUREKA_SERVER_ADDRESS}
環境變量傳入。
services:
web:
image: binblee/demo-web
...
environment:
- EUREKA_SERVER_ADDRESS=eureka
另外要注意的是所有依賴於Eureka的應用服務都要掛到springcloud-overlay
網絡上,否則無法和Eureka Server通信。下麵是比較完整的部署描述文件的示例:
version: '3'
services:
web:
image: binblee/demo-web
networks:
- springcloud-overlay
environment:
- EUREKA_SERVER_ADDRESS=eureka
ports:
- "8080"
...
bookservice:
image: binblee/demo-bookservice
networks:
- springcloud-overlay
environment:
- EUREKA_SERVER_ADDRESS=eureka
...
networks:
springcloud-overlay:
external:
name: springcloud-overlay
部署這幾個服務需要3個步驟,首先創建overlay網絡,然後部署Eureka,最後再部署應用服務。命令如下:
docker network create -d overlay springcloud-overlay
cd compose/
docker stack deploy -c eureka.yml
docker stack deploy -c demoweb.yml
訪問Swarm集群中的任意節點的8761端口,可以看到Eureka實例1有兩個副本,eureka2和eureka3,2個應用服務已經注冊上去了。訪問8762和8763,可以看到另外兩個Eureka的管理界麵,內容類似。
小結
本文章為大家介紹如何在Docker swarm-mode集群部署一個Eureka集群,並配置應用服務訪問Eureka。通過這樣的方式可以很方便地做到基礎服務和應用分開部署,並且可以保證了基礎服務的高可用。本文的示例代碼在github上。
另外,了解更多阿裏雲容器服務內容,請訪問 https://www.aliyun.com/product/containerservice
最後更新:2017-04-09 23:00:29
上一篇:
數據管理DMS for 萬網版V3.0.0發布
下一篇:
Python-關於Python中閉包的一些理解
Alphago再下一城,人機大戰能告訴我們什麼?
雲棲大會馬雲放大招,賺錢圍繞這個板塊,券商、機構也同時現身!
華為收入五年翻番:懷如履薄冰之心,行勇勐精進之事
PostgreSQL全角、半角互相轉換
Linux 年度奧斯卡頒獎晚會
打造支撐百萬用戶的分布式代碼托管平台
[WCF REST] UriTemplate、UriTemplateTable與WebHttpDispatchOperationSelector
[Qt教程] 第11篇 2D繪圖(一)繪製簡單圖形
未能正確加載“VSTS for Database Professionals Sql Server Data-tier Application”包。
WCF服務的批量寄宿