apollo入門

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 修改端口號(默認是端口容易衝突,因此本身修改未使用的端口號,也便於管理),日誌目錄也能夠根據本身習慣改動

apollo入門
config/apollo-env.properties 配置須要管理的環境的config端口
apollo入門
config/application-github.properties 配置portal的數據庫鏈接
apollo入門



2. config

scripts\startup.sh 修改端口號(原理與Portal修改同樣,防止衝突,便於管理),日誌目錄也能夠根據本身習慣改動

apollo入門

config/application-github.properties 配置apollo-config的數據庫鏈接(此處是鏈接的dev環境的配置,由於我有多套環境的配置,如果pro環境的配置,則連pro的數據庫就好)
apollo入門

3. admin

scripts\startup.sh 修改端口號(原理與Portal修改同樣,防止衝突,便於管理),日誌目錄也能夠根據本身習慣改動

apollo入門

config/application-github.properties 配置apollo-config的數據庫鏈接(此處是鏈接的dev環境的配置,由於我有多套環境的配置)

apollo入門

5. 部署應用

將本身修改好配置的安裝包上傳到服務器(我是放在/opt/apollo文件夾下,位置本身定,關係不大)

apollo入門

而後修改script文件夾的權限,由於默認是讀寫權限,沒有執行權限 :chmod -R 755 scripts,這樣啓動和中止腳本就有了執行權限,每一個script文件夾都須要執行權限

而後再執行每一個startup.sh文件(可能會失敗,失敗就須要看啓動日誌了,日誌路徑啓動腳本里面有配置),所有啓動成功以後,就能夠去頁面訪問咱們的apollo的portal了

apollo入門
apollo入門

帳號密碼默認爲 apollo / admin

進來後就能看到本身配置的多套環境了
apollo入門

3. apollo中配置名詞的對應關係

首先是有不一樣的環境

環境下面有不一樣的集羣

集羣下面有不一樣的namespace

以下圖所示:

apollo入門

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爲應用獲取指定配置的惟一標識,建立後不可修改
apollo入門

3. 添加配置項併發布

若是你只使用到application.property, 那你只須要使用下圖中的示例就能夠了.
apollo入門

4. 添加Namespace

若是application沒法知足你的條件, 你能夠建立namespace, 你能夠簡單理解成和application同一個數量級別的文件.你在啓動的時候, 默認是指定application的, 也能夠指定增長其餘的namespace.

  • Namespace是配置項的集合,相似於一個配置文件的概念;

  • Namespace的獲取權限分爲兩種:private和public,public權限的Namespace,能被任何應用獲取;

  • 建立項目的時候,會默認建立一個application的private權限的Namespace;

  • 公共類型的Namespace至關於遊離於應用以外的配置,且經過Namespace的名稱去標識公共Namespace,因此公共的Namespace的名稱必須全局惟一

在項目配置頁面點擊添加Namespace,進入添加頁面

apollo入門

若是已有公共的Namespace則直接關聯便可,沒有則點擊建立Namespace,填寫名稱並選擇類型,填好備註點擊提交便可完成建立,屬性添加同默認Namespace一致。

apollo入門

關聯的Namespace能夠在項目中選擇使用自定義的屬性值覆蓋公共配置項。
apollo入門

5. 配置參數

在META-INF\app.properties文件增長配置項app.id=xxxx,app.id是用來標識應用身份的惟一id;

apollo入門

在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權限)
apollo入門

2. Namespace權限管理

在項目配置頁面的Namespace上點擊受權,區分修改權和發佈權,區分環境
apollo入門

3. 查看發佈歷史

在項目配置頁面的Namespace上點擊發布歷史
apollo入門

4. 項目配置回滾

在項目配置頁面的Namespace上點擊回滾,回滾後變爲修改狀態,將錯誤配置修改後可從新進行發佈操做
apollo入門

5. 灰度發佈

在項目配置頁面的Namespace上點擊灰度,建立灰度版本,
apollo入門

在灰度版本上增長或修改配置,而後點擊灰度規則標籤

apollo入門

新增規則,選擇要灰度測試的客戶端,完成後選擇灰度發佈完成發佈,或者放棄灰度

apollo入門

灰度測試完成後選擇全量發佈進行主版本合併,並刪除灰度版本。

參考地址:
http://www.javashuo.com/article/p-ckojmgwb-go.html
https://blog.csdn.net/gaojie_csdn/article/details/83510839

相關文章
相關標籤/搜索