公式ウェブサイトアドレス:http://apollo.auto/
GitLabアドレス:https://github.com/ctripcorp/apollo
全体的なアーキテクチャ
-
ポータル操作でのユーザー構成のリリース
-
ポータルコール管理サービスインターフェイス操作リリース
-
管理サービスは構成を公開した後、ReleaseMessageを各構成サービスに送信します
- 構成サービスはReleaseMessageを受信すると、対応するクライアントに通知します
実現原理
上の図は、Apolloクライアントの実装原理を簡単に説明しています。
-
クライアントとサーバーは長い接続を維持するため、構成の更新をできるだけ早くプッシュできます。(Http Long Pollingによって達成)
- クライアントはまた、Apollo構成センターサーバーからアプリケーションの最新の構成を定期的にプルします。
-
これは、プッシュメカニズムが失敗し、構成が更新されないようにするためのフォールバックメカニズムです。
-
クライアントは定期的にプルするときにローカルバージョンを報告するため、通常、定期的にプルする操作の場合、サーバーは304-変更なしを返します。
- デフォルトでは、タイミング頻度は5分ごとにプルされます。また、実行時にシステムプロパティapollo.refreshIntervalを分単位で指定することにより、クライアントをオーバーライドすることもできます。
1.クライアントがApollo構成センターサーバーからアプリケーションの最新の構成を取得した後、それはメモリに保存されます
2.クライアントは、サーバーから取得した構成のコピーをローカルファイルシステムにキャッシュします。
- サービスが利用できない場合やネットワークが利用できない場合でも、ローカルから構成を復元できます
1.アプリケーションは、Apolloクライアントから最新の構成を取得し、構成更新通知をサブスクライブできます。
MySQLのインストール
バージョン要件:5.6.5+
ホスト:10.2.42.28
mysql依存パッケージをクリアします:
rpm -qa | grep mysql
yum remove mysql-libs
mysql5.7のインストール:インストールシーケンス:common→libs→client→server
rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
正常なインストールインターフェイス:
[root@DCA-APP-COM-apollo02 mysql]# rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
warning: mysql-community-common-5.7.26-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-common-5.7.26-1.e################################# [100%]
[root@DCA-APP-COM-apollo02 mysql]# rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
warning: mysql-community-libs-5.7.26-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-libs-5.7.26-1.el7################################# [100%]
[root@DCA-APP-COM-apollo02 mysql]# rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
warning: mysql-community-client-5.7.26-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-client-5.7.26-1.e################################# [100%]
[root@DCA-APP-COM-apollo02 mysql]# rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
warning: mysql-community-server-5.7.26-1.el7.x86_64.rpm: Header V3 DSA/SHA1 Signature, key ID 5072e1f5: NOKEY
Preparing... ################################# [100%]
Updating / installing...
1:mysql-community-server-5.7.26-1.e################################# [100%]
mysqlを起動します:
service mysqld start
mysqlの初期化:
[root@DCA-APP-COM-apollo02 mysql]# grep 'temporary password' /var/log/mysqld.log
2019-07-17T14:10:02.559365Z 1 [Note] A temporary password is generated for root@localhost: %hNW)P3Ly,8v
[root@DCA-APP-COM-apollo02 mysql]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.26
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
# 更改密码长度
mysql> set global validate_password_length=1;
Query OK, 0 rows affected (0.00 sec)
# 更改密码强度
mysql> set global validate_password_policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set password for root@localhost=password('123456');
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on *.* to 'root' @'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
Apolloデータベースの作成:公式Webサイトで自分でSQLをダウンロード
mysql> source apolloconfigdb.sql;
mysql> source apolloportaldb.sql;
Msyql接続ユーザー認証:
mysql> grant all privileges on ApolloConfigDB.* to Apollo@'%' IDENTIFIED BY 'Apollo' ;
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> grant all privileges on ApolloPortalDB.* to Apollo@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
データベース構成の変更:
ApolloPortalDB:
ApolloConfigDB:
アポロのインストール
公式アドレス:https://github.com/ctripcorp/apollo
このテストバージョンは:0.10.2
ダウンロードアドレス:https://github.com/ctripcorp/apollo/releases/tag/v0.10.2apollo-adminservice-0.10
。 2-github.zip
apollo-configservice-0.10.2-github.zip
apollo-portal-0.10.2-github.zip
apollo-config
ホスト:10.2.42.27
apolloユーザーの作成:
groupadd apollo && useradd -g apollo apollo
configserverを構成します。
cd /home/apollo/
mkdir apollo-config
unzip apollo-configservice-0.10.2-github.zip -d apollo-config
ApolloconfigDB構成:
vim apollo-config/config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://10.2.42.28:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = Apollo
spring.datasource.password = Apollo
ログパスとJVMパラメーターの変更:構成の一部であり、次の構成を変更する必要はありません。
vim apollo-config/scripts/startup.sh
# 修改日志路径
LOG_DIR=/home/apollo/logs/100003171
# 默认端口
SERVER_PORT=8080
# 默认注释看需求打开
## Adjust memory settings if necessary
export JAVA_OPTS="-Xms6144m -Xmx6144m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=4096m -XX:MaxNewSize=4096m -XX:SurvivorRatio=8"
Apollo-configserviceを開始します。
cd /home/apollo/
chown -R apollo.apollo *
su apollo
./apollo-config/scripts/startup.sh
正常な起動:
Thu Jul 18 15:06:53 CST 2019 ==== Starting ====
Started [53700]
Waiting for server startup......
Thu Jul 18 15:07:24 CST 2019 Server started in 30 seconds!
apollo-admin
ホスト:10.2.42.28
groupadd apollo && useradd -g apollo apollo
cd /home/apollo/
mkdir {apollo-admin,apollo-portal}
unzip apollo-adminservice-0.10.2-github.zip -d apollo-admin
unzip apollo-portal-0.10.2-github.zip -d apollo-portal
ApolloconfigDB構成:
cd apollo-admin
vim config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://10.2.42.28:3306/ApolloConfigDB?characterEncoding=utf8
spring.datasource.username = Apollo
spring.datasource.password = Apollo
ログパスとJVMパラメータの構成:構成の一部であり、後者の構成を変更する必要はありません
vim scripts/startup.sh
#!/bin/bash
SERVICE_NAME=apollo-adminservice
## Adjust log dir if necessary
LOG_DIR=/home/apollo/logs/100003172
## Adjust server port if necessary
SERVER_PORT=8090
## Adjust memory settings if necessary
export JAVA_OPTS="-Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=8"
apollo-adminを起動します。
cd /home/apollo/
chown -R apollo.apollo *
su apollo
./scripts/startup.sh
Thu Jul 18 16:17:32 CST 2019 ==== Starting ====
Started [56497]
Waiting for server startup......
Thu Jul 18 16:18:02 CST 2019 Server started in 30 seconds!
アポロポータル
ホスト:10.2.42.28
apolloportlDB構成:
cd /home/apollo/apollo-portal
vim config/application-github.properties
# DataSource
spring.datasource.url = jdbc:mysql://10.2.42.28:3306/ApolloPortalDB?characterEncoding=utf8
spring.datasource.username = Apollo
spring.datasource.password = Apollo
configservice構成:ポータルのセットで複数のconfigserviceを管理することも、startup.shスクリプトで直接構成することもできます。
vim config/apollo-env.properties
local.meta=http://localhost:8080
dev.meta=http://10.2.42.27:8080
fat.meta=http://10.2.42.27:8080
uat.meta=${lpt_meta}
lpt.meta=${lpt_meta}
pro.meta=${lpt_meta}
ログパスとJVMパラメーターの変更:構成の一部であり、次の構成を変更する必要はありません。
vim scripts/startup.sh
#!/bin/bash
SERVICE_NAME=apollo-portal
## Adjust log dir if necessary
LOG_DIR=/home/apollo/logs/100003173
## Adjust server port if necessary
SERVER_PORT=8070
## Adjust memory settings if necessary
export JAVA_OPTS="-Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1536m -XX:MaxNewSize=1536m -XX:SurvivorRatio=8"
apollo-portalの開始:
su apollo
./scripts/startup.sh
Thu Jul 18 16:25:55 CST 2019 ==== Starting ====
Started [56773]
Waiting for server startup...
Thu Jul 18 16:26:10 CST 2019 Server started in 15 seconds!
アポロの使用
サーバーページの表示:10.2.42.27:8080
構成センターのページ表示:10.2.42.28:8070
apollo / admin
プロジェクトの作成: