当前位置: 首页 > 编程笔记 >

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

龚伯寅
2023-03-14
本文向大家介绍详解通过docker和docker-compose实现eureka高可用,包括了详解通过docker和docker-compose实现eureka高可用的使用技巧和注意事项,需要的朋友参考一下

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

1. eureka server项目目录结构:

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镜像,如下:

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 两个容器:

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

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

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

 类似资料:
  • 本文向大家介绍安装docker和docker-compose实例详解,包括了安装docker和docker-compose实例详解的使用技巧和注意事项,需要的朋友参考一下 1.卸载旧版本Docker 2.执行以下命令安装依赖包 3.鉴于国内网络问题,强烈建议使用国内源执行下面的命令添加 yum 软件源 4.安装Docker CE 5.设置开机启动 Docker CE 6.鉴于国内网络问题,后续拉取

  • 我有两个容器 - 一个包含 react 应用程序,另一个包含烧瓶应用程序。 我可以使用下面的docker-compose文件和它们各自的Dockerfile构建两者,并且能够通过指定端口上的浏览器访问每个。但是,我的React应用程序对Flask的API调用没有被检索(它们在图片中没有Docker的情况下工作)。 任何建议都非常感谢! Docker-撰写 用于烧瓶应用程序的Dockerfile D

  • 本文向大家介绍docker-compose的安装和使用详解,包括了docker-compose的安装和使用详解的使用技巧和注意事项,需要的朋友参考一下 Docker Compose 是一个用来定义和运行复杂应用的 Docker 工具。 使用 Docker Compose 不再需要使用 shell 脚本来启动容器。(通过 docker-compose.yml 配置) Docker Compose的安

  • 问题内容: 我有下面的例子 效果很好。当我运行它时,在其中创建那些命名的卷,一切都很好。但是,从主机上,我只能以root 用户身份访问,因为它是(有意义的)。我想知道是否有一种方法可以将主机的目录设置为更明智/更安全的目录(例如,我用来在主机上执行大多数操作的相对没有特权的用户),或者我是否只需要手动将其吸干。我已经开始有许多脚本可以解决其他问题,因此多行几行不会有太大问题,但是如果我愿意的话,我

  • 本文向大家介绍详解Docker-compose networks 的例子,包括了详解Docker-compose networks 的例子的使用技巧和注意事项,需要的朋友参考一下 今天实验了下 docker 下的网络设置,记录一下过程,以免后面忘记。 (系统:Centos 7.4 ,docker 版本:18.03.1-ce, docker-compose version 1.18.0) 启动 Co

  • 本文向大家介绍docker-compose部署php项目实例详解,包括了docker-compose部署php项目实例详解的使用技巧和注意事项,需要的朋友参考一下 1.制定特定扩展的PHP镜像 2.编写yml文件 3.配置default.conf文件 4.修改mysql允许远程连接并新建数据库 5.创建并且启动容器 6.新建index.php测试mysql连接