博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker Swarm运行Spring Cloud应用(二):Eureka高可用
阅读量:7026 次
发布时间:2019-06-28

本文共 2535 字,大约阅读时间需要 8 分钟。

在上篇文章中介绍了如何如何在Docker Swarm集群中部署Spring Cloud应用。本文章为大家介绍如何实现Eureka的高可用。

Docker Swarm运行Spring Cloud应用(二):Eureka高可用(本文)

基础服务独立部署

把所有服务一次性部署好非常方便,但是在生产环境中使用的时候需要考虑这样一些因素:

  • 在生产环境中的基础服务,如Eureka由于更新不频繁,应该和频繁更新应用服务分开部署
  • 作为基础服务的Eureka需要考虑高可用

我们可以把部署描述文件分成两部分, 用来部署作为基础服务的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=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需要手动创建,命令如下:

docker network create -d overlay springcloud-overlay

从部署模版中可以看出这三个Eureka实例在网络上的别名(alias)都是eureka,对于客户端可以在配置文件中指定这个别名即可,不必指定三个示例的名字。

application.yml

eureka.client.serviceUrl.defaultZone=http://${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-overlaycd compose/docker stack deploy -c eureka.ymldocker stack deploy -c demoweb.yml

访问Swarm集群中的任意节点的8761端口,可以看到Eureka实例1有两个副本,eureka2和eureka3,2个应用服务已经注册上去了。访问8762和8763,可以看到另外两个Eureka的管理界面,内容类似。

eureka_cluster

小结

本文章为大家介绍如何在Docker swarm-mode集群部署一个Eureka集群,并配置应用服务访问Eureka。通过这样的方式可以很方便地做到基础服务和应用分开部署,并且可以保证了基础服务的高可用。本文的示例代码在上。

另外,了解更多阿里云容器服务内容,请访问

转载地址:http://edmxl.baihongyu.com/

你可能感兴趣的文章
ZOJ1093 动态规划
查看>>
Swift - 06 - 数值类型转换和类型别名
查看>>
原型模式与对象的拷贝
查看>>
CISCO 6509 日志分析
查看>>
AutoOps 1.8 版本
查看>>
烂泥:centos安装LVM方式
查看>>
写时拷贝(方案一)
查看>>
教程Micropython自制小型家庭气象站(萝卜教育)
查看>>
Redis源码分析系列26:对redis的一点小感触
查看>>
phpstudy 性能调优
查看>>
JDK源码解读(1)ArrayList和LinkedList
查看>>
第22讲: Scala中的闭包实战详解
查看>>
linux信号解释(1)
查看>>
串口DTU设备常见问题处理
查看>>
28.umask值
查看>>
文件操作工具类
查看>>
nginx教程从入门到精通(ttlsa出品)
查看>>
squid日志之access.log格式+内容
查看>>
我们是如何上网?
查看>>
我的友情链接
查看>>