基础服务独立部署
把所有服务一次性部署好非常方便,但是在生产环境中使用的时候需要考虑这样一些因素:
- 在生产环境中的基础服务,如Eureka由于更新不频繁,应该和频繁更新应用服务分开部署
- 作为基础服务的Eureka需要考虑高可用
1 |
我们可以把部署描述文件分成两部分,eureka.yml 用来部署作为基础服务的Eureka Server,是包含三各节点的集群。 |
eureka.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
version: '3' services: eureka1: image: binblee/demo-eurekaserver networks: springcloud-overlay: aliases: - eureka ports: - "8761:8761" environment: - ADDITIONAL_EUREKA_SERVER_LIST=http://eureka2:8761/eureka/,http://eureka3:8761/eureka/ eureka2: image: binblee/demo-eurekaserver networks: springcloud-overlay: aliases: - eureka ports: - "8762:8761" environment: - ADDITIONAL_EUREKA_SERVER_LIST=http://eureka1:8761/eureka/,http://eureka3:8761/eureka/ eureka3: image: binblee/demo-eurekaserver networks: springcloud-overlay: aliases: - eureka ports: - "8763:8761" environment: - ADDITIONAL_EUREKA_SERVER_LIST=http://eureka1:8761/eureka/,http://eureka3:8761/eureka/ networks: springcloud-overlay: external: name: springcloud-overlay |
Eureka部署到的网络springcloud-overlay需要手动创建,命令如下:
1 |
docker network create -d overlay springcloud-overlay |
从部署模版中可以看出这三个Eureka实例在网络上的别名(alias)都是eureka,对于客户端可以在配置文件中指定这个别名即可,不必指定三个示例的名字。
application.yml
1 |
eureka.client.serviceUrl.defaultZone=http://${EUREKA_SERVER_ADDRESS}:8761/eureka/ |
Eureka Server的地址通过${EUREKA_SERVER_ADDRESS} 环境变量传入
1 2 3 4 5 6 |
ervices: web: image: binblee/demo-web ... environment: - EUREKA_SERVER_ADDRESS=eureka |
另外要注意的是所有依赖于Eureka的应用服务都要挂到springcloud-overlay网络上,否则无法和Eureka Server通信。下面是比较完整的部署描述文件的示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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,最后再部署应用服务。命令如下:
1 2 3 4 5 |
docker network create -d overlay springcloud-overlay cd compose/ docker stack deploy -c eureka.yml docker stack deploy -c demoweb.yml |
- 本文固定链接: https://www.yoyoask.com/?p=3353
- 转载请注明: shooter 于 SHOOTER 发表