Linux安裝Apollo配置中心

java先生發表於2024-04-12

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資料庫

安裝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表,修改該欄位為自定義環境,如下圖所示

Apollo自定義環境

分別啟動各個服務

啟動方式很簡單,分別執行各個資料夾下的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登入即可

相關文章