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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 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


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
23天前
|
监控 Java Shell
监控堆外第三方监控工具Zabbix
监控堆外第三方监控工具Zabbix
33 5
|
20天前
|
监控 安全 前端开发
使用 Zabbix 监控堆外应用
使用 Zabbix 监控堆外应用
37 9
|
19天前
|
监控 数据可视化 Java
zabbix全面的监控能力
zabbix全面的监控能力
44 7
|
4月前
|
监控 安全 Linux
在Linux中,zabbix如何监控脑裂?
在Linux中,zabbix如何监控脑裂?
|
1月前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
OceanBase社区版可以通过Zabbix监控
87 7
|
2月前
|
SQL 监控 数据库
OceanBase社区版可以通过Zabbix监控
【10月更文挑战第5天】随着OceanBase社区版的广泛应用,企业纷纷采用这一高性能、高可用的分布式数据库系统。为了确保系统的稳定运行,使用成熟的Zabbix监控工具进行全面监控至关重要。本文通过具体示例介绍了如何配置Zabbix监控OceanBase,包括安装配置、创建监控模板和监控项、编写脚本、设置触发器及图形展示等步骤,帮助读者快速上手,及时发现并解决问题,确保业务始终处于最佳状态。
85 2
|
3月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
82 2
zabbix agent集成percona监控MySQL的插件实战案例
|
7月前
|
算法 Java 应用服务中间件
|
4月前
|
缓存 负载均衡 Java
Tomcat多实例及nginx反向代理tomcat
运行多个Tomcat实例并使用nginx作为反向代理
89 3
|
5月前
|
监控 安全 Java
使用JMX监控Tomcat
【7月更文挑战第18天】

推荐镜像

更多
下一篇
DataWorks