配置中心Apollo搭建全過程

總體架構

  1. 用戶在Portal操作配置發佈
  2. Portal調用Admin Service的接口操作發佈
  3. Admin Service發佈配置後,發送ReleaseMessage給各個Config Service
  4. Config Service收到ReleaseMessage後,通知對應的客戶端

實現原理 上圖簡要描述了Apollo客戶端的實現原理:

  1. 客戶端和服務端保持了一個長連接,從而能第一時間獲得配置更新的推送。(通過Http Long Polling實現)
  2. 客戶端還會定時從Apollo配置中心服務端拉取應用的最新配置。 這是一個fallback機制,爲了防止推送機制失效導致配置不更新 客戶端定時拉取會上報本地版本,所以一般情況下,對於定時拉取的操作,服務端都會返回304 - Not Modified 定時頻率默認爲每5分鐘拉取一次,客戶端也可以通過在運行時指定System Property: apollo.refreshInterval來覆蓋,單位爲分鐘。
  3. 客戶端從Apollo配置中心服務端獲取到應用的最新配置後,會保存在內存中
  4. 客戶端會把從服務端獲取到的配置在本地文件系統緩存一份 在遇到服務不可用,或網絡不通的時候,依然能從本地恢復配置
  5. 應用程序可以從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數據庫創建:SQL在官網自行下載:

  1. mysql> source apolloconfigdb.sql;
  2. 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:

Apollo安裝 官方地址:https://github.com/ctripcorp/apollo 本次測試版本爲:0.10.2 下載地址:https://github.com/ctripcorp/apollo/releases/tag/v0.10.2

  • apollo-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配置:

日誌路徑及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配置:

日誌路徑及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!

apollo-portal 主機:10.2.42.28 apolloportlDB配置:

configservice配置:一套portal可以管理多個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!

Apollo使用 服務端頁面展示:10.2.42.27:8080

配置中心頁面展示:10.2.42.28:8070 apollo/admin

項目創建:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章