點評cat系列-伺服器開發環境部署
我們有三種部署方式:
1. docker 部署
2. 採用官方的 war 包部署.
3. 原始碼部署
很顯然 docker 部署是最簡單的, 我嘗試了多次, 都在 cat docker 容器映象的編譯過程失敗了. 原因是: 映象編譯需要先編譯 java 原始碼為 war 包, 這中間要從 maven 官網庫下載很多 org.unidal 下的 jar 包, org.unidal 下的 jar 包已經升級到新版本, 而 cat 原始碼中 pom.xml 指定的仍是老版本, 導致下載失敗. 這應該是官方最近在升級 3.0 版, 程式碼沒有完全 align 好.
顯然, 原始碼部署暫時也行不通, 所以我採用了官方 war 包部署.
========================
Docker 部署步驟
========================
參考: https://github.com/dianping/cat/blob/master/cat-doc/posts/ch4-server/README.md
官方並沒提供已經編譯好的 docker 映象, 大致步驟如下:
1. 從 github 上下載完整原始碼
2. 將 docker/docker-compose.yml 檔案中的漢字都刪除, 否則之後的 docker-compose up 命令會報錯.
3. 執行 docker-compose up 命令, 該命令將完成:
(1)cat docker 容器映象的編譯
(2)mysql 映象下載,
(3) 啟動 mysql 容器和 cat 容器.
4. 第一次執行以後,資料庫中沒有表結構,需要通過下面的命令建立表
docker exec <container_id> bash -c "mysql -uroot -Dcat < /init.sql"
說明:<container_id> 需要替換為 cat 容器的真實 id. 通過 docker ps 可以檢視到 mysql 容器 id
========================
windows 下 war 包部署開發環境
========================
準備工作: 配置好 jdk8 和 tomcat, 官方建議 tomcat 使用版本 7.*.或 8.0.
步驟 1: 初始化 Mysql 資料庫, 一套 CAT 叢集需要部署一個數據庫, 先新建一個名為 cat 資料庫, 資料庫編碼使用 utf8mb4, 建表語句為 script/CatApplication.sql .
步驟 2: 在 tomcat 程式執行盤下新建 /data/appdatas/cat 和 /data/applogs/cat 兩個目錄.
步驟 3: [非必需] 配置 /data/appdatas/cat/client.xml, 其中 http-port 為 tomcat 埠, 我機器上是 8888 埠.
<?xml version="1.0" encoding="utf-8"?> <config mode="client"> <servers> <server ip="127.0.0.1" port="2280" http-port="8888"/> </servers> </config>
步驟 4: 配置/data/appdatas/cat/datasources.xml
<?xml version="1.0" encoding="utf-8"?> <data-sources> <data-source id="cat"> <maximum-pool-size>3</maximum-pool-size> <connection-timeout>1s</connection-timeout> <idle-timeout>10m</idle-timeout> <statement-cache-size>1000</statement-cache-size> <properties> <driver>com.mysql.jdbc.Driver</driver> <url><![CDATA[jdbc:mysql://127.0.0.1:3306/cat]]></url> <!-- 請替換為真實資料庫 URL 及 Port --> <user>root</user> <!-- 請替換為真實資料庫使用者名稱 --> <password>toor</password> <!-- 請替換為真實資料庫密碼 --> <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties> </properties> </data-source> </data-sources>
步驟 5: 下載編譯好的 war 包, 此 war 是用 jdk8, 服務端請使用 jdk8 版本.
http://cat.meituan.com/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/cat-home-3.0.0.war
步驟 6: 將下載的 war 檔案重新命名為 cat.war, 放入 tomcat 容器 webapps 根目錄下, 並啟動 tomcat.
然後修改客戶端的路由策略, 訪問連結 http://127.0.0.1:8888/cat/s/config?op=routerConfigUpdate
把下面的 xml 檔案的 127.0.0.1 替換為你本機的實際的內網 IP,比如說 192.168.1.1, 然後重啟 tomcat .
<?xml version="1.0" encoding="utf-8"?> <router-config backup-server="127.0.0.1" backup-server-port="2280"> <default-server id="127.0.0.1" weight="1.0" port="2280" enable="true"/> <network-policy id="default" title="default" block="false" server-group="default_group"> </network-policy> <server-group id="default_group" title="default-group"> <group-server id="127.0.0.1"/> </server-group> </router-config>
步驟 7: 更改服務端配置
訪問連結 http://127.0.0.1:8888/cat/s/config?op=serverConfigUpdate
說明:這個只需要更新一次,配置是儲存在 mysql 的資料庫裡面.
本機模式可直接複製以下內容,注意要修改 127.0.0.1 為實際的內網 IP,然後點選提交. 本配置已經將本機伺服器 tag 下的 local-mode 和 job-machine 和 alarm-machine 都可以配置為 true, 以便於 debug, 然後重啟 tomcat.
<?xml version="1.0" encoding="utf-8"?> <server-config> <server id="default"> <properties> <property name="local-mode" value="false"/> <property name="job-machine" value="false"/> <property name="send-machine" value="false"/> <property name="alarm-machine" value="false"/> <property name="hdfs-enabled" value="false"/> <property name="remote-servers" value="127.0.0.1:8888"/> <!-- 本機模式這個 IP 替換為 cat 拿到的內網 IP--> </properties> <storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="7" local-logivew-storage-time="7"> <hdfs id="logview" max-size="128M" server-uri="hdfs://10.1.77.86/user/cat" base-dir="logview"/> <hdfs id="dump" max-size="128M" server-uri="hdfs://10.1.77.86/user/cat" base-dir="dump"/> <hdfs id="remote" max-size="128M" server-uri="hdfs://10.1.77.86/user/cat" base-dir="remote"/> </storage> <consumer> <long-config default-url-threshold="1000" default-sql-threshold="100" default-service-threshold="50"> <domain name="cat" url-threshold="500" sql-threshold="500"/> <domain name="OpenPlatformWeb" url-threshold="100" sql-threshold="500"/> </long-config> </consumer> </server> <server id="127.0.0.1"> <!-- 本機模式這個 IP 替換為 cat 拿到的內網 IP,此 IP 是看 transaction 報表下 cat 的自己上報的 IP,用 127.0.0.1 是沒用的. --> <properties> <property name="job-machine" value="true"/> <property name="alarm-machine" value="true"/> <property name="send-machine" value="true"/> </properties> </server> </server-config>
驗證:
http://127.0.0.1:8888/cat/
3.0 版本預設密碼: admin/admin
2.0 版本密碼: catadmin/catadmin
========================
參考:
========================
官方部署文件
https://github.com/dianping/cat/blob/master/cat-doc/posts/ch4-server/README.md