CAT部署与源码编译

507 阅读4分钟

CAT

安装环境

  • Linux 2.6内核以上(个人认为随便找一个云服务器厂商的云服务器,安装 CentOS 6.5或以上版本的理论上都差不多),本次部署使用的操作系统是 CentOS 7
  • Java版本当然是使用 8了
  • Maven 3及以上版本
  • MySQL 的版本使用 5.6 或 5.7,更高版本不建议使用
  • Tomcat 版本建议使用 7.x8.x的版本,更高版本进行部署遇到问题,官方不一定会解决问题
  • Hadoop环境(可选):仅为了学习或开发用途可以不使用 Hadoop环境,可以使用磁盘模式,并且需要是在/data目录下,如果需要更换目录,可以通过 JVM参数修改默认的路径,变量名:CAT_HOME
  • 对于/data目录,程序需要有该目录的读写权限,此目录下会存放运行时需要的配置文件:/data/appdatas/cat/client.xml/data/appdatas/cat/datasources.xml,后面讲解这两个配置文件的作用,并且这两个配置文件的路径固定,文件名固定

部署流程

本次使用 tomcat + war 包的部署方式

部署的流程包含 Linux + Windows

1、下载cat.war文件

1、下载 cat.war文件,下载地址(一个 Github 的代理地址,为了下载提速):ghproxy.com/https://git…

image.png image.png

2、创建配置文件

  • /data目录一个读写的权限
 # 创建/data目录
 mkdir /data
 # 递归给/data目录下的所有的子目录和文件的权限都改成777的权限(最高权限)
 chmod -R 777 /data/
  • 创建配置文件
# 创建存储配置文件的目录
mkdir /data/appdatas/cat/
​
# 创建client.xml配置文件
touch client.xml
​
# 创建datasources.xml配置文件
touch datasources.xml
  • 配置client.xml

该配置文件的作用是所有的客户端都需要一个地址指向 CAT 的服务端(官方文档原文)

下面server标签中的 2280端口是默认的 CAT 服务端接收数据的端口,不允许修改,http-port 是 Tomcat 启动的端口,默认是8080,可以修改

<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
    <servers>
        <server ip="10.1.1.1" port="2280" http-port="8080"/>
        <!-- 如果需要集群部署就是多加几个server标签-->
        <!--<server ip="10.1.1.1" port="2280" http-port="8080"/> -->
    </servers>
</config>
  • 执行sql,下图是 CAT 需要执行的 sql文件,数据库的编码使用utf8mb4,否则可能会中文乱码

image.png

  • 配置datasources.xml

根据下面的注释换成自己刚刚执行sql 的数据源的配置就可以了

<?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及Port  -->
            <url><![CDATA[jdbc:mysql://127.0.0.1:3306/cat]]></url>  
            <!-- 请替换为真实数据库用户名  -->
            <user>root</user>  
            <!-- 请替换为真实数据库密码  -->
            <password>root</password>  
            <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
        </properties>
    </data-source>
</data-sources>

3、war包放至到tomcat中启动

将下载好的war包放至到下载的 tomcatwebapps目录中,然后运行 tomcat 的 bin目录中的 startup.sh脚本等待片刻就可以了,

然后访问:http://ip:port/cat 就可以看到下图的样子,到这一步还没有安装结束

image.png

4、修改 CAT 服务端配置

访问:http://ip:port/cat/s/config 会进入到管理员配置界面,默认用户名/密码是 admin/admin

image.png

image.png

需要修改掉所有127.0.0.1的 IP地址,修改为内网地址,中间的 HDFS配置,我们并没有用到,所以就不需要改了。根据要求修改完提交即可

5、修改客户端路由配置

image.png

这里的配置也和第四步的操作一样,把127.0.0.1修改为内网地址

6、Windows部署

在 Windows 部署的步骤与在 Linux 上的步骤相差不大,所以只列出差异的一步:需要指定配置文件的环境变量

与 Linux 部署唯一不一样的一步就是需要配置环境变量,Key 是固定的 CAT_HOME,value可以是任意哪个盘,目录也还是需要是/data/appdatas/cat,把client.xmldatasources.xml放至到该目录中。

其他步骤均和 Linux 一致

image.png 部署的流程就到此结束~~

CAT 源码编译

1、拉取 CAT 源码:git clone https://github.com/dianping/cat.git,导入到IDEA中

2、项目编译通过maven:mvn clean compile,编译之后大概会得到下面的结果:编译失败。

[ERROR] Failed to execute goal on project cat-core: Could not resolve dependencies for project com.dianping.cat:cat-core:jar:3.0.0: The following artifacts could not be resolved: org.unidal.framework:foundation-ser
vice:jar:2.5.0, org.unidal.framework:web-framework:jar:2.4.0, org.unidal.framework:dal-jdbc:jar:2.4.0: Could not find artifact org.unidal.framework:foundation-service:jar:2.5.0 in alimaven (http://maven.aliyun.com/
nexus/content/groups/public) -> [Help 1]

3、切换分支到mvn-repo分支。把org文件夹下的所有内容,包括org文件夹复制到maven仓库对应的位置。都到这儿了,应该不会不理解对应位置是什么意思吧。这些jar包没办法通过官方maven仓库下载,所以只能这样做

image.png

image.png 4、切换回master分支再次编译(这次应该还是会失败的!)

ifact org.codehaus.plexus:plexus-container-default:pom:3.1.0 from/to unidal.releases (http://unidal.org/nexus/content/repositories/releases/): Transfer failed for http://unidal.org
/nexus/content/repositories/releases/org/codehaus/plexus/plexus-container-default/3.1.0/plexus-container-default-3.1.0.pom: Unknown host unidal.org -> [Help 1]

解决方法:把maven仓库中maven仓库地址.m2\repository\org\unidal\maven\plugins\default\2.5.8\default-2.5.8.pom文件中。

原本foundation-service.version3.1.0版本修改为4.0.0版本!!

image.png

image.png

5、再次编译,mvn clean compile。我这边是成功的。

如果没有成功的话。报错应该是和 BASE64Encoder 这个类有关的。可以在cat-client项目中增加依赖apachecommons-codec或者是hutool的依赖也可以,修改一下代码,我记得改起来也没有特别麻烦,再次编译理论上就可以成功了。

image.png

参考