docker compose を使ってワンクリックで分散構成センター Apollo を展開するプロセスの詳細な説明

docker compose を使ってワンクリックで分散構成センター Apollo を展開するプロセスの詳細な説明

導入

分散について話すときは、分散構成センター、分散ログ、分散リンク トラッキングなどについて考える必要があります。

分散展開では、ビジネスには多くの構成が必要になることがよくあります。たとえば、アプリケーションを起動して実行すると、いくつかの構成情報を読み取る必要があります。構成は基本的に、アプリケーションのライフサイクル全体に付随します。たとえば、データベース接続パラメータ、起動パラメータなどはすべて維持および構成する必要がありますが、各サーバーにログインして構成することは不可能です。今日は、分散構成センター Apollo についてお話ししたいと思います。

Apollo は、Ctrip のフレームワーク部門が開発した分散構成センターです。さまざまなアプリケーション環境とクラスターの構成を一元管理できます。構成を変更した後、リアルタイムでアプリケーション エンドにプッシュできます。また、標準化された権限、プロセス ガバナンスなどの機能を備えており、マイクロサービス構成管理シナリオに適しています。

建てる

公式ドキュメントには、ビルドの方法が 2 つ記載されています。1 つはソース コードをダウンロードしてビルドする方法、もう 1 つは Docker または K8S を使用してビルドする方法です。今日ではビルドに Docker を使用していますが、結局のところ、Docker の方が開発者にとって使いやすいのです。

すでに MySQL サービスをお持ちの場合は、既存の MySQL サービスまたはクラウド サービス RDS をデータベースとして使用することをお勧めします。結局のところ、データは貴重です。

バージョン: "3"
サービス:
  apollo-configservice: #Config Service は、構成の読み取りやプッシュなどの機能を提供します。サービス オブジェクトは、Apollo クライアント イメージです: apolloconfig/apollo-configservice:1.8.1
    再起動: 常に
    #コンテナ名: apollo-configservice
    ボリューム:
          - ./logs/apollo-configservice:/opt/logs
    ポート:
      - 「8080:8080」
    環境:
      - TZ='アジア/上海'    
      -サーバーポート=8080
      - EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx
      - EUREKA_INSTANCE_HOME_PAGE_URL=http://xxx.xxx.xxx.xxx:8080
      - SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
      -SPRING_DATASOURCE_USERNAME=ルート
      - SPRING_DATASOURCE_PASSWORD = MysqkPassWord!
      
      
  apollo-adminservice: #Admin Service は設定変更や公開などの機能を提供し、サービスオブジェクトは Apollo Portal (管理インターフェース) です。
    イメージ: apolloconfig/apollo-adminservice:1.8.1
    再起動: 常に
    #コンテナ名: apollo-adminservice
    ボリューム:
      - ./logs/apollo-adminservice:/opt/logs
    ポート:
      - 「8090:8090」
    依存:
      - アポロ構成サービス
    環境:
      - TZ='アジア/上海'    
      -サーバーポート=8090
      - EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx
      - SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
      -SPRING_DATASOURCE_USERNAME=ルート
      - SPRING_DATASOURCE_PASSWORD = MysqkPassWord!
      
      
  apollo-portal: #管理インターフェースイメージ: apolloconfig/apollo-portal:1.8.1
    再起動: 常に
    コンテナ名: アポロポータル
    ボリューム:
      - ./logs/アポロポータル:/opt/logs
    ポート:
      - 「8070:8070」
    依存:
      - アポロ管理サービス
    環境:
      - TZ='アジア/上海'    
      -サーバーポート=8070
      - EUREKA_INSTANCE_IP_ADDRESS=xxx.xxx.xxx.xxx
      -APOLLO_PORTAL_ENVS=デバイス
      - DEV_META=http://xxx.xxx.xxx.xxx:8080
      - SPRING_DATASOURCE_URL=jdbc:mysql://xxx.xxx.xxx.xxx:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai
      -SPRING_DATASOURCE_USERNAME=ルート
      - SPRING_DATASOURCE_PASSWORD = MysqkPassWord!

上記の docker-compose.yaml から、合計 3 つのサービスがあることがわかります。

  1. Config Service は、構成の読み取りやプッシュなどの機能を提供し、そのサービス オブジェクトは Apollo クライアントです。
  2. 管理サービスは、設定変更や公開などの機能を提供し、そのサービスオブジェクトはApollo Portal(管理インターフェース)です。
  3. ポータル(管理インターフェース)

どのように動作するかを知りたい場合は、公式ドキュメントを確認することをお勧めします。

ログは外部の./logsディレクトリにマウントされます

上記ではMySQLのデプロイが指定されていないことがわかります。コンテナを使用してMySQLをデプロイする必要がある場合は、次のdocker-compose.yamlを参照してください。

バージョン: '3'

サービス: 

  mysql: # myslq データベース イメージ: 'mysql/mysql-server'
    コンテナ名: 'mysql'
    再起動: 常に
    コマンド: --character-set-server=utf8mb4 --collat​​ion-server=utf8mb4_unicode_ci --lower-case-table-names=1
    環境: #環境変数 MYSQL_ROOT_HOST: "%" 
      MYSQL_ROOT_PASSWORD: パスワード
      MYSQL_USER: ブルック
      MYSQL_PASSWORD: パスワード
    ポート:
      - 「3306:3306」

上記のmysql docker-compose.yamlはテスト専用です

データベース apolloconfigdb.sql と apolloportaldb.sql を初期化します。

データベースが初期化されたら、apolloconfigdbライブラリのserverconfigテーブルのeureka.service.urlを変更することを忘れないでください。そうしないと、apollo-adminserviceをeurekaに登録できません。

変更後、Apollo docker-compose.yamlディレクトリに切り替えて、

docker-compose up -d #ファイル内の3つのサービスを起動し、バックグラウンドで実行します

起動ステータスを確認する

docker-compose ps

http://10.0.0.53:8070/ #Apollo 管理ターミナルにアクセスしてください

デフォルトのユーザー名: apollo
デフォルトのパスワード:admin

テストプロジェクトを作成する


テスト

.NetCoreプロジェクトを作成し、Apollo.netクライアントを追加する

アポロを追加

Apollo を設定する

上記の構成

Apolloコードを取得するためのテストコンテンツを追加する

プログラムを起動し、/weatherforecast/apollotestをリクエストします

アポロで設定された構成が取得されなかったことが判明しました

Apolloをチェックして、設定された値が公開されていないことを確認します

したがって、Apollo を設定または変更した後は必ず公開するようにしてください。公開後はブラウザを再度更新します。

データがすでに新しいデータであることがわかりました。Apollo の値を再度変更してみましょう。

リフレッシュ

アポロは構築され、使用できる状態になっています。

コード

例のコードは
https://github.com/yuefengkai/Brook.Apollo
皆様、ようこそ

注: プログラムの起動後に構成を取得できない場合は、Apollo ログを開くことができます。コンソールで詳細な構成を確認し、Program.cs Main 関数の最初の行に配置できます。

LogManager.UseConsoleLogging(Com.Ctrip.Framework.Apollo.Logging.LogLevel.Trace);

参照する

1. https://github.com/apolloconfig/apollo.net
2. https://github.com/apolloconfig/apollo
3. https://github.com/apolloconfig/apollo/tree/master/scripts/docker-quick-start

これで、分散構成センター Apollo の docker compose ワンクリック デプロイメントに関するこの記事は終了です。docker compose デプロイメント分散構成センター Apollo に関するその他の関連コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker Compose 構成ファイルの記述とコマンドの使用例
  • Docker Compose を使用して ElasticSearch 構成プロセスを構築およびデプロイする
  • Docker-compose インストール yml ファイルの設定方法
  • Jenkins の docker-compose デプロイメントと構成に関する詳細なチュートリアル
  • Docker.v19 で Docker Compose オーケストレーション ツールをインストールして構成する方法
  • Spring環境を構成するためのDocker-composeの手順
  • Linux で docker-compose を使用したソフトウェア構成の詳細な説明
  • Docker Compose 構成ファイルパラメータの詳細な説明

<<:  Vue はウェブページの言語切り替えの国際化を実装します

>>:  MySQLはストアドプロシージャを使用して数百万のデータを素早く追加します。サンプルコード

推薦する

Dockerfileを使用してApacheイメージを作成する方法

目次1. Dockerイメージ2. 既存のイメージに基づいてインスタンスを作成する3. ローカルテン...

JavaScriptスコープについての簡単な説明

目次1. 範囲1. グローバルな範囲2. ローカルスコープ2. 変数のスコープ1. グローバル変数2...

Vue3 リストインターフェースデータ表示の詳細

目次1. リストインターフェースの表示例2. データを表示する2.1. コンポーネントがリストに表示...

MySql 8.0.11 のインストールと設定のチュートリアル

公式ウェブサイトアドレス: https://dev.mysql.com/downloads/mysq...

Dockerはコンテナ外のコンテナ内でコマンドを実行します

コンテナ内でコマンドを実行したいが、コンテナに入りたくない場合があります。ではどうすればいいでしょう...

HTML <!--...--> コメントタグの役割の詳細な分析

多くのウェブサイトのソースコードを確認すると、多くのコメントが見つかります。特に、ソース文書にコメン...

Vueグローバルカスタム命令の実践 モーダルドラッグ

目次背景実装のアイデア成果を達成する背景最近取り組んでいるプロジェクトは、Vue2 で構築されたプロ...

VueにおけるAxios非同期通信の詳細な説明

1. まず、インタラクティブに使用するための .json ファイルを作成します。json データ形式...

Dockerfile 内の予約語命令の解析処理

目次1. Dockerfile とは何ですか? 2. Dockerfile構築プロセスの分析3. D...

一般的なフロントエンドJavaScriptメソッドのカプセル化

目次1. 値を入力し、そのデータ型を返す** 2. アレイ重複排除3. 文字列の重複排除4. ディー...

テキストエリアの disabled 属性と readonly 属性の具体的な使用法

障害者の定義と使用法disabled 属性はブール属性です。 disabled 属性は、テキスト領域...

Linux は n 日前のログとサンプルコマンドを自動的に削除します

1. ファイル削除コマンド:対応するディレクトリを検索します -mtime + 日数 -name &...

圧縮パッケージを使用して Linux 環境に JDK 13 をインストールする方法

JDK とは何ですか?まあ、この質問がわからないのであれば、なぜこれをインストールするのか本当にわか...

Linuxはlsofコマンドを使用してファイルのオープンステータスを確認します

序文Linux では「すべてがファイル」であることは誰もが知っているので、ファイルのオープン状態を確...

Docker コンテナに TensorRT をインストールする際の問題

Ubuntu にインストールされているバージョンをアンインストールします。 sudo apt-get...