準備工作
apollo官網參考
https://github.com/ctripcorp/apollo
https://github.com/ctripcorp/apollo/wiki/Quick-Start
Apollo服務端:1.8+
Apollo客戶端:1.7+
由於Quick Start會在本地同時啓動服務端和客戶端,所以需要在本地安裝Java 1.8+。
在配置好後,可以通過如下命令檢查:
java -version
樣例輸出:
java version "1.8.0_74"
Java(TM) SE Runtime Environment (build 1.8.0_74-b02)
Java HotSpot(TM) 64-Bit Server VM (build 25.74-b02, mixed mode)
Windows用戶請確保JAVA_HOME環境變量已經設置。
MySQL
版本要求:5.6.5+
Apollo的表結構對timestamp使用了多個default聲明,所以需要5.6.5以上版本。
連接上MySQL後,可以通過如下命令檢查:
SHOW VARIABLES WHERE Variable_name = 'version';
Variable_name Value
version 5.7.11
創建目錄
mkdir -p /data/app/ /data/3306/data /data/3306/binlog
創建MySQL相關用戶、組
useradd mysql
chown -R mysql.mysql /data
系統殘留清空
yum remove mariadb-libs -y
獲取路徑
http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.7/
軟件上傳和解壓
cd /data/app
tar zxf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz
做軟連接
ln -s mysql-5.7.28-linux-glibc2.12-x86_64 mysql
chown -R mysql. /data
環境變量配置
vim /etc/profile
添加如下
export PATH=/data/app/mysql/bin:$PATH
使環境變量生效
source /etc/profile
cat /etc/my.cnf
cat >/etc/my.cnf <<EOF
[mysqld]
user=mysql
basedir=/data/app/mysql
datadir=/data/3306/data
server_id=6
socket=/tmp/mysql.sock
[client]
EOF
mysqld --initialize-insecure --user=mysql --basedir=/data/app/mysql --datadir=/data/3306/data
準備啓動腳本
cp /data/app/mysql/support-files/mysql.server /etc/init.d/mysqld
啓動數據庫
service mysqld start
或者
/etc/init.d/mysqld restart
啓動方式2: Centos7 管理方式 systemd
[root@db01 ~] chkconfig --add mysqld
[root@db01 ~] systemctl stop mysqld
[root@db01 ~] systemctl start mysqld
[root@db01 ~] systemctl restart mysqld
登錄至數據庫查看版本
mysql
SHOW VARIABLES WHERE Variable_name = 'version';
創建ApolloConfigDB
通過各種MySQL客戶端導入sql/apolloconfigdb.sql即可。
下面以MySQL原生客戶端爲例
source /root/apollo/apollo-build-scripts-master/sql/apolloconfigdb.sql;
創建ApolloPortalDB
通過各種MySQL客戶端導入sql/apolloportaldb.sql即可。
下面以MySQL原生客戶端爲例
source /root/apollo/apollo-build-scripts-master/sql/apolloportaldb.sql
授權權限
grant select,insert,update,delete on ApolloConfigDB .* to gx@'%' identified by '123';
grant select,insert,update,delete on ApolloPortalDB .* to gx@'%' identified by '123';
刷新權限
flush privileges;
導入成功後,可以通過執行以下sql語句來驗證
select `Id`, `AppId`, `Name` from ApolloPortalDB.App;
導入成功後,可以通過執行以下sql語句來驗證:
select `NamespaceId`, `Key`, `Value`, `Comment` from ApolloConfigDB.Item;
vim /root/apollo/apollo-build-scripts-master/demo.sh
./demo.sh start
查看阿波羅日誌詳情
tailf ./portal/apollo-portal.log
當看到如下輸出後,就說明啓動成功了!
==== starting service ====
Service logging file is ./service/apollo-service.log
Started [10768]
Waiting for config service startup.......
Config service started. You may visit http://localhost:8080 for service status now!
Waiting for admin service startup....
Admin service started
==== starting portal ====
Portal logging file is ./portal/apollo-portal.log
Started [10846]
Waiting for portal startup......
Portal started. You can visit http://localhost:8070 now!
異常排查
如果啓動遇到了異常,可以分別查看service和portal目錄下的log文件排查問題。
注:在啓動apollo-configservice的過程中會在日誌中輸出eureka註冊失敗的信息,如com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused。需要注意的是,這個是預期的情況,因爲apollo-configservice需要向Meta Server(它自己)註冊服務,但是因爲在啓動過程中,自己還沒起來,所以會報這個錯。後面會進行重試的動作,所以等自己服務起來後就會註冊正常了。
使用Apollo配置中心
打開http://localhost:8080
打開http://localhost:8090
打開http://localhost:8070
輸入用戶名apollo,密碼admin後登錄
運行客戶端程序
./demo.sh client
運行./demo.sh client啓動Demo客戶端,忽略前面的調試信息,可以看到如下提示
在配置界面點擊timeout這一項的編輯按鈕
點擊發布按鈕,並填寫發佈信息
客戶端查看修改後的值
使用新的項目
應用接入Apollo
這部分可以參考Java應用接入指南
運行客戶端程序
由於使用了新的項目,所以客戶端需要修改appId信息。
編輯client/META-INF/app.properties,修改app.id爲你新創建的app id。
app.id=你的appId
運行./demo.sh client啓動Demo客戶端即可。