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 でリモート接続を許可する方法

推薦する

MySQLが2つのテーブルを関連付ける際のエンコードの問題と解決策

Mysqlが2つのテーブルを関連付けると、次のエラーメッセージが生成されます:照合順序の不正な組み合...

無料のパブリック STUN サーバー

無料のパブリック STUN サーバーSIP 端末がプライベート IP アドレスを使用する場合、スタン...

Dockerでudpポート番号を指定する問題を解決する

Docker はコンテナを起動するときにアクセス ポートを指定します。複数の -p オプションを使用...

Firefox で Webdings フォントをサポートする方法

Firefox、Opera、その他のブラウザは Webdings フォントをサポートしていません。回...

docker を使用してシンプルな C/C++ プログラムをデプロイする方法

1. まずhello-world.cppファイルを作成しますプログラムコードは次のとおりです。 #i...

Nginx を使用してフロントエンドのクロスドメイン問題を解決する方法

序文Vue アプリケーションなどの静的ページを開発する場合、クロスドメインになる可能性のあるインター...

Vueは適切なスライドアウトレイヤーアニメーションを実装します

この記事では、適切なスライドアウトレイヤーアニメーションを実装するためのVueの具体的なコードを例と...

純粋な CSS カスタム複数行省略記号の問題 (原理から実装まで)

テキストオーバーフローを表示するにはどうすればいいですか? どのようなニーズがありますか?単一行です...

CSS3のall属性の使い方を理解する

1. 互換性以下のように表示されます。 互換性は問題ありません。IE を除き、他のブラウザは基本的に...

Vue で親子コンポーネントの値を双方向バインドするために v-model を使用するときに発生する問題と解決策

目次シナリオ解決してみる解決するシナリオ今日、コンポーネントの双方向データバインディングにv-mod...

VMware Esxi のルート パスワードを忘れた後に正常に取得する方法

CentOS6 インストール ディスク (任意のバージョン) を準備するか、別の pnux インスト...

一般的な MySQL 関数の例の概要 [集計関数、文字列、数値、時刻と日付の処理など]

この記事では、よく使用される MySQL 関数について説明します。ご参考までに、詳細は以下の通りです...

2012年のベストWebデザイン作品レビュー[パート1]

新年の初めに、友人の健康と2013年が素晴らしい年となることを心からお祈りいたします。この記事では、...

6つのレイアウトでのFrameLayoutの使用

序文前回はLinearLayoutについて説明しました。今回はFrameLayoutの使い方を説明し...

Reactの簡単な紹介

目次1. CDNの紹介1.1 react (最初にインポート) 1.2 react-dom(後ほど紹...