ご存知のとおり、ApolloはCtripのオープンソース構成センターであるため、中国のドキュメントは比較的完全であるため、ここでは詳しく説明しません。この記事の主な目的は、CentOS8でApollo ConfigurationCenterを分散して展開する方法を記録することです。アポロの機能のハイライト:
公式の分散展開ドキュメント:
ローカル開発中にApollo環境をすばやく構築したいだけの場合は、公式のクイックスタートを参照してください。
次の図は、Apolloアーキテクチャモジュールの概要です。
上の図は、Apolloの全体的な設計を簡単に説明しています。下から上に見ることができます。
したがって、通常、異なる役割を担当する2つのノードをデプロイします。ConfigServer(構成サービス、管理サービス、メタサーバーを含む)ノードとPortalServerノードです。最初に仮想化ソフトウェアを使用して2つのCentOS8仮想マシンを作成します。ここではVMwareを使用します。
ApolloはJavaのSpringBootフレームワークに基づいて作成されており、データストレージを[MySQL](https://cloud.tencent.com/product/cdb?from=10680)に依存しているためです。したがって、これら2つの仮想マシンには、事前にMySQLとJDKをインストールしました。
ランタイム環境の公式要件は次のとおりです。
そして、ここでの私のランタイム環境は次のとおりです。
次のように:
[ root@config-server ~]# java -version
java version "11.0.5"2019-10-15 LTS
Java(TM) SE Runtime Environment 18.9(build 11.0.5+10-LTS)
Java HotSpot(TM)64-Bit Server VM 18.9(build 11.0.5+10-LTS, mixed mode)[root@config-server ~]# mysql --version
mysql Ver 8.0.18for Linux on x86_64(Source distribution)[root@config-server ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905(Core)[root@config-server ~]#
準備が完了したら、最初のステップは対応するデータベースを作成することです。 ApolloはMySQLデータベースに依存しているため、事前にデータベーステーブルの初期化を作成して完了する必要があります。 Apolloサービスの分散展開では、異なるMySQLインスタンスに2つのデータベース ApolloPortalDB
と ApolloConfigDB
を作成する必要があります。
もちろん、個別に管理する必要がない場合は、MySQLインスタンスで作成することもできます。公式には、SQLファイルはデータベース、テーブル作成、およびサンプルデータ用に準備されています。データベースをインポートするだけで済みます。 SQLファイルのアドレスは次のとおりです。
「ApolloPortalDB」は実稼働環境にのみデプロイする必要があり、「ApolloConfigDB」の3つのセットをデプロイするには、fat、uat、pro環境などの各環境に「ApolloConfigDB」をデプロイする必要があることに注意してください。 MySQLインスタンスをそれぞれConfig-ServerとPortal-Serverにデプロイしました。
2つのSQLファイルを2つのデータベースに正常にインポートした後、作成されたデータベースとテーブルは次のようになります。
必要なインストールパッケージは3つあります。
公式インストールパッケージを直接ダウンロードすることも、ソースコードからビルドすることもできます。ソースコードを変更する必要がないので、ここから直接インストールパッケージをダウンロードします。ダウンロードアドレスについては、[Githubリリース](https://github.com/ctripcorp/apollo/releases)を参照してください。
ダウンロードリンクをコピーし、 wget
コマンドを使用してサーバーにダウンロードするか、ローカルにダウンロードしてサーバーにアップロードします。 config-serverのインストールパッケージは次のとおりです。
[ root@config-server ~]# cd /usr/local/src
[ root@config-server /usr/local/src]# ls
apollo-adminservice-1.7.1-github.zip apollo-configservice-1.7.1-github.zip
[ root@config-server /usr/local/src]#
portal-serverのインストールパッケージは次のとおりです。
[ root@portal-server ~]# cd /usr/local/src
[ root@portal-server /usr/local/src]# ls
apollo-portal-1.7.1-github.zip
[ root@portal-server /usr/local/src]#
圧縮されたパッケージを適切なディレクトリに解凍します。
[ root@config-server /usr/local/src]# mkdir /usr/local/apollo-configservice
[ root@config-server /usr/local/src]# unzip apollo-configservice-1.7.1-github.zip -d /usr/local/apollo-configservice
[ root@config-server /usr/local/src]# mkdir /usr/local/apollo-adminservice
[ root@config-server /usr/local/src]# unzip apollo-adminservice-1.7.1-github.zip -d /usr/local/apollo-adminservice/[root@config-server /usr/local/src]# ls /usr/local/apollo-configservice
apollo-configservice-1.7.1.jar apollo-configservice-1.7.1-sources.jar apollo-configservice.conf config scripts
[ root@config-server /usr/local/src]# ls /usr/local/apollo-adminservice/
apollo-adminservice-1.7.1.jar apollo-adminservice-1.7.1-sources.jar apollo-adminservice.conf config scripts
[ root@config-server /usr/local/src]#
apollo-configserviceのデータベース接続情報を構成します。
[ root@config-server /usr/local/src]# cd /usr/local/apollo-configservice/[root@config-server /usr/local/apollo-configservice]# vim config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username = root
spring.datasource.password = 123456a.
ApolloConfigDB
データベース接続文字列情報を入力し、スペースなしのユーザー名とパスワードに注意してください!apollo-adminserviceのデータベース接続情報を構成します。
[ root@config-server /usr/local/apollo-configservice]# cd ../apollo-adminservice/[root@config-server /usr/local/apollo-adminservice]# vim config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username = root
spring.datasource.password = 123456a.
ApolloConfigDB
データベース接続文字列情報を入力し、スペースなしのユーザー名とパスワードに注意してください!apollo-configserviceおよびapollo-adminserviceのJVM起動パラメーター、サービス監視ポート、ログファイルストレージディレクトリおよびその他の構成を調整する必要がある場合は、scripts /startup.shのインストールディレクトリで変更できます。
scripts / startup.sh
の JAVA_OPTS
部分を変更できます。scripts / startup.sh
および apollo-configservice.conf
の LOG_DIR
を変更します。scripts / startup.sh
の SERVER_PORT
を変更します。さらに、apollo-configserviceはメタサーバーも担当するため、ポートを変更する場合は、 ApolloConfigDB.ServerConfig
テーブルの eureka.service.url
構成項目と、apollo-portalおよびapollo-clientで使用される構成項目も変更する必要があります。メタサーバー情報apollo-configserviceを開始します。
[ root@config-server /usr/local/apollo-configservice]# scripts/startup.sh
2020 11月10日火曜日:34:22 CST ==== Starting ====
Started [20958]
Waiting for server startup...2020年11月10日火曜日16:34:38 CST Server started in15 seconds![root@config-server /usr/local/apollo-configservice]#
起動が成功したかどうかを確認します。
[ root@config-server /usr/local/apollo-configservice]# jps
1655 apollo-configservice.jar
1807 Jps
[ root@config-server /usr/local/apollo-configservice]# netstat -lntp |grep 8080
tcp6 00:::8080:::* LISTEN 1655/java
[ root@config-server /usr/local/apollo-configservice]#
apollo-adminserviceを開始します。
[ root@config-server /usr/local/apollo-adminservice]# scripts/startup.sh
2020 11月10日火曜日:39:46 CST ==== Starting ====
Started [1886]
Waiting for server startup...2020年11月10日火曜日16:40:01 CST Server started in15 seconds![root@config-server /usr/local/apollo-adminservice]#
起動が成功したかどうかを確認します。
[ root@config-server /usr/local/apollo-adminservice]# jps
1655 apollo-configservice.jar
2012 Jps
1886 apollo-adminservice.jar
[ root@config-server /usr/local/apollo-adminservice]# netstat -lntp |grep 8090
tcp6 00:::8090:::* LISTEN 1886/java
[ root@config-server /usr/local/apollo-adminservice]#
サービスを停止する場合は、対応するサービスディレクトリでscripts /shutdown.shを実行するだけです。
前のセクションと同様に、圧縮されたパッケージを適切なディレクトリに解凍します。
[ root@portal-server /usr/local/src]# mkdir /usr/local/apollo-portal
[ root@portal-server /usr/local/src]# unzip apollo-portal-1.7.1-github.zip -d /usr/local/apollo-portal/[root@portal-server /usr/local/src]# ls /usr/local/apollo-portal/
apollo-portal-1.7.1.jar apollo-portal-1.7.1-sources.jar apollo-portal.conf config scripts
[ root@portal-server /usr/local/src]#
apollo-portalのデータベース接続情報を構成します。
[ root@portal-server /usr/local/src]# cd /usr/local/apollo-portal/[root@portal-server /usr/local/apollo-portal]# vim config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username = root
spring.datasource.password = 123456a.
次に、apollo-portalのメタサービス情報を構成します。 Apollo Portalは、さまざまな環境でさまざまなメタサービス(apollo-configservice)アドレスにアクセスする必要があるため、構成でこの情報を提供する必要があります。
デフォルトでは、メタサービスと構成サービスは同じJVMプロセスにデプロイされるため、メタサービスのアドレスは構成サービスのアドレスになります。以下に示すように、構成アイテムの形式はenv.meta = http:// {config-service-url:port}です。
[ root@portal-server /usr/local/apollo-portal]# vim config/apollo-env.properties
dev.meta=http://192.168.243.159:8080
dev.meta
のみを構成しました。apollo-env.properties
を介してメタサービスを構成することに加えて、apolloは実行時のメタサービスの指定もサポートします(優先度は apollo-env.properties
よりも高くなります)。
$ {env} _meta
で指定$ {env} _meta
で指定できますjava -Ddev_meta = http:// config-service-url -jarxxx.jar
などSystem.setProperty(" dev_meta "、" http:// config-service-url ");
などのプログラムで指定することもできます。$ {ENV} _META
によって指定されますDEV_META = http:// config-service-url
などapollo-portalを開始します。
[ root@portal-server /usr/local/apollo-portal]# scripts/startup.sh
2020 11月10日火曜日:56:36 CST ==== Starting ====
Started [21010]
Waiting for server startup........2020年11月10日火曜日16:57:17 CST Server started in40 seconds![root@portal-server /usr/local/apollo-portal]#
起動が成功したかどうかを確認します。
[ root@portal-server /usr/local/apollo-portal]# jps
21010 apollo-portal.jar
21162 Jps
[ root@portal-server /usr/local/apollo-portal]# netstat -lntp |grep 8070
tcp6 00:::8070:::* LISTEN 21010/java
[ root@portal-server /usr/local/apollo-portal]#
起動が成功したら、ブラウザからポータルサーバーのポート8070にアクセスします。
ログインに成功したら、ホームページに入ります。
次に、サンプルプロジェクトに入り、いくつかのテストを実行して、正常に機能するかどうかを確認できます。
この時点で、Apolloの分散展開が完了しました。これは1セットの環境です。複数の環境セットがある場合は、Apollo Config Serverセクションの手順を繰り返すだけで、複数のConfigServerノードを展開できます。次に、PortalServerの apollo-env.properties
構成ファイルでこれらの構成サーバーノードのアクセスアドレスを構成します。
Recommended Posts