Detailed explanation of achieving high availability of eureka through docker and docker-compose

Detailed explanation of achieving high availability of eureka through docker and docker-compose

Recently, new projects have used springcloud and docker. I will not introduce these two technologies separately. Now I will share the solution of achieving high availability of eureka through docker and docker-compose.

1. Eureka server project directory structure:

Docker high availability

2. eureka configuration file configuration:

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 If this configuration is true, it means that the IP is registered to eureka. If this is the case, the eureka server cannot discover Replicas through the server.
# Therefore, if you want to achieve high availability of eureka through Docker, it is best to use the default value (false) for this configuration
# It is not impossible to configure it to true and achieve high availability, but each eureka service needs to be mapped outside the Docker environment and know the 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 plugin configuration:

 <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 content:

FROM java:8

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

5. Generate the eureka server image:

Generate the eurekaserver image by executing the mvn clean package docker:build command as follows:

Docker high availability

6. Orchestration via 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. Jump to the project directory and execute the docker-compose up command to automatically generate two containers for the eureka server:

Docker high availability

8. Since the eureka port has been mapped, access eureka locally through the port to check the eureka service status:

Docker high availability

As can be seen from the above figure, another eureka service can be seen in both registered-replicas and available-replicas. At this point, the eureka cluster is built.

The above is the full content of this article. I hope it will be helpful for everyone’s study. I also hope that everyone will support 123WORDPRESS.COM.

You may also be interested in:
  • How to configure eureka in docker

<<:  MySQL 5.7.10 Installation Documentation Tutorial

>>:  How to allow remote connection in MySql

Recommend

Detailed explanation of Angular parent-child component communication

Table of contents Overview 1. Overview of input a...

MySQL SQL Optimization Tutorial: IN and RANGE Queries

First, let's talk about the in() query. It is...

Implementation of local migration of docker images

I've been learning Docker recently, and I oft...

A brief talk about Mysql index and redis jump table

summary During the interview, when discussing abo...

Solution to 404 Problem of Tomcat Installation in Docker

Find the containerID of tomcat and enter the toma...

Introduction to the use of anchors (named anchors) in HTML web pages

The following information is compiled from the Int...

How to remotely log in to the MySql database?

Introduction: Sometimes, in order to develop a pr...

Let IE support CSS3 Media Query to achieve responsive web design

Today's screen resolutions range from as smal...

How to change the root password in a container using Docker

1. Use the following command to set the ssh passw...

Examples of 4 methods for inserting large amounts of data in MySQL

Preface This article mainly introduces 4 methods ...

VMWare virtual machine 15.X LAN network configuration tutorial diagram

Recently, I have been working on several virtual ...

Detailed explanation of the Sidecar mode in Docker Compose

Table of contents What is Docker Compose Requirem...