tomcat多实例优化及zabbix监控群集(二)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: tomcat多实例优化及zabbix监控群集

搭建zrlog

  1. 安装配置数据库

部署依旧需要数据库,这里还是使用tomcat主机,就不安装数据库了。

1. [root@tomcat ~]# mysql -uroot -p123
2. mysql> create database zrlog default character set utf8;
3. Query OK, 1 row affected (0.01 sec)
4. 
5. mysql> grant all on zrlog.* to zrlog@'localhost' identified by '123456';
6. Query OK, 0 rows affected (0.00 sec)
7. 
8. mysql> flush privileges;
9. Query OK, 0 rows affected (0.00 sec)
10. 
11. mysql> exit
12. Bye
  1. 上传代码
[root@tomcat ~]# cp -rp zrlog.war /opt/tomcat/webapps/
  1. web页面配置

访问http://192.168.8.1:8080/zrlog/

再次访问http://192.168.8.1:8080/zrlog/,就可以看到网站首页了。

zabbix监控tomcat

安装、配置zabbix参考前面文章zabbix部署

  1. tomcat服务器安装zabbix-agent服务
1. [root@tomcat ~]# rpm -ivh /media/zabbix-server/zabbix-agent-4.0.22-1.el7.x86_64.rpm 
2. [root@tomcat ~]# vim /etc/zabbix/zabbix_agentd.conf 
3.  Server=192.168.8.2
4. [root@tomcat ~]# systemctl restart zabbix-agent
  1. tomcat服务器修改配置文件开启远程监控功能

注意!建议把下面的参数放在最前面(注意下面的参数是一行)。

1. [root@tomcat ~]# vim /opt/tomcat/bin/catalina.sh
2. CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.8.1"

重启tomcat

1. [root@tomcat ~]# /opt/tomcat/bin/shutdown.sh 
2. [root@tomcat ~]# /opt/tomcat/bin/startup.sh
3. [root@tomcat ~]# netstat -anpt | grep 12345
4. tcp6       0      0 :::12345                :::*                    LISTEN      106478/java
  1. zabbix服务器上的配置操作

(1)安装java(注意:这里已经完成安装并配置zabbix)

1. [root@zabbix ~]# yum install java-1.8.0 -y
2. [root@zabbix ~]#  java -version
3. openjdk version "1.8.0_262"
4. OpenJDK Runtime Environment (build 1.8.0_262-b10)
5. OpenJDK 64-Bit Server VM (build 25.262-b10, mixed mode)

(2)安装并启动zabbix-java-gateway服务

1. [root@zabbix ~]# rpm -ivh zabbix-java-gateway-4.0.19-1.el7.x86_64.rpm 
2. [root@zabbix ~]# systemctl start zabbix-java-gateway.service

(3)修改zabbix_server.conf配置文件

1. [root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
2. JavaGateway=127.0.0.1
3. JavaGatewayPort=10052
4. StartJavaPollers=5

(4)重启zabbix服务

1. [root@zabbix ~]# systemctl restart httpd
2. [root@zabbix ~]# systemctl restart zabbix-server
3. [root@zabbix ~]# systemctl restart zabbix-java-gateway

4.zabbix网页操作

访问http://192.168.8.2/zabbix,添加主机。

配置→主机→创建主机→主机名称→群组名称→agent接口→jmx接口→模板→选择“Template App Apache Tomcat JMX”和“Template OS Linux→添加→添加

配置后可以在监测中的最新数据或图形中查看tomcat的状态。

tomcat多实例及反向代理

  1. tomcat多实例介绍

其本质就是复制多个tomcat目录,然后修改为不同的端口并启动

代码一致,但是公用一个数据库。

(注意!要去掉 /opt/tomcat/bin/catalina.sh 的监控项)

[root@tomcat ~]# vim /opt/tomcat/bin/catalina.sh

删掉红框中的内容

[root@tomcat ~]# killall java            //关掉java服务
  1. 复制目录
1. [root@tomcat ~]# cd /opt/
2. [root@tomcat opt]# cp -a apache-tomcat-8.5.64 tomcat_01
3. [root@tomcat opt]# cp -a apache-tomcat-8.5.64 tomcat_02
  1. 修改配置文件

使用sed命令修改两个实例的端口号。

1. sed -i 's#8005#8006#g'  tomcat_01/conf/server.xml 
2. sed -i 's#8009#8010#g'  tomcat_01/conf/server.xml
3. sed -i 's#8080#8081#g'  tomcat_01/conf/server.xml 
4. sed -i 's#8005#8007#g'  tomcat_02/conf/server.xml 
5. sed -i 's#8009#8011#g'  tomcat_02/conf/server.xml
6. sed -i 's#8080#8082#g'  tomcat_02/conf/server.xml
  1. 启动多实例
1. [root@tomcat opt]# /opt/tomcat_01/bin/startup.sh 
2. [root@tomcat opt]# /opt/tomcat_02/bin/startup.sh
  1. 查看服务是否启动

  1. 浏览器测试多实例

分别访问8081和8082端口查看tomcat。

tomcat集群

  1. 实验环境准备

web主机:8.3

tomcat主机:8.1 多实例tomcat 8081 8082

  1. 安装配置nginx
[root@web ~]# rpm -ivh /media/nginx-rpm/* --nodeps --force
  1. 创建代理配置文件

分别代理两个端口,这里只使用tomcat主机的端口即可,一般情况下需要两台主机配置tomcat。

1. [root@web ~]# vim /etc/nginx/conf.d/lb.conf
2. upstream java {
3.     server 192.168.8.1:8081;
4.     server 192.168.8.1:8082;
5. }
6. server {
7.     listen       80;
8.     server_name  www.jpress.com;
9.     root   html;
10.     index  index.html index.htm;
11.     location / {
12.         proxy_pass http://java;
13.         proxy_set_header Host $http_host;
14.         proxy_set_header X-Real-IP $remote_addr;
15.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
16.     }
17. }
  1. 检查并启动nginx

安装后需要删除默认配置文件

1. [root@web ~]# rm -rf /etc/nginx/conf.d/default.conf
2. [root@web ~]# nginx -t
3. nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
4. nginx: configuration file /etc/nginx/nginx.conf test is successful
5. [root@web ~]# systemctl restart nginx
  1. 网页访问

访问代理服务器http://192.168.8.3就可以看到tomcat首页内容了。

tomcat安全优化

降权启动

system普通用户启动telnet管理端口保护ajp连接端口保护禁用管理端tomcat性能优化#屏蔽dns查询enableLookups="false";vim /application/tomcat/conf/server.xml

jvm调优

Tomcat最吃内存,只要内存足够,这只猫就跑的很快。如果系统资源有限,那就需要进行调优,提高资源使用率。优化catalina.sh配置文件。在catalina.sh配置文件中添加以下代码:JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms1024m -Xmx1024m -XX:NewSize=512m -XX:MaxNewSize=512m -XX:PermSize=512m -XX:MaxPermSize=512m"server:一定要作为第一个参数,在多个CPU时性能佳-Xms:初始堆内存Heap大小,使用的最小内存,cpu性能高时此值应设的大一些-Xmx:初始堆内存heap最大值,使用的最大内存上面两个值是分配JVM的最小和最大内存,取决于硬件物理内存的大小,建议均设为物理内存的一半。-XX:PermSize:设定内存的永久保存区域-XX:MaxPermSize:设定最大内存的永久保存区域-XX:MaxNewSize:-Xss 15120 这使得JBoss每增加一个线程(thread)就会立即消耗15M内存,而最佳值应该是128K,默认值好像是512k.+XX:AggressiveHeap 会使得 Xms没有意义。这个参数让jvm忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽一个G的swap。-Xss:每个线程的Stack大小-verbose:gc 现实垃圾收集信息-Xloggc:gc.log 指定垃圾收集日志文件-Xmn:young generation的heap大小,一般设置为Xmx的3、4分之一-XX:+UseParNewGC :缩短minor收集的时间-XX:+UseConcMarkSweepGC :缩短major收集的时间

启动tomcat方法

方法1

如果直接使用ansible的shell模块启动tomcat会发现并不能启动成功,需要使用chdir切换工作目录并结合nohub放在后台启动。

下面是一个简单的测试剧本。

1. [root@web ~/tomcat]# cat tomcat.yml 
2. - hosts: tomcat
3.   tasks:
4. 
5.   - name: 01-start-tomcat
6.     shell: chdir=/opt/tomcat/bin nohup ./startup.sh start &
7. 
8.   - name: 02-copy-jpress
9.     copy: 
10.       src: /root/tomcat/jpress.war
11.       dest: /opt/tomcat/webapps
12. ``

(注意nohup表示持续执行

方法2

使用system管理

1. groupadd tomcat -g 1111
2. useradd tomcat -u 1111 -g 1111 -M -s /sbin/nologin
3. id tomcat
4. 
5. 
6. cat >/usr/lib/systemd/system/tomcat.service<<EOF    
7. [Unit]
8. Description=Apache Tomcat Web Application Container
9. After=syslog.target network.target
10.  
11. [Service]
12. Type=forking
13. ExecStart=/opt/tomcat/bin/catalina.sh start
14. ExecReload=/opt/tomcat/bin/catalina.sh restart
15. ExecStop=/opt/tomcat/bin/catalina.sh stop
16. User=tomcat
17.  
18. [Install]
19. WantedBy=multi-user.target
20. EOF
21. systemctl daemon-reload 
22. systemctl start tomcat


相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
存储 SQL 监控
修改Zabbix源码实现监控数据双写,满足业务需求!
虽然对接Elasticsearch后有诸多好处,但是它不往数据库写历史数据了,同时还不再计算趋势数据了。有这么一个场景...
修改Zabbix源码实现监控数据双写,满足业务需求!
|
3月前
|
Arthas 监控 Java
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
Arthas 可以用于监控和诊断在 Windows 系统下部署的 Tomcat 服务
181 2
|
4月前
|
数据采集 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
77 4
|
4月前
|
监控 关系型数据库 机器人
小白带你学习linux的监控平台zabbix
小白带你学习linux的监控平台zabbix
137 0
|
6月前
|
监控 关系型数据库 MySQL
企业实战(8)CentOS 6.8安装Zabbix-agent 5.0监控主机性能与Mysql数据库
企业实战(8)CentOS 6.8安装Zabbix-agent 5.0监控主机性能与Mysql数据库
|
1月前
|
数据采集 监控 数据库
请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
【2月更文挑战第25天】请问OceanBase社区版能否通过zabbix监控,然后将报错信息展现到grafana?
25 2
|
6月前
|
监控
zabbix如何添加自定义监控项
zabbix如何添加自定义监控项
263 0
|
2月前
|
Java 应用服务中间件
优化tomcat的性能
优化tomcat的性能
|
2月前
|
监控 Cloud Native 关系型数据库
使用 Grafana 统一监控展示 - 对接 Zabbix
使用 Grafana 统一监控展示 - 对接 Zabbix
|
4月前
|
监控 Docker 容器
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
Zabbix【部署 03】zabbix-agent2安装配置使用(zabbix-agent2监控docker实例分享)
242 0

推荐镜像

更多