1、前提:本文只支持默認(rèn)的開發(fā)環(huán)境(DEV)、測(cè)試環(huán)境(FAT)芒篷、預(yù)發(fā)布環(huán)境(UAT)、生產(chǎn)環(huán)境(PRO)四種環(huán)境搭建采缚,可以根據(jù)項(xiàng)目的實(shí)際使用情況部署所需要對(duì)應(yīng)的環(huán)境针炉。本文使用的是apollo1.9.2版本的jar直接部署。如果上述情況不滿足項(xiàng)目需求扳抽,則可以根據(jù)實(shí)際項(xiàng)目需求修改apollo源碼篡帕,然后進(jìn)行定制化代碼的打包部署
Apollo源碼地址:https://github.com/apolloconfig/apollo
2、準(zhǔn)備工作:
1) 對(duì)應(yīng)文件壓縮包及SQL文件如下:
百度網(wǎng)盤自取
鏈接:https://pan.baidu.com/s/12qsO357DexxoH00o05LrDQ
提取碼:itcc
2) Apollo對(duì)應(yīng)結(jié)構(gòu)如下:
四個(gè)核心模塊及其主要功能:
模塊 | 主要功能 |
---|---|
ConfigService | 提供配置獲取接口贸呢、提供配置推送接口镰烧、服務(wù)于Apollo客戶端 |
AdminService | 提供配置管理接口、提供配置修改發(fā)布接口楞陷、服務(wù)于管理界面Portal |
Client | 為應(yīng)用獲取配置怔鳖,支持實(shí)時(shí)更新; 通過MetaServer獲取ConfigService的服務(wù)列表固蛾; 使用客戶端軟負(fù)載SLB方式調(diào)用ConfigService |
Portal | 配置管理界面结执、通過MetaServer獲取AdminService的服務(wù)列表、使用客戶端軟負(fù)載SLB方式調(diào)用AdminService |
三個(gè)輔助服務(wù)發(fā)現(xiàn)模塊
模塊 | 主要功能 |
---|---|
Eureka | 用于服務(wù)發(fā)現(xiàn)和注冊(cè)Config/AdminService注冊(cè)實(shí)例并定期報(bào)心跳和ConfigService在一起部署 |
MetaServer | Portal通過域名訪問MetaServer獲取AdminService的地址列表艾凯,Client通過域名訪問MetaServer獲取ConfigService的地址列表献幔,相當(dāng)于一個(gè)Eureka Proxy邏輯角色,和ConfigService住在一起部署 |
NginxLB | 和域名系統(tǒng)配合趾诗,協(xié)助Portal訪問MetaServer獲取AdminService地址列表蜡感;和域名系統(tǒng)配合,協(xié)助Client訪問MetaServer獲取ConfigService地址列表;和域名系統(tǒng)配合郑兴,協(xié)助用戶訪問Portal進(jìn)行配置管理 |
3犀斋、部署工作:
通過上面的結(jié)構(gòu)可以了解到,部署apollo服務(wù)主要需要部署portal情连、adminservice闪水、configservice三個(gè)服務(wù)。
portal是配置管理界面蒙具,只需要部署一個(gè)服務(wù)即可,同理數(shù)據(jù)庫也只需要一個(gè)朽肥。
Adminservice和configservice是對(duì)應(yīng)每個(gè)環(huán)境的禁筏,所以部署幾個(gè)環(huán)境,就需要部署幾個(gè)對(duì)應(yīng)的Adminservice和configservice服務(wù)衡招,同樣每個(gè)環(huán)境都有對(duì)應(yīng)的數(shù)據(jù)庫篱昔。
我這里使用的是一臺(tái)服務(wù)器部署四個(gè)環(huán)境。
3.1 第一步:創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)庫始腾,一個(gè)portalDB和四個(gè)apolloconfigdb州刽,對(duì)應(yīng)的sql在上面。(四個(gè)apolloconfigdb對(duì)應(yīng)的表都是一樣的浪箭,同樣的sql文件執(zhí)行到四個(gè)數(shù)據(jù)庫即可)每個(gè)環(huán)境對(duì)應(yīng)的數(shù)據(jù)庫如下圖穗椅,一目了然。
3.2 第二步:將zip包上傳到服務(wù)器目錄奶栖,解壓匹表,修改配置(每個(gè)環(huán)境存放一個(gè)目錄,便于管理)
3.2.1 修改portal文件宣鄙,啟動(dòng)對(duì)應(yīng)服務(wù):
解壓后文件如下圖:
① 修改apollo-portal.conf文件袍镀,修改對(duì)應(yīng)服務(wù)啟動(dòng)日志文件打印位置:
(根據(jù)實(shí)際情況自行調(diào)整)
②修改config目錄下apollo-env.properties文件
(該文件修改的是各個(gè)環(huán)境的訪問地址,由于我的幾個(gè)環(huán)境部署在同一臺(tái)服務(wù)器上面了冻晤,所以通過修改使用端口進(jìn)行啟動(dòng)多個(gè)服務(wù))
這是配置的多環(huán)境對(duì)應(yīng)的端口就是啟動(dòng)每個(gè)環(huán)境configservice所使用的端口
③ 修改config目錄下application-github.properties文件
(該文件修改的是服務(wù)對(duì)應(yīng)的數(shù)據(jù)庫配置)
④ 修改scripts目錄下的startup.sh
(該文件修改的是服務(wù)啟動(dòng)使用的端口苇羡,此端口也是訪問配置頁面使用的端口,根據(jù)實(shí)際情況調(diào)整鼻弧,日志文件打印存放目錄)
⑤ 打開portal對(duì)應(yīng)ApolloPortalDB數(shù)據(jù)庫的ServerConfig對(duì)應(yīng)的表设江,添加對(duì)應(yīng)的環(huán)境,因?yàn)槲疫@里配置四個(gè)環(huán)境所以如下圖(可根據(jù)實(shí)際情況調(diào)整)
通過上述四部操作温数,就完成了portal的對(duì)應(yīng)配置修改绣硝,然后執(zhí)行scripts目錄下的startup.sh的啟動(dòng)腳本即可啟動(dòng)對(duì)應(yīng)的服務(wù),啟動(dòng)日志可以通過自定義配置的日志目錄下找到對(duì)應(yīng)的日志文件查看撑刺,當(dāng)然此時(shí)雖然可以正常啟動(dòng)鹉胖,但是還是會(huì)報(bào)錯(cuò),因?yàn)閷?duì)應(yīng)的configservice服務(wù)還沒有啟動(dòng),肯定是訪問不到的甫菠,無需擔(dān)心挠铲。
3.2.2 修改dev目錄下對(duì)應(yīng)的adminservice和configservice的服務(wù)配置
在dev目錄下創(chuàng)建adminservice和configservice兩個(gè)目錄
然后將對(duì)應(yīng)的adminservice和configservice的zip包上傳到對(duì)應(yīng)的目錄下,解壓
① Adminservice目錄下解壓之后文件如下:
② 修改apollo-adminservice.conf文件中對(duì)應(yīng)日志打印目錄
③ 修改config目錄下application-github.properties文件中對(duì)應(yīng)的數(shù)據(jù)源配置
④ 修改scripts目錄下startup.sh文件中的使用端口及日志打印目錄
通過上述修改寂诱,dev環(huán)境的adminservice服務(wù)就修改完成了
⑤ Configservice目錄下解壓后文件如下:
⑥ 所需修改的地方和上述234一樣拂苹,有一點(diǎn)需要注意4中的端口不能定義重復(fù),我這里configservice使用的是8080端口痰洒,全部修改完成之后瓢棒,對(duì)應(yīng)的服務(wù)的配置就全部完成了
⑦ 打開數(shù)據(jù)庫dev環(huán)境對(duì)應(yīng)的ApolloConfigDBDev數(shù)據(jù)庫,找到ServerConfig表丘喻,第一行數(shù)據(jù)是eureka的配置脯宿,注意value值一定要是configservice服務(wù)使用的端口。如下圖:
通過上述操作泉粉,將對(duì)應(yīng)的服務(wù)全部修改完成后连霉,啟動(dòng)各自scripts目錄下startup.sh腳本即可,啟動(dòng)成功后嗡靡,configservice中會(huì)自帶eureka服務(wù)跺撼,所以通過頁面訪問ip:8080/就可以訪問到eureka了
訪問ip:8070/就可以訪問apollo配置界面了
默認(rèn)初始用戶密碼:apollo/admin
通過上面的操作就完成了portal和dev環(huán)境的部署,其他的環(huán)境和dev同理讨彼,操作都一樣歉井。**需要注意的是每個(gè)環(huán)境的ApolloConfigDB數(shù)據(jù)庫 ServerConfig表,第一行數(shù)據(jù)是eureka的配置点骑,注意value值一定要是configservice服務(wù)使用的端口酣难,如果這里端口沒有更改,就會(huì)使用默認(rèn)將服務(wù)注冊(cè)到8080的eureka上面黑滴,就會(huì)出現(xiàn)環(huán)境錯(cuò)亂問題 **
我使用的端口如下:
Portal端口:8070
dev-configservice:8080
dev-adminservice:8090
fat-configservice:8081
fat-adminservice:8091
uat-configservice:8082
uat-adminservice:8092
pro-configservice:8085
pro-adminservice:8093
配置界面訪問:ip:8070
代碼中服務(wù)配置(四個(gè)環(huán)境):
apollo:
meta: http://ip:8080/
bootstrap:
enabled: true
namespaces: application
env: dev
apollo:
meta: http://ip:8081/
bootstrap:
enabled: true
namespaces: application
env: fat
apollo:
meta: http://ip:8082/
bootstrap:
enabled: true
namespaces: application
env: uat
apollo:
meta: http://ip:8085/
bootstrap:
enabled: true
namespaces: application
env: pro