Tomcat集群及负载均衡

2021-11-10 15:22:57 浏览数 (1)

1.tomcat的定义

tomcat服务器是轻量级的Web应用服务器,普遍适用于中小型企业,免费开源。

除了能够处理html的静态页面,它还支持着serverlet和JSP的规范

serverlet:交互式浏览和修改数据,生成动态的Web页面--java语言实现的接口

2.tomcat的搭建

  • 将预先下载好jdk解压,并更名为jdk,移动到/usr/local/目录下

tar -zxf jdk-8u181-linux-x64.tar.gz

mv jdk-1.8.0_181 jdk

mv jdk /usr/local

配置jdk环境变量

vim /etc/profile

写入如下:JAVA_HOME=/usr/local/jdk

PATH=$JAVA_HOME/bin:$PATH

CLASSPATH=$JAVA_HOME/jre/lib/txt:$JAVA_HOME/lib/tools.jar

export JAVA_HOME PATH CLASSPATH

然后生效source /etc/profile

java -version #查看是否安装成功

  • 将预先下载好的tomcat包解压,并更名为tomcat,移动到/usr/local/目录下

tar -zxf apache-tomcat-9.0.54 (2).tar.gz

mv apache-tomcat-9.0.54 tomcat

mv tomcat /usr/local

  • 在一步虚拟机上部署多个tomcat,可以利用cp,并修改默认的8080端口号

tomcat三个端口的作用,8005:SHUTDOWN--关闭时使用

8009:AJP端口,容器使用

8080:应用

cp tomcat tomcat1

cp tomcat tomcat2

sed -i 's#8080#8081#g' /usr/local/tomcat1

sed -i 's#8005#8006#g' /usr/local/tomcat1

sed -i 's#8009#8010#g' /usr/local/tomcat1

sed -i 's#8080#8082#g' /usr/local/tomcat2

sed -i 's#8005#8007#g' /usr.local/tomcat2

sed -i 's#8009#8011#g' /usr/local/tomcat2

  • 对以上端口进行开放

firewall-cmd --zone=public --add-port=8080/tcp --permanent

firewall-cmd --zone=public --add-port=8081/tcp --permanent

firewall-cmd --zone=public --add-port=8082/tcp --permanent

firewall-cmd --reload

  • 启动tomcat,tomcat1,2并在网页上验证

以tomcat1位例 cd /usr/local/tomcat/bin/ ./startup.sh

ss -ltnp | grep java #查询tomcat运行

2.Nginx负载均衡

现在的网络应用由传统的C/S转为B/S架构,为了更好提升用户的体验,需要对系统集群进行优化,负载均衡器对请求通过某种算法进行分发,使server服务器能够协同一致,作为一个整体对外部请求进行处理,大大提升了系统的稳定以及性能。

常见的负载均衡实现方式有硬件如F5,软件(LVS,Nginx,haproxy)

软件负载均衡分为四层和七层,四层在前段与后端间相当于是路由的角色,处理转发更高效;七层更加的智能化,安全性高,性能受限。

说了这么多的废话,我们开始吧!

nginx源码包安装

tar xf nginx-1.20.1.tar.gz

cd nginx-1.20.1

groupadd nginx

useradd -s /sbin/nologin nginx -g nginx

yum -y install gcc gcc-c pcre pcre-devel zlib zlib-devel openssl openssl-devel

./configure --prefix=/usr/local/nginx

--user=nginx

--group=nginx

--with-pcre

--with-http_stub_status_module

--with-http_ssl_module

--with-http_gzip_static_module

make && make install

./nginx -v #在sbin下,查看nginx是否安装成功,若没有则删除重新编译

安装好, 设置环境变量

ln -s /usr/local/nginx/sbin/nginx /usr/sbin

设置nginx启动脚本

vim /etc/init.d/nginx

#!/bin/bash

# chkconfig: - 99 20

PROG="/usr/local/nginx/sbin/nginx"

PIDF="/usr/local/nginx/logs/nginx.pid"

case "$1" in

start)

$PROG

;;

stop)

kill -s QUIT $(cat $PIDF)

;;

restart)

$0 stop

$0 start

;;

reload)

kill -s HUP $(cat $PIDF)

;;

*)

echo "USAGE:$0 {start | stop | restart | reload}"

exit 1

esac

配置

cd /usr/local/nginx/conf

vim nginx.conf

由于我的80端口被占用,故改为8090,常见默认是80端口;在之后的测试中需要在域名后加上端口号才可以访问

nginx -t

service nginx reload

登入进行测试如下

nginx默认的算法是轮训,采用权重可以来进行分配,查看logs可以看到已经生效

期间若是提示nginx.pid丢失

可以pkill -9 nginx

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

service nginx reload

查询http可用端口semanager port -l | grep http

0 人点赞