1. apollo簡介
apollo(阿波羅)是攜程框架部門研發的分配式配置中心, 可以集中化管理應用不一樣環境, 不一樣集羣的配置,配置修改後可以實時推送到應用端,而且具有規範的權限、流程治理等特性,適用於微服務配置管理場景。java
服務端基於Spring Boot和Spring Cloud開發,打包後能夠直接運行,不須要額外安裝Tomcat等應用容器。mysql
Java客戶端不依賴任何框架,可以運行於全部Java運行時環境,同時對Spring/Spring Boot環境也有較好的支持。git
.Net客戶端不依賴任何框架,可以運行於全部.Net運行時環境。github
詳細介紹,請前往:https://github.com/ctripcorp/apollospring
2. apollo安裝搭建
1. 環境準備
- java:JDK 1.8.x
- maven:3.2.2
- mysql:5.7.18
- idea: 2019.1.3
- git : 2.10.0
- apollo: 1.4.0
以及各個組件對應的版本,其中 除了 idea 、git 外,其餘都是必須的,請查缺補漏的部署環境。
2. 安裝包下載
從url中下載所須要的連接地址https://github.com/ctripcorp/apollo/releasessql
下載三個包:數據庫
- apollo-adminservice-1.6.1-github.zip
- apollo-configservice-1.6.1-github.zip
- apollo-portal-1.6.1-github.zip
3. 建立數據庫
數據庫要求5.6+, 安裝的5.7的數據庫bootstrap
mysql> SHOW VARIABLES WHERE Variable_name = 'version'; +---------------+--------+ | Variable_name | Value | +---------------+--------+ | version | 5.7.30 | +---------------+--------+ 1 row in set (0.01 sec)
建立兩個數據庫springboot
mysql> create database ApolloConfigDB default CHARACTER SET = utf8mb4;
Query OK, 1 row affected (0.00 sec)
服務器
mysql> create database ApolloPortalDB default CHARACTER SET = utf8mb4;
Query OK, 1 row affected (0.00 sec)
4. 配置數據庫
1. portal
scripts\startup.sh 修改端口號(默認是端口容易衝突,因此本身修改未使用的端口號,也便於管理),日誌目錄也能夠根據本身習慣改動
config/apollo-env.properties 配置須要管理的環境的config端口
config/application-github.properties 配置portal的數據庫鏈接
2. config
scripts\startup.sh 修改端口號(原理與Portal修改同樣,防止衝突,便於管理),日誌目錄也能夠根據本身習慣改動
config/application-github.properties 配置apollo-config的數據庫鏈接(此處是鏈接的dev環境的配置,由於我有多套環境的配置,如果pro環境的配置,則連pro的數據庫就好)
3. admin
scripts\startup.sh 修改端口號(原理與Portal修改同樣,防止衝突,便於管理),日誌目錄也能夠根據本身習慣改動
config/application-github.properties 配置apollo-config的數據庫鏈接(此處是鏈接的dev環境的配置,由於我有多套環境的配置)
5. 部署應用
將本身修改好配置的安裝包上傳到服務器(我是放在/opt/apollo文件夾下,位置本身定,關係不大)
而後修改script文件夾的權限,由於默認是讀寫權限,沒有執行權限 :chmod -R 755 scripts,這樣啓動和中止腳本就有了執行權限,每一個script文件夾都須要執行權限
而後再執行每一個startup.sh文件(可能會失敗,失敗就須要看啓動日誌了,日誌路徑啓動腳本里面有配置),所有啓動成功以後,就能夠去頁面訪問咱們的apollo的portal了
帳號密碼默認爲 apollo / admin
進來後就能看到本身配置的多套環境了
3. apollo中配置名詞的對應關係
首先是有不一樣的環境
環境下面有不一樣的集羣
集羣下面有不一樣的namespace
以下圖所示:
4. springboot項目接入apollo
1. maven依賴
<dependency> <groupId>com.ctrip.framework.apollo</groupId> <artifactId>apollo-client</artifactId> <version>1.2.0</version> </dependency>
2. 在apollo中建立項目
在應用正式接入以前需在配置中心建立項目,應用Id爲應用獲取指定配置的惟一標識,建立後不可修改
3. 添加配置項併發布
若是你只使用到application.property, 那你只須要使用下圖中的示例就能夠了.
4. 添加Namespace
若是application沒法知足你的條件, 你能夠建立namespace, 你能夠簡單理解成和application同一個數量級別的文件.你在啓動的時候, 默認是指定application的, 也能夠指定增長其餘的namespace.
-
Namespace是配置項的集合,相似於一個配置文件的概念;
-
Namespace的獲取權限分爲兩種:private和public,public權限的Namespace,能被任何應用獲取;
-
建立項目的時候,會默認建立一個application的private權限的Namespace;
- 公共類型的Namespace至關於遊離於應用以外的配置,且經過Namespace的名稱去標識公共Namespace,因此公共的Namespace的名稱必須全局惟一
在項目配置頁面點擊添加Namespace,進入添加頁面
若是已有公共的Namespace則直接關聯便可,沒有則點擊建立Namespace,填寫名稱並選擇類型,填好備註點擊提交便可完成建立,屬性添加同默認Namespace一致。
關聯的Namespace能夠在項目中選擇使用自定義的屬性值覆蓋公共配置項。
5. 配置參數
在META-INF\app.properties文件增長配置項app.id=xxxx,app.id是用來標識應用身份的惟一id;
在application-env.properties文件增長以下配置,namespaces默認爲application,meta爲配置中心服務端地址.
apollo.bootstrap.enabled=true apollo.bootstrap.eagerLoad.enabled=true #將配置中心加載時機提早,能夠管理logback日誌配置 apollo.bootstrap.namespaces=application,IT.LOGGER #多個namespace用英文逗號分隔 apollo.meta=http://10.253.128.21:8080,http://10.253.128.20:8080
咱們目前使用統一是application.properties, apollo的測試環境和正式環境是區分開來的, 咱們經過啓動參數來替換appo.meta的參數來分別區分uat環境和生產環境
5. 服務端項目管理
1. 項目管理員管理
在項目配置頁面點擊項目管理進入管理頁面,管理員具備權限(建立Namespace、建立集羣、管理項目、Namespace權限)
2. Namespace權限管理
在項目配置頁面的Namespace上點擊受權,區分修改權和發佈權,區分環境
3. 查看發佈歷史
在項目配置頁面的Namespace上點擊發布歷史
4. 項目配置回滾
在項目配置頁面的Namespace上點擊回滾,回滾後變爲修改狀態,將錯誤配置修改後可從新進行發佈操做
5. 灰度發佈
在項目配置頁面的Namespace上點擊灰度,建立灰度版本,
在灰度版本上增長或修改配置,而後點擊灰度規則標籤
新增規則,選擇要灰度測試的客戶端,完成後選擇灰度發佈完成發佈,或者放棄灰度
灰度測試完成後選擇全量發佈進行主版本合併,並刪除灰度版本。
參考地址:
http://www.javashuo.com/article/p-ckojmgwb-go.html
https://blog.csdn.net/gaojie_csdn/article/details/83510839