筆者在工作中遇到如下問題,隨着程序功能越多,配置文件不斷增加,一些功能的開關、服務器地址、接口地址、不同環境的一些配置文件不同,這些在每次發佈不同環境、更新項目時都比較繁瑣,後來學習微服務時接觸到了Spring Cloud Config配置中心,用了一段時間發現比之前方便不少,但是還是比較繁瑣和麻煩,而且功能還達不到生產級,只能小規模場景下使用,在中大規模企業場景下不建議採用。後來瞭解到攜程Apollo配置中心,Apollo支持完善的管理界面,支持多環境,配置變更實時生效,權限和配置審計等多種生產級功能,而且在攜程到微服務架構體系中也運用了這個,在國內衆多互聯網公司也有落地案例,就開始去接觸瞭解。最後結合工作和學習的一些經驗分享給大家Apollo的入門使用和一些走過的坑,本篇文章主要介紹了在Linux(Centons7)下配置安裝Apollo。
簡要步驟:
①、下載Apollo解壓包
②、解壓Apollo
③、修改配置文件(重點)
④、啓動Apollo
⑤、修改配置文件、啓動、關閉Apollo腳本(筆者自己寫的簡單腳本)
推薦博客:
Apollo架構體系、Apollo運行原理、Apollo配置中心簡單介紹:https://blog.csdn.net/zjh_746140129/article/details/86179522
Linux下配置安裝Apollo、Centons下配置安裝Apollo:https://blog.csdn.net/zjh_746140129/article/details/86179601
Spring Boot項目整合Apollo配置中心:https://blog.csdn.net/zjh_746140129/article/details/86361168
詳細步驟:
一、Apollo下載
https://github.com/ctripcorp/apollo/releases
二、解壓
這裏把下載的三個包放到一個apollo下去解壓了,也可以新建一個apollo文件把這三個解壓進去即可。
tar -zxvf pollo.tar.gz
查看文件
三、修改配置文件
1、配置apollo-adminservice的數據庫連接信息
vim application-github.properties
修改數據庫連接信息
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/apolloconfigdb?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
2、配置apollo-configservice的數據庫連接信息
vim application-github.properties
修改數據庫連接信息
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/apolloconfigdb?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
3、配置apollo-portal的數據庫連接信息
vim application-github.properties
修改數據庫連接信息
# DataSource
spring.datasource.url = jdbc:mysql://localhost:3306/apolloconfigdb?characterEncoding=utf8
spring.datasource.username = root
spring.datasource.password = root
4、修改apollo-portal的配置中的meta.service信息
Apollo Portal需要在不同的環境訪問不同的meta service(apollo-configservice)地址,所以我們需要在配置中提供這些信息。默認情況下,meta service和config service是部署在同一個JVM進程,所以meta service的地址就是config service的地址。
使用程序員專用編輯器(如vim,notepad++,sublime等)打開apollo-portal-x.x.x-github.zip中config目錄下的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},如果某個環境不需要,也可以直接刪除對應的配置項(如lpt.meta):
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
注1: 爲了實現meta service的高可用,推薦通過SLB(Software Load Balancer)做動態負載均衡
注2: meta service地址也可以填入IP,0.11.0版本之前只支持填入一個IP。從0.11.0版本開始支持填入以逗號分隔的多個地址(PR #1214),如http://1.1.1.1:8080,http://2.2.2.2:8080,不過生產環境還是建議使用域名(走slb),因爲機器擴容、縮容等都可能導致IP列表的變化。
apollo-env.properties
local.meta=http://localhost:8080
dev.meta=http://192.168.234.155:8080
5、設置jvm內存、端口、日誌路徑
記得在scripts/startup.sh中按照實際的環境設置一個JVM內存,以下是我們的默認設置,供參考:
export JAVA_OPTS="-server -Xms2560m -Xmx2560m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=384m -XX:NewSize=1024m -XX:MaxNewSize=1024m -XX:SurvivorRatio=22"
注1:如果需要修改JVM參數,可以修改scripts/startup.sh的JAVA_OPTS部分。
注2:如要調整服務的日誌輸出路徑,可以修改scripts/startup.sh和apollo-portal.conf中的LOG_DIR。
注3:如要調整服務的監聽端口,可以修改scripts/startup.sh中的SERVER_PORT。
四、啓動Apollo
1、啓動apollo-adminservice
2、啓動apollo-configservice(圖是後面補上的)
3、啓動apollo-portal
訪問Apollo:ip:8079
http://192.168.234.155:8070 用戶名:apollo 密碼:admin
五、修改配置文件、啓動、關閉Apollo腳本
1、啓動Apollo腳本
#!/bin/bash
cd /usr/local/devtools/apollo/apollo/apollo-adminservice-1.1.2-github/scripts/
./startup.sh
cd ~
cd /usr/local/devtools/apollo/apollo/apollo-configservice-1.1.2-github/scripts/
./startup.sh
cd ~
cd /usr/local/devtools/apollo/apollo/apollo-portal-1.1.2-github/scripts/
./startup.sh
ps -ef | grep appllo
2、停止Apollo腳本
#!/bin/bash
cd /usr/local/devtools/apollo/apollo/apollo-adminservice-1.1.2-github/scripts/
./shutdown.sh
cd ~
cd /usr/local/devtools/apollo/apollo/apollo-configservice-1.1.2-github/scripts/
./shutdown.sh
cd ~
cd /usr/local/devtools/apollo/apollo/apollo-portal-1.1.2-github/scripts/
./shutdown.sh
cd ~
rm -rf /usr/local/devtools/apollo/apollo/logs/
ps -ef | grep appllo
3、修改配置文件腳本
#!/bin/bash
cd /usr/local/devtools/apollo/apollo/apollo-adminservice-1.1.2-github/config/
echo spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 > application-github.properties
echo spring.datasource.username = root >> application-github.properties
echo spring.datasource.password = root >> application-github.properties
cd /usr/local/devtools/apollo/apollo/apollo-configservice-1.1.2-github/config/
echo spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 > application-github.properties
echo spring.datasource.username = root >> application-github.properties
echo spring.datasource.password = root >> application-github.properties
cd /usr/local/devtools/apollo/apollo/apollo-portal-1.1.2-github/config/
echo spring.datasource.url = jdbc:mysql://localhost:3306/ApolloPortalDB?characterEncoding=utf8 > application-github.properties
echo spring.datasource.username = root >> application-github.properties
echo spring.datasource.password = root >> application-github.properties
cd /usr/local/devtools/apollo/apollo/apollo-portal-1.1.2-github/config/
echo local.meta=http://localhost:8080 > apollo-env.properties
echo dev.meta=http://localhost:8080 >> apollo-env.properties