详解通过docker和docker-compose实现eureka高可用

 更新时间:2018年09月19日 11:44:06   作者:ganen_qian  
这篇文章主要介绍了详解通过docker和docker-compose实现eureka高可用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近新项目有使用到springcloud 和docker,关于这两个技术就不分别介绍了,现在分享一下通过docker,docker-compose实现eureka高可用的方案。

1. eureka server项目目录结构:

docker高可用

2. eureka 配置文件配置:

server:
 port: 8900

spring:
 application:
  name: eureka-server
 profiles:
  active: dev

management:
 security:
  enabled: false
 health:
  rabbit:
   enabled: false

---
spring:
 profiles: dev

eureka:
 client:
  serviceUrl:
   defaultZone: http://localhost:${server.port}/eureka/
  register-with-eureka: false
  fetch-registry: false
 instance:
  hostname: localhost
  prefer-ip-address: true

---
spring:
 profiles: test_ha_1

eureka:
 client:
  serviceUrl:
   defaultZone: http://eurekaserver2:${server.port}/eureka/
 instance:
  hostname: eurekaserver1
#  prefer-ip-address: true 该配置为true表示注册到eureka上的是IP,如果这样的化,eureka服务器就不能通过服务器发现Replicas。
#               故如果想通过Docker实现eureka高可用,该配置最好使用默认值(false)
#               此处配置为true且实现高可用也不是没有办法,就是每个eureka服务需映射到Docker环境外,且知道ip。
---
spring:
 profiles: test_ha_2

eureka:
 client:
  serviceUrl:
   defaultZone: http://eurekaserver1:${server.port}/eureka/
 instance:
  hostname: eurekaserver2
#  prefer-ip-address: true

3. docker maven插件配置:

 <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
      <plugin>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>0.4.13</version>
        <configuration>
          <imageName>${docker.image.prefix}/${project.artifactId}:${project.version}</imageName>
          <dockerDirectory>src/main/docker</dockerDirectory>
          <forceTags>true</forceTags>
          <resources>
            <resource>
              <targetPath>/</targetPath>
              <directory>${project.build.directory}</directory>
            </resource>
          </resources>
        </configuration>
        <!--<groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <version>0.4.13</version>
        <configuration>
          <imageName>itmuch/${project.artifactId}:${project.version}</imageName>
          <forceTags>true</forceTags>
          <baseImage>java</baseImage>
          <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
          <resources>
            <resource>
              <targetPath>/</targetPath>
              <directory>${project.build.directory}</directory>
              <include>${project.build.finalName}.jar</include>
            </resource>
          </resources>
        </configuration>-->
      </plugin>
    </plugins>
  </build>

4. Docker file 文件内容:

FROM java:8

ADD eureka-server-1.0.0.jar eurekaserver.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eurekaserver.jar"]

5. 生成 eureka server 镜像:

通过执行 mvn clean package docker:build 命令,生成eurekaserver镜像,如下:

docker高可用

6. 通过docker-compose 编排:

version: '2'
services:
 eurekaserver1:
  image: raynspace/eureka-server:1.0.0
  ports:
   - "7900:8900"
  environment:
   - spring.profiles.active=test_ha_1

 eurekaserver2:
  image: raynspace/eureka-server:1.0.0
  #hostname: eurekaserver2
  ports:
   - "7800:8900"
  environment:
   - spring.profiles.active=test_ha_2

7. 跳转至项目目录下,执行docker-compose up 命令,自动生成eureka server 两个容器:

docker高可用

8. 由于已经把eureka 端口映射出来,所以本地通过端口访问eureka,查看eureka 服务状态:

docker高可用

通过上图可知,在registered-replicas和available-replicas两项均能看见另外一个eureka服务,至此eureka 集群搭建完成。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • docker run之后状态总是Exited

    docker run之后状态总是Exited

    这篇文章主要介绍了docker run之后状态总是Exited,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • docker容器如何查看运行日志

    docker容器如何查看运行日志

    这篇文章主要介绍了docker容器如何查看运行日志问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Docker 容器中安装 nvm工具的步骤

    Docker 容器中安装 nvm工具的步骤

    这篇文章主要介绍了在Docker容器中安装nvm工具的步骤,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • docker容器的一些常见命令小结

    docker容器的一些常见命令小结

    Docker是目前最流行的容器化平台之一,它提供了一种轻量级的虚拟化解决方案,使得应用程序的部署和管理变得更加便捷和高效,这篇文章主要给大家总结介绍了关于docker容器的一些常见命令,需要的朋友可以参考下
    2024-01-01
  • Docker中的数据存放位置

    Docker中的数据存放位置

    这篇文章主要介绍了Docker中的数据存放位置,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • Docker容器从镜像恢复代码的操作步骤

    Docker容器从镜像恢复代码的操作步骤

    这篇文章主要介绍了Docker容器从镜像恢复代码的操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • docker环境搭建JMeter+Grafana+influxdb可视化性能监控平台的教程

    docker环境搭建JMeter+Grafana+influxdb可视化性能监控平台的教程

    这篇文章主要介绍了docker下搭建JMeter+Grafana+influxdb可视化性能监控平台,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • 使用Docker构建企业级自定义镜像的方法

    使用Docker构建企业级自定义镜像的方法

    这篇文章主要介绍了使用Docker构建企业级自定义镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-05-05
  • Docker常用命令Study03详解

    Docker常用命令Study03详解

    这篇文章主要介绍了Docker常用命令Study03详解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • Docker 安装启动Jenkins的方法(docker-compose)

    Docker 安装启动Jenkins的方法(docker-compose)

    这篇文章主要介绍了Docker 安装启动 Jenkins(docker-compose)的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-09-09

最新评论