1. 程式人生 > >點評cat系列-伺服器開發環境部署

點評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