apollo官網連結:https://www.apolloconfig.com/#/zh/README
Apollo元件簡介
- Apollo Config Service 是一個分散式的配置中心,主要負責應用的配置資訊儲存、推送和管理。Config Service 支援多種儲存方式,例如本地檔案系統、Git 儲存和資料庫儲存等,同時也提供基於輪詢和通知兩種方式的配置資訊推送機制。配置中心的目的是讓一組應用共享配置資訊,並且應用可以動態讀取儲存在配置中心的配置資訊。
- Apollo Admin Service 是一個管理後臺服務,主要提供給管理人員使用,用於管理所有的 Apollo 配置。Admin Service 主要包含兩個功能:配置項的新增、修改、刪除等管理功能、以及對環境、叢集和名稱空間等物件進行管理的功能。Admin Service 還提供了配置的釋出和回滾功能,以及多種安全認證和授權方式。
- Apollo Portal 是一個基於 Web 的管理介面,在客戶端上展示配置項的值、歷史,同時支援修改和釋出。Portal 透過視覺化的方式展示配置資訊,讓使用者更加直觀地瞭解系統的配置情況,同時提供了一些實用的功能,例如基於角色的訪問控制、灰度釋出等。Portal 主要提供視覺化的管理介面,可以看作是 Admin Service 和 Config Service 的前端介面。
資料庫安裝
官方建議使用MySQL5.7以上,點選檢視安裝方法
檢視連結:資料庫安裝
jdk安裝
官網要求jdk版本為1.8+,本次安裝採用jdk11,可在jdk官網自行尋找所需版本:https://www.oracle.com/java/technologies/java-se-glance.html
下載好所需的版本號,將壓縮包傳到伺服器,本次下載的包為jdk-11.0.6_linux-x64_bin.tar
.gz
解壓目錄
tar -xvf jdk-11.0.6_linux-x64_bin.tar.gz
mv jdk-11.0.6 /usr/local/jdk11.0.6
配置環境變數
# 編輯配置檔案
vim /etc/profile
# 新增以下配置
#java
export JAVA_HOME=/usr/local/jdk11.0.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
生效操作
source /etc/profile
檢查安裝
# 檢驗安裝,表示安裝成功
java -version
# 輸出以下結果
java version "11.0.6" 2020-01-14 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.6+8-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.6+8-LTS, mixed mode)
資料庫初始化
本次安裝採用2.0.1版本
自行下載sql初始化指令碼,該連結下有兩個sql,分別是apolloportaldb.sql以及apolloconfigdb.sql,路徑連結如下
https://github.com/apolloconfig/apollo/tree/v2.0.1/scripts/sql
連線資料庫匯入sql檔案,也可以使用navicat等軟體匯入
# 登入資料庫
mysql -uroot -p
# 登入成功後匯入sql
source /your_local_path/scripts/sql/apolloportaldb.sql
source /your_local_path/scripts/sql/apolloconfigdb.sql
驗證,此命令會輸出支援的環境列表
select `Id`, `Key`, `Value`, `Comment` from `ApolloPortalDB`.`ServerConfig` limit 1;
匯入完成後的資料庫如下圖所示
安裝Apollo
分別下載三個服務安裝包adminservice configservice portal
# 建立各個服務目錄
mkdir -vp /opt/apollo/{apollo-adminservice,apollo-configservie,apollo-portal} && cd /opt/apollo
# 下載服務安裝包
wget https://github.com/apolloconfig/apollo/releases/download/v2.0.1/apollo-adminservice-2.0.1-github.zip apollo-adminservice
wget https://github.com/apolloconfig/apollo/releases/download/v2.0.1/apollo-configservice-2.0.1-github.zip apollo-configservice
wget https://github.com/apolloconfig/apollo/releases/download/v2.0.1/apollo-portal-2.0.1-github.zip apollo-portal
分別解壓安裝包
# 安裝解壓命令
yum install unzip -y
# 開始解壓
unzip apollo-adminservice-2.0.1-github.zip
unzip apollo-configservice-2.0.1-github.zip
unzip apollo-portal-2.0.1-github.zip
配置apollo-configservice
進入目錄
cd apollo-adminservice/config
編輯配置檔案
vim application-github.properties
# 配置資料庫資訊,按實際填入自己的資料庫連結地址以及認證資訊
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
配置apollo-adminservice
進入目錄
cd apollo-adminservice/config
編輯配置檔案
vim application-github.properties
# 配置資料庫資訊,按實際填入自己的資料庫連結地址以及認證資訊
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloConfigDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
配置apollo-portal
進入目錄
cd apollo-portal/config
編輯配置檔案
vim application-github.properties
# 配置資料庫資訊,按實際填入自己的資料庫連結地址以及認證資訊
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?useSSL=false&characterEncoding=utf8
spring.datasource.username = someuser
spring.datasource.password = somepwd
配置apollo-portal的meta service資訊
vim apollo-env.properties
# 假設DEV的apollo-configservice未繫結域名,地址是1.1.1.1:8080,FAT的apollo-configservice繫結了域名apollo.fat.xxx.com,UAT的apollo-configservice繫結了域名apollo.uat.xxx.com,PRO的apollo-configservice繫結了域名apollo.xxx.com,那麼可以如下修改各環境meta service服務地址,格式為${env}.meta=http://${config-service-url:port},如果某個環境不需要,也可以直接刪除對應的配置項
dev.meta=http://1.1.1.1:8080
fat.meta=http://apollo.fat.xxx.com
uat.meta=http://apollo.uat.xxx.com
pro.meta=http://apollo.xxx.com
此處環境dev、fat、uat、pro為apollo自帶的環境,可自行修改成適用於本地的環境,例如dev、test、beta、ga等,修改方式很簡單,只需要修改資料庫資訊,具體為ApolloPortalDB資料庫下面的ServerConfig表,修改該欄位為自定義環境,如下圖所示
分別啟動各個服務
啟動方式很簡單,分別執行各個資料夾下的scripts目錄下的啟動指令碼,根據需要自定義jvm記憶體
export JAVA_OPTS="-server -Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=22"
# 修改完成後執行指令碼
./startup.sh
檢視啟動情況
# 檢視對應埠啟動情況
netstat -lntp
# 輸出如下。三個埠8070,8080,8090均已啟動
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8940/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1138/master
tcp 0 0 0.0.0.0:10050 0.0.0.0:* LISTEN 7871/zabbix_agentd
tcp6 0 0 :::8080 :::* LISTEN 28825/java
tcp6 0 0 :::22 :::* LISTEN 8940/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1138/master
tcp6 0 0 :::8090 :::* LISTEN 28637/java
tcp6 0 0 :::10050 :::* LISTEN 7871/zabbix_agentd
tcp6 0 0 :::8070 :::* LISTEN 9141/java
tcp6 0 0 :::3306 :::* LISTEN 17678/mysqld
apollo portal接入ldap
portal支援接入ldap來作為統一使用者認證,接入方法如下
建立配置檔案
touch apollo-portal/config/application-ldap.yml
編輯配置檔案
vim apollo-portal/config/application-ldap.yml
# 具體配置如下
spring:
ltest
base: "ou=test,dc=test,dc=com"
username: "cn=apollo,ou=test,dc=test,dc=com" # 配置管理員賬號,用於搜尋、匹配使用者
password: "test@123"
searchFilter: "(cn={0})" # 使用者過濾器,登入的時候用這個過濾器來搜尋使用者
urls:
- "ldap://192.168.0.1:389" # ldap伺服器地址
ldap:
mapping: # 配置 ldap 屬性
objectClass: "inetOrgPerson" # ldap 使用者 objectClass 配置
loginId: "cn" # ldap 使用者惟一 id,用來作為登入的 id
userDisplayName: "cn" # ldap 使用者名稱,用來作為顯示名
email: "mail" # ldap 郵箱屬性
修改啟動指令碼,修改scripts/startup.sh,指定spring.profiles.active為github,ldap
編輯啟動指令碼
vim apollo-portal/scripts/startup.sh
# 配置如下
SERVICE_NAME=apollo-portal
## Adjust log dir if necessary
LOG_DIR=/opt/logs/100003173
## Adjust server port if necessary
SERVER_PORT=8070
# 修改此行
export JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=github,ldap"
# 完成後重新啟動portal使用ldap登入即可