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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 本文章为大家介绍如何在Docker swarm-mode集群部署一个Eureka集群,并配置应用服务访问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=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-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的管理界面,内容类似。

eureka_cluster

小结

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

另外,了解更多阿里云容器服务内容,请访问 https://www.aliyun.com/product/containerservice

相关文章
|
4天前
|
负载均衡 监控 算法
【微服务 SpringCloud】实用篇 · Eureka注册中心
【微服务 SpringCloud】实用篇 · Eureka注册中心
12 1
|
4天前
|
存储 安全 数据安全/隐私保护
【Docker 专栏】Docker 容器化应用的备份与恢复策略
【5月更文挑战第9天】本文探讨了Docker容器化应用的备份与恢复策略,强调了备份在数据保护、业务连续性和合规要求中的关键作用。内容涵盖备份的重要性、内容及方法,推荐了Docker自带工具和第三方工具如Portainer、Velero。制定了备份策略,包括频率、存储位置和保留期限,并详细阐述了恢复流程及注意事项。文章还提及案例分析和未来发展趋势,强调了随着技术发展,备份与恢复策略将持续演进,以应对数字化时代的挑战。
【Docker 专栏】Docker 容器化应用的备份与恢复策略
|
4天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
4天前
|
存储 安全 数据库
【Docker 专栏】Docker 容器内应用的状态持久化
【5月更文挑战第9天】本文探讨了Docker容器中应用状态持久化的重要性,包括数据保护、应用可用性和历史记录保存。主要持久化方法有数据卷、绑定挂载和外部存储服务。数据卷是推荐手段,可通过`docker volume create`命令创建并挂载。绑定挂载需注意权限和路径一致性。利用外部存储如数据库和云服务可应对复杂需求。最佳实践包括规划存储策略、定期备份和测试验证。随着技术发展,未来将有更智能的持久化解决方案。
【Docker 专栏】Docker 容器内应用的状态持久化
|
4天前
|
机器学习/深度学习 人工智能 异构计算
【Docker 专栏】Docker 与 GPU 加速应用的结合
【5月更文挑战第9天】GPU加速技术在处理大规模数据和复杂计算时展现强大性能,尤其在AI和深度学习领域。Docker作为轻量级容器化工具,提供隔离、可移植和高效的环境。结合GPU加速,关键在于容器访问GPU设备和安装相应驱动。NVIDIA提供了支持工具,允许Docker利用GPU。应用场景包括人工智能、科学计算和视频处理。优势包括资源利用率提升和部署灵活性,但面临驱动兼容性、资源管理和监控调试的挑战。未来,随着技术发展,Docker与GPU加速在边缘计算中的应用将有广阔前景。
【Docker 专栏】Docker 与 GPU 加速应用的结合
|
4天前
|
存储 Prometheus 监控
【Docker 专栏】Docker 容器内应用的调试与故障排除
【5月更文挑战第8天】本文探讨了Docker容器内应用的调试与故障排除,强调其重要性。方法包括:通过日志排查、进入容器检查、使用监控工具及检查容器配置。常见问题涉及应用启动失败、性能问题、网络连接和数据存储。案例分析展示了实战场景,注意事项提醒避免不必要的容器修改、备份数据和理解应用架构。掌握这些技能能确保Docker应用的稳定运行和性能优化。
【Docker 专栏】Docker 容器内应用的调试与故障排除
|
4天前
|
开发框架 安全 网络安全
【Docker 专栏】Docker 多平台应用构建与部署
【5月更文挑战第8天】Docker作为一种关键的容器化技术,简化了多平台应用的构建与部署。它提供一致的运行环境,确保应用在不同平台无缝运行;通过分层构建机制加速镜像创建,提升开发效率。Docker的可移植性、高效部署及资源利用率是其主要优势。流程包括开发环境准备、构建镜像、测试验证及部署。然而,面临操作系统差异、网络安全和资源限制等挑战,需注意安全、版本管理和性能优化。Docker在多平台场景的应用将持续发挥价值。
【Docker 专栏】Docker 多平台应用构建与部署
|
Java Spring
Spring Cloud中,Eureka常见问题总结
Spring Cloud中,Eureka常见问题总结。 指定Eureka的Environment eureka.environment: 指定环境 参考文档:https://github.
1501 0
|
4天前
|
Java 应用服务中间件 Maven
SpringBoot 项目瘦身指南
SpringBoot 项目瘦身指南
60 0
|
4天前
|
缓存 安全 Java
Spring Boot 面试题及答案整理,最新面试题
Spring Boot 面试题及答案整理,最新面试题
142 0