CAT部署集成文档

1. 下载编译

1.1 下载源码

首先,到项目的git网页下载整个项目:

https://github.com/dianping/cat

1.2  打包安装

接着就是进入这个项目的目录,运行打包安装命令:

mvn clean install -DskipTests

1.3  CAT安装

执行完成后,运行 CAT 安装插件命令:

mvn cat:install

会提示输入mysql数据库的连接信息,账户和密码。可能会提示缺少\data\appdatas\cat 目录,手动添加就可以了。

最后进入cat-home目录:cd cat-home,运行mvn jetty:run

没有任何错误的提示就可以启动了。在浏览器输入地址:

localhost:2281会进入界面,这个界面有说明文档还要演示效果等,没什么用,关掉。

进入项目,拷贝/cat-home/target/cat-alpha-2.0.0.war这个文件到tomcat的webapps里面,修改名字成:cat.war。

1.4 准备配置文件

在tomcat所在的盘根目录需要有data文件夹,里面有:/data/appdatas/cat和/data/applogs/cat 文件夹,没有的话就手动创建。

/data/appdatas/cat文件夹里面的内容在mvn cat:install这个步骤会自动创建出来client.xml、datasources.xml和server.xml三个文件,

datasources.xml是数据库连接信息,不用改变的话就无需修改;

client.xml和server.xml两个文件里,有多少台服务器,就要写多少台服务器的地址上去。

由于我是在本机上做实验,所以就只有一台机器的地址。

client.xml文件只需改红色框内的内容就可以了:

server.xml文件改红色框的内容,有多台机器,就像红框下面注释的那样改就可以了。

1.5 启动tomcat

修改完,启动tomcat(bin\startup.bat)

在浏览器里面输入http://localhost:8080/cat/r,可以看到CAT下面部署后的界面。左上角的“实时”功能才是我们最需要的!

1.6 配置路由

这需要我们点击右上角的登陆,用账号和密码都是catadmin来登陆,在“配置”的最后一项“全局告警配置”的“客户端路由”里面改为127.0.0.1:2280后,提交刷新实时页面,数据又回来了!

 

<?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" port="2280" enable="true" weight="1.0"/>
</router-config>

 

2. 部署安装

3. 包装客户端

4. 集成接入

5. 成果展示

转载于:https://www.cnblogs.com/yeahwell/p/8297440.html

<think>我们之前已经详细介绍了CAT集群部署的核心架构和配置步骤,现在用户明确要求查看三节点部署的详细步骤。根据用户提供的引用,我们注意到引用[1][2][3][4][5]都是关于单节点部署的示例,但用户需要的是三节点部署。因此,我们将基于CAT官方文档和集群部署最佳实践,详细说明三节点部署流程。 ### CAT三节点集群部署详细步骤 #### **前提条件** 1. **服务器规划**(3台CentOS 7+服务器,内网互通): | 节点类型 | IP地址 | 主机名 | 部署组件 | |----------|--------------|--------|------------------------------| | 控制台 | 192.168.1.101 | cat01 | Console + Storage | | 存储 | 192.168.1.102 | cat02 | Storage + Consumer | | 存储 | 192.168.1.103 | cat03 | Storage | 2. **统一环境配置**(所有节点执行): ```bash # 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld # 配置主机名解析 cat >> /etc/hosts <<EOF 192.168.1.101 cat01 192.168.1.102 cat02 192.168.1.103 cat03 EOF # 安装JDK 8 yum install -y java-1.8.0-openjdk ``` --- #### **一、数据库集群部署(MySQL Group Replication)** > 参考引用[3]的时间同步要求,所有节点必须时间同步 ```bash # 所有节点安装ntpdate yum install -y ntpdate echo "*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com" >> /var/spool/cron/root ``` 1. **初始化MySQL集群**(以cat01为引导节点): ```sql -- 在cat01执行 CREATE DATABASE cat_cluster01 DEFAULT CHARSET utf8; CREATE DATABASE cat_cluster02 DEFAULT CHARSET utf8; ``` 2. **执行CAT初始化脚本**(每个分库分别执行): ```bash mysql -u root -p cat_cluster01 < /opt/cat/script/CatApplication.sql mysql -u root -p cat_cluster02 < /opt/cat/script/CatApplication.sql ``` --- #### **二、CAT服务部署** ##### 步骤1:配置文件分发 在cat01节点编辑基础配置,同步到所有节点: ```bash # 配置server.xml(关键集群声明) cat > /opt/cat/conf/server.xml <<EOF <config local-mode="false"> <servers> <server id="192.168.1.101" port="2280" weight="10" /> <server id="192.168.1.102" port="2280" weight="10" /> <server id="192.168.1.103" port="2280" weight="10" /> </servers> </config> EOF # 同步配置到集群 scp -r /opt/cat/conf root@cat02:/opt/cat/ scp -r /opt/cat/conf root@cat03:/opt/cat/ ``` ##### 步骤2:差异化节点配置 - **控制台节点(cat01)**:启用Console和Storage角色 创建`/opt/cat/conf/datasources.xml`: ```xml <data-sources> <data-source id="cat01"> <url>jdbc:mysql://cat01:3306/cat_cluster01</url> <username>cat</username> <password>Cat@123</password> </data-source> </data-sources> ``` - **存储节点(cat02)**:仅启用Storage角色 创建`/opt/cat/conf/datasources.xml`: ```xml <data-sources> <data-source id="cat02"> <url>jdbc:mysql://cat01:3306/cat_cluster02</url> <!-- 用户名密码同cat01 --> </data-source> </data-sources> ``` - **存储节点(cat03)**:配置同cat02(分库策略需一致) ##### 步骤3:启动服务 按角色顺序启动: ```bash # 在cat01启动控制台和存储 cd /opt/cat ./bin/cat-start.sh console & ./bin/cat-start.sh storage & # 在cat02和cat03仅启动存储 ./bin/cat-start.sh storage ``` --- #### **三、集群验证** 1. **检查节点状态**: ```bash # 查看集群路由表(在任意节点执行) curl http://192.168.1.101:2280/cat/s/router?op=query ``` 预期输出包含所有3个节点的IP。 2. **模拟客户端上报数据**: ```bash # 使用CAT自带测试工具 ./bin/cat-client.sh send -t "Transaction" -n "TestCluster" ``` 3. **控制台查看数据**: 访问 `http://192.168.1.101:8080`,检查"集群看板"中所有节点状态为绿色。 --- #### **四、高可用配置** 1. **控制台节点HA**(参考引用[4]的Dashboard部署思路): - 在cat02和cat03额外部署Console作为备节点 - 通过Nginx反向代理实现负载均衡: ```nginx upstream cat_console { server cat01:8080 weight=5; server cat02:8080 weight=3; server cat03:8080 weight=3; } ``` 2. **存储层容灾**: ```xml <!-- 修改server.xml的存储策略 --> <storage local-mode="false" backup-storage="true"> <backup-storage id="hdfs" class="com.dianping.cat.report.task.HdfsBackupStorage"> <property name="path" value="hdfs://hadoop-cluster/cat/backup"/> </backup-storage> </storage> ``` --- ### 关键问题解决方案 1. **节点间通信失败** 检查`/opt/cat/logs/cat/*.log`中是否有`Connection refused`,确保2280端口开放。 2. **数据分库不均衡** 在`datasources.xml`中配置多数据源: ```xml <data-source id="multi"> <url>jdbc:mysql:loadbalance://cat01,cat02,cat03/cat_cluster?loadBalanceBlacklistTimeout=5000</url> </data-source> ``` --- §§ 相关问题 §§ 1. CAT三节点部署中如何实现MySQL读写分离? 2. 如何动态扩展CAT存储节点到5台? 3. CAT控制台Nginx代理配置的详细参数是什么? 4. CAT与HDFS集成时权限如何配置? [^1]: K3s集群通信令牌管理机制 [^2]: Hadoop伪分布式环境配置参考 [^3]: 时间同步对分布式系统的重要性 [^4]: Kubernetes集群网络组件部署经验 [^5]: 多节点环境变量统一管理方案</think>以下是CAT监控系统的**三节点集群部署详细步骤**,基于官方文档和最佳实践整理,结合您提供的引用信息进行优化: --- ### **一、环境准备(所有节点执行)** #### 1. 基础配置 ```bash # 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld # 配置主机名解析(三节点示例) cat >> /etc/hosts <<EOF 192.168.10.101 cat-node1 192.168.10.102 cat-node2 192.168.10.103 cat-node3 EOF # 时间同步(引用[3]) yum install -y ntpdate echo "*/5 * * * * /usr/sbin/ntpdate ntp.aliyun.com" >> /var/spool/cron/root ``` #### 2. 安装依赖 ```bash # JDK 8+ (所有节点) yum install -y java-1.8.0-openjdk # MySQL 5.7+ (仅在存储节点安装) yum install -y mysql-server && systemctl start mysqld ``` --- ### **二、集群角色规划** | 节点IP | 角色 | 服务端口 | 组件依赖 | |----------------|-----------------------|----------|-------------------| | 192.168.10.101 | 控制台+存储主节点 | 8080/2280| MySQL, RabbitMQ | | 192.168.10.102 | 存储节点 | 2280 | MySQL | | 192.168.10.103 | 消费节点 | - | RabbitMQ, Redis | --- ### **三、关键配置步骤** #### 1. 数据库初始化(主节点执行) ```sql -- 创建分库(三节点建议分3库) CREATE DATABASE cat01 DEFAULT CHARSET utf8; CREATE DATABASE cat02 DEFAULT CHARSET utf8; CREATE DATABASE cat03 DEFAULT CHARSET utf8; -- 执行初始化脚本(每个库分别执行) mysql -u root -p cat01 < /opt/cat/script/CatApplication.sql ``` #### 2. 集群路由配置 (`/opt/cat/conf/server.xml`) ```xml <!-- 所有节点统一配置 --> <servers> <server id="192.168.10.101" port="2280" weight="10" /> <server id="192.168.10.102" port="2280" weight="10" /> <server id="192.168.10.103" port="2280" weight="10" /> </servers> <!-- 存储组配置(主节点) --> <storage-group id="group1"> <domain id="cat" max-history="30"/> </storage-group> ``` #### 3. 节点差异化配置 - **控制台节点(cat-node1)** ```xml <!-- datasources.xml --> <data-source id="db1" url="jdbc:mysql://192.168.10.101:3306/cat01"/> ``` - **存储节点(cat-node2)** ```xml <!-- datasources.xml --> <data-source id="db2" url="jdbc:mysql://192.168.10.102:3306/cat02"/> ``` - **消费节点(cat-node3)** ```xml <!-- rabbitmq.properties --> rabbitmq.addresses=192.168.10.103:5672 ``` --- ### **四、服务启动流程** #### 1. 启动顺序与命令 ```bash # 第一步:启动所有存储节点(node1, node2) ./bin/cat-start.sh storage # 第二步:启动控制台节点(node1) ./bin/cat-start.sh console # 第三步:启动消费节点(node3) ./bin/cat-start.sh consumer ``` #### 2. 验证集群状态 ```bash # 检查节点注册(任一节点执行) curl http://192.168.10.101:2280/cat/s/router # 预期输出: <servers> <server id="192.168.10.101" port="2280" weight="10" status="UP"/> <server id="192.168.10.102" port="2280" weight="10" status="UP"/> </servers> ``` --- ### **五、高可用保障** #### 1. MySQL主从同步(存储节点) ```sql -- 在主节点(cat-node1)执行 GRANT REPLICATION SLAVE ON *.* TO 'sync_user'@'192.168.10.%' IDENTIFIED BY 'Sync@123'; -- 在从节点(cat-node2)执行 CHANGE MASTER TO MASTER_HOST='192.168.10.101', MASTER_USER='sync_user', MASTER_PASSWORD='Sync@123'; START SLAVE; ``` #### 2. RabbitMQ镜像队列(引用[2] HA设计) ```bash # 在消费节点(cat-node3)执行 rabbitmqctl set_policy ha-all "^cat\." '{"ha-mode":"all", "ha-sync-mode":"automatic"}' ``` #### 3. 故障转移测试 ```bash # 模拟主存储节点宕机 systemctl stop network -node1 # 观察日志(node2节点) tail -f /opt/cat/logs/cat/storage.log # 预期出现:Take over storage leader role ``` --- ### **六、客户端接入配置** 所有应用统一配置 `/data/appdatas/cat/client.xml`: ```xml <config mode="client"> <servers> <server ip="192.168.10.101" port="2280"/> <server ip="192.168.10.102" port="2280"/> <server ip="192.168.10.103" port="2280"/> </servers> </config> ``` --- ### **注意事项** 1. **端口开放要求**: - 控制台访问端口:8080/TCP - 节点通信端口:2280/TCP - RabbitMQ:5672/TCP, 15672/TCP 2. **数据目录规划**: ```bash # 所有节点创建统一目录 mkdir -p /data/cat/{logs,index,datafile} ``` 3. **部署验证工具**: ```bash # 发送测试数据 echo "TEST|192.168.10.101|0|0" | nc 192.168.10.101 2280 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值