docker と docker-compose による eureka の高可用性の実現の詳細な説明

docker と docker-compose による eureka の高可用性の実現の詳細な説明

最近、新しいプロジェクトでは springcloud と docker が使用されています。この 2 つのテクノロジーを個別に紹介することはしません。ここでは、docker と docker-compose を通じて eureka の高可用性を実現するソリューションを紹介します。

1. Eureka サーバー プロジェクトのディレクトリ構造:

Dockerの高可用性

2. eureka 構成ファイルの構成:

サーバ:
 ポート: 8900

春:
 応用:
  名前: eureka-server
 プロフィール:
  アクティブ: 開発者

管理:
 安全:
  有効: false
 健康:
  うさぎ:
   有効: false

---
春:
 プロフィール: 開発者

ユーレカ:
 クライアント:
  サービス URL:
   デフォルトゾーン: http://localhost:${server.port}/eureka/
  ユーレカに登録: false
  レジストリの取得: false
 実例:
  ホスト名: localhost
  優先IPアドレス: true

---
春:
 プロファイル: test_ha_1

ユーレカ:
 クライアント:
  サービス URL:
   デフォルトゾーン: http://eurekaserver2:${server.port}/eureka/
 実例:
  ホスト名: eurekaserver1
# prefer-ip-address: true この設定が true の場合、IP が eureka に登録されていることを意味します。この場合、eureka サーバーはサーバーを介してレプリカを検出できません。
# したがって、Docker を介して eureka の高可用性を実現したい場合は、この構成のデフォルト値 (false) を使用するのが最適です。
# これを true に設定して高可用性を実現することは不可能ではありませんが、各 eureka サービスを Docker 環境の外部にマッピングし、IP を認識する必要があります。
---
春:
 プロファイル: test_ha_2

ユーレカ:
 クライアント:
  サービス URL:
   デフォルトゾーン: http://eurekaserver1:${server.port}/eureka/
 実例:
  ホスト名: eurekaserver2
# 優先IPアドレス: true

3. Docker Mavenプラグインの設定:

 <ビルド>
    <プラグイン>
      <プラグイン>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </プラグイン>
      <プラグイン>
        <groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <バージョン>0.4.13</バージョン>
        <構成>
          <イメージ名>${docker.image.prefix}/${project.artifactId}:${project.version}</イメージ名>
          <dockerディレクトリ>src/main/docker</dockerディレクトリ>
          <forceTags> 真</forceTags>
          <リソース>
            <リソース>
              <ターゲットパス>/</ターゲットパス>
              <ディレクトリ>${project.build.directory}</ディレクトリ>
            </リソース>
          </リソース>
        </構成>
        <!--<groupId>com.spotify</groupId>
        <artifactId>docker-maven-plugin</artifactId>
        <バージョン>0.4.13</バージョン>
        <構成>
          <imageName>itmuch/${project.artifactId}:${project.version} </imageName>
          <forceTags> 真</forceTags>
          <baseImage>java</baseImage>
          <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
          <リソース>
            <リソース>
              <ターゲットパス>/</ターゲットパス>
              <ディレクトリ>${project.build.directory}</ディレクトリ>
              <include>${project.build.finalName}.jar</include>
            </リソース>
          </リソース>
        </configuration>-->
      </プラグイン>
    </プラグイン>
  </ビルド>

4. Dockerファイルの内容:

java:8より

eureka-server-1.0.0.jar eurekaserver.jar を追加します
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/eurekaserver.jar"]

5. eureka サーバーイメージを生成します。

次のように mvn clean package docker:build コマンドを実行して、eurekaserver イメージを生成します。

Dockerの高可用性

6. docker-compose によるオーケストレーション:

バージョン: '2'
サービス:
 ユーレカサーバー1:
  イメージ: raynspace/eureka-server:1.0.0
  ポート:
   - 「7900:8900」
  環境:
   - spring.profiles.active=test_ha_1

 ユーレカサーバ2:
  イメージ: raynspace/eureka-server:1.0.0
  #ホスト名: eurekaserver2
  ポート:
   - 「7800:8900」
  環境:
   - spring.profiles.active=test_ha_2

7. プロジェクト ディレクトリに移動し、docker-compose up コマンドを実行して、eureka サーバー用の 2 つのコンテナーを自動的に生成します。

Dockerの高可用性

8. eureka ポートがマップされたので、ポートを介してローカルで eureka にアクセスし、eureka サービスのステータスを確認します。

Dockerの高可用性

上の図からわかるように、registered-replicas と available-replicas の両方に別の eureka サービスが存在します。この時点で、eureka クラスターが構築されます。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • DockerでEurekaを設定する方法

<<:  MySQL 5.7.10 インストール ドキュメント チュートリアル

>>:  MySql でリモート接続を許可する方法

推薦する

HTML テーブル タグ チュートリアル (36): テーブル ヘッダーの背景色属性 BGCOLOR

<TH> タグは、テーブル内のヘッダーのプロパティを設定するために使用されます。以下の...

JavaScript の新しい要素トラバーサルプロパティを使用して子要素をトラバースする方法を学びます

目次1. ChildNodes属性のトラバーサル2. 要素シリーズ属性のトラバーサル以前は、chil...

ApacheのDjangoオンライン展開方法

環境: 1. Windows Server 2016 Datacenter 64 ビット 2. SQ...

PXEを使用してLinuxシステムを自動的に展開する方法

目次背景DHCPの設定DHCP ファイル (動的ホスト構成プロトコル) の編集tftp 設定sysl...

JS のあらゆる場所で絶対等価演算子の使用をやめる

目次概要1. NULL値のテスト2. ユーザー入力を読み取る導入事実の根源はどこにあるのでしょうか?...

ネイティブ js を使用してライブ バレット スクリーンのスクロール効果をシミュレートします。

目次1. 基本原則2. 特定のコード要約する1. 基本原則まず、生放送エリアを10の部分に分割し(個...

my.cnf (my.ini) 重要なパラメータの最適化設定手順

MyISAM ストレージエンジンMyISAM ストレージ エンジンは、書き込みよりも読み取りが多く、...

Vue Element-ui フォーム検証ルールの実装

目次1. はじめに2. ルール検証の入力モード2.1 サンプルコード2.2、フォーム項目2.3. 小...

JavaScriptの原理と方向性

これが何を指しているのかをどのように判断するのでしょうか? ①グローバル環境で呼び出された場合はwi...

Vue 初心者ガイド: 最初の Vue-cli スキャフォールディング プログラムの作成

1. Vue - 最初の vue-cli プログラムVueの開発はNodeJSに基づいています。実際...

Tomcat の静的ページ (html) で中国語の文字化けが発生する問題の究極の解決策

tomcatでは、jspは文字化けしませんが、htmlの中国語は文字化けします理由はいくつかあります...

Vueのprops設定の詳細な説明

<テンプレート> <div class="demo">...

MySql5.7.21 インストールポイント記録メモ

ダウンロードしたバージョンは、Zip 解凍版、Windows システムです。長い間 Windows ...

Vue ElementUI は非同期読み込みツリーを実装します

この記事の例では、vue ElementUI の非同期読み込みツリーを実装するための具体的なコードを...

Linux自動ログイン例の説明

インターネット上には、expect を使用して自動ログインを実現するスクリプトが多数存在しますが、明...