CentOS 单机部署 CAT

JDK

安装 JDK

$ cd /usr/local/soft
$ tar -zxvf jdk-8u321-linux-x64.tar.gz
$ mv jdk1.8.0_321 /usr/local

$ cd /usr/local
$ ln -s jdk1.8.0_321 jdk

配置环境变量

$ vim /etc/profile

export JAVA_HOME=/usr/local/jdk
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

 生效并验证

$ source /ect/profile

$ java -version
java version "1.8.0_321"
Java(TM) SE Runtime Environment (build 1.8.0_321-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.321-b07, mixed mode)

Apache Tomcat

安装 Tomcat

$ cd /usr/local/soft
$ tar -zxvf apache-tomcat-8.0.9.tar.gz
$ mv apache-tomcat-8.0.9 /usr/local

$ cd /usr/local
$ ln -s apache-tomcat-8.0.9 tomcat 

配置环境变量

$ vim /etc/profile

export CATALINA_HOME=/usr/local/apache-tomcat
export PATH=$PATH:$CATALINA_HOME/bin

生效

$ source /etc/profile

设置 Tomcat 字符集

$ cd /usr/local/tomcat/conf
$ vim server.xml
添加 URIEncoding="utf-8";这里的 port 默认是 8080,即 tomcat 部署后访问的端口,如果不想使用 8080 的话,则可以根据自己的需要修改,比如我这里修改为 8090。
<Connector port="8090" protocol="HTTP/1.1"
           URIEncoding="utf-8"
           connectionTimeout="20000"
           redirectPort="8443" />

后续在部署 CAT 时,会将构建好的 cat.war 放在 /usr/local/tomcat/webapps 目录下,因为 CAT 的访问目录是 /cat 开始的,所以这里可以在 Host 标签下新增 Context 标签并进行如下配置:

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
      
  <Context path="/cat" docBase="cat" debug="9" />

因为本次使用的 tomcat 版本是 8,所以在实际部署时,发现一个问题,即 ./shutdown.sh 关闭 tomcat 后,使用 ps -ef | grep tomcat 发现仍然存在 tomcat 进程,所以操作以下步骤解决该问题(tomcat 10 版本不存在此问题)

修改 /usr/local/tomcatbin 目录下的 catalina.sh,使用 vim catalina.sh 命令编辑文件,使用 ./ 搜索 PRGDIR=`dirname "$PRG"` 然后回车快速定位到添加代码的位置,添加脚本如下:

PRGDIR=`dirname "$PRG"`
 
# 添加如下内容
if [ -z "$CATALINA_PID" ]; then
    CATALINA_PID=$PRGDIR/CATALINA_PID
fi

改 bin 目录下的 shutdown.sh,vim shutdown.sh 后使用 ./ 搜索 exec "$PRGDIR"/"$EXECUTABLE" stop 即可快速定位到修改的地方,在 stop 后面添加 -force 参数

exec "$PRGDIR"/"$EXECUTABLE" stop -force "$@"

调整启动参数,建议在 tomcat 的 bin 下新建 setenv.sh 添加环境变量

这里主要修改的值是:-Xms512m -Xmx1G,具体的数值可以根据机器的性能按需设置

$ cd /usr/local/tomcat/bin
$ touch setenv.sh

$ vim setenv.sh

export CAT_HOME=/data/appdatas/cat/
CATALINA_OPTS="$CATALINA_OPTS -server -DCAT_HOME=$CAT_HOME -Djava.awt.headless=true -Xms512m -Xmx1G -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=10144m -XX:MaxNewSize=10144m -XX:SurvivorRatio=10 -XX:+UseParNewGC -XX:ParallelGCThreads=4 -XX:MaxTenuringThreshold=13 -XX:+UseConcMarkSweepGC -XX:+DisableExplicitGC -XX:+UseCMSInitiatingOccupancyOnly -XX:+ScavengeBeforeFullGC -XX:+UseCMSCompactAtFullCollection -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=9 -XX:CMSInitiatingOccupancyFraction=60 -XX:+CMSClassUnloadingEnabled -XX:SoftRefLRUPolicyMSPerMB=0 -XX:-ReduceInitialCardMarks -XX:+CMSPermGenSweepingEnabled -XX:CMSInitiatingPermOccupancyFraction=70 -XX:+ExplicitGCInvokesConcurrent -Djava.nio.channels.spi.SelectorProvider=sun.nio.ch.EPollSelectorProvider -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCApplicationConcurrentTime -XX:+PrintHeapAtGC -Xloggc:/data/applogs/heap_trace.txt -XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/applogs/HeapDumpOnOutOfMemoryError -Djava.util.Arrays.useLegacyMergeSort=true"

MySQL

MySQL5.7 的单机部署教程见 单机部署 MySQL 5.7

修改 MySQL 系统参数,其默认值为 1048576(1 M),修改为 1000 M(即 1048576000),修改完需要重启 MySQL,通过修改 /etc/my.cnf,新增 max_allowed_packet 配置

max_allowed_packet=1000M

重启 MySQL

$ systemctl daemon-reload
$ systemctl restart mysql

验证下

mysql> show global variables like 'max_allowed_packet';
+--------------------+------------+
| Variable_name      | Value      |
+--------------------+------------+
| max_allowed_packet | 1048576000 |
+--------------------+------------+
1 row in set (0.16 sec)

新建数据库 cat,Character set 设置为 utf8mb4,Collation 设置为 utf8mb4_unicode_ci。

cat 初始化脚本:https://github.com/dianping/cat/blob/master/script/CatApplication.sql 

共 16 张表,使用 Navicat 工具连接到 MySQL,然后执行即可。

CAT

CAT 部署的准备工作

$ mkdir -p /data/appdatas/cat/
$ chmod -R 777 /data/

在 /data/appdatas/cat 目录下新建 datasource.xml

备注:

  • url  和 password 这两项按照自己部署的 MySQL 实际填写即可
  • url 中 填写 MySQL 的 ip,内网或外网都可以,只要 CAT 能访问即可(考虑到我这是在腾讯云上部署的,而且后续需要使用 Navicat 远程连接,所以我这里填的是公网 ip;如果是在本地虚拟机或者使用公司的物理机等方式部署,那么从头到尾只要是需要写 ip 的地方都是填内网)
<?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://填你的:3306/cat]]></url>
            <user>root</user>
            <password>填你的</password>
            <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
        </properties>
    </data-source>
</data-sources>

在 /data/appdatas/cat 目录下新建 client.xml(如果你想监控 CAT 本身的服务的话)

其实,如果不想通过 CAT 来监控 CAT 自身的话,那么在部署 CAT 服务端的机器上是不需要配置 client.xml 的,该文件是应用项目接入 CAT 时,需要在部署应用的机器上创建的。

PS:因为我是在腾讯云主机上部署的 CAT 单机版,内网 IP 是 10.0.4.9;所以下面的 ip 内容填该内网 IP 即可(不管是腾讯云还是阿里云,又或者是公司的物理主机,或者本机的虚拟机,这里的 ip 均填写内网即可)

<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
    <servers>
        <server ip="10.0.4.9" port="2280" http-port="8090"/>
    </servers>
</config>

因为自己打包会遇到一些问题,所以这里采用官方提供的 war 包,下载地址为:http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/cat-home-3.0.0.war

$ cd /usr/local/soft
$ wget http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/cat-home-3.0.0.war
$ mv cat-home-3.0.0.war cat.war
$ mv cat.war /usr/local/tomcat/webapps

部署 tomcat

切换到 bin 目录下,执行 ./startup.sh 即可,操作如下:

$ cd /usr/local/tomcat/bin
$ ./startup.sh

 客户端配置:http://填你的:8090/cat/s//cat/s/config?op=routerConfigUpdate

如果你是在腾讯云、阿里云上部署的话,防火墙安或安全组需要开启 8090 端口;

公司的局域网环境下或者本机的虚拟机上部署的话,则不用。

注意:这里涉及到的 ip 全部使用内网 ip!

<?xml version="1.0" encoding="utf-8"?>
<router-config backup-server="10.0.4.9" backup-server-port="2280">
   <default-server id="10.0.4.9" weight="1.0" port="2280" enable="true"/>
   <network-policy id="default" title="默认" block="false" server-group="default_group">
   </network-policy>
</router-config>

服务端配置:http://填你的:8090/cat/s/config?op=serverConfigUpdate

注意:

  1. 这里涉及到的 ip 全部使用内网 ip!
  2. 若没有使用 HDFS 的话,那么请忽略 storage 标签的内容
<?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="10.0.4.9:8090"/>
      </properties>
      <storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="2" local-logivew-storage-time="1" har-mode="true" upload-thread="5">
         <hdfs id="dump" max-size="128M" server-uri="hdfs://127.0.0.1/" base-dir="/user/cat/dump"/>
         <harfs id="dump" max-size="128M" server-uri="har://127.0.0.1/" base-dir="/user/cat/dump"/>
         <properties>
            <property name="hadoop.security.authentication" value="false"/>
            <property name="dfs.namenode.kerberos.principal" value="hadoop/dev80.hadoop@testserver.com"/>
            <property name="dfs.cat.kerberos.principal" value="cat@testserver.com"/>
            <property name="dfs.cat.keytab.file" value="/data/appdatas/cat/cat.keytab"/>
            <property name="java.security.krb5.realm" value="value1"/>
            <property name="java.security.krb5.kdc" value="value2"/>
         </properties>
      </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="10.0.4.9">
      <properties>
         <property name="job-machine" value="true"/>
         <property name="send-machine" value="true"/>
         <property name="alarm-machine" value="true"/>
      </properties>
   </server>
</server-config>

以上两步配置完后,最好重启下 CAT

再次 http://填你的:8090/cat/r/top?op=view&domain=cat 进入 CAT 的 Dashboard

发现 CAT服务端正常 变成绿色的话,就算大功告成了!

若在公司需要部署 CAT 测试环境集群的话,请参考:

集群部署 CAThttps://blog.csdn.net/weixin_43563446/article/details/123111513

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值