tomcat搭建及负载均衡
Apache与tomcat的区别
Apache与tomcat都可以作为独立的web服务器来运行,但是apache不能解释java程序,(jsp,serverlet)
Apache是普通的服务器,本身只支持html既普通网页,不过可以通过插件支持php,还可以与tomcat连通(单向Apache连接tomcat就是说通过Apache可以访问tomcat资源。相反,如果没有连通,apache则是访问不了java程序编写的页面)。
Apache和tomcat是独立的,在通一台服务器上可以集成。
准备设备3台;
设备1 192.168.217.11 tomcat
设备2 192.168.217.12 tomcat
设备3 192.168.217.13 nginx
三台设设备系统版本:CentOS Linux release 7.6.1810 (Core)
tomcat版本:apache-tomcat-8.5.73.tar
DJK版本:jdk-8u91-linux-x64.tar
nginx版本:nginx-1.12.2.tar
设备1、2安装tomcat
删除原有java环境
[root@localhost ~]# rm -rf /usr/bin/java
关闭防火墙
[root@localhost ~]# systemctl stop firewalld
查看拖入的安装包
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg
apache-tomcat-8.5.73.tar.gz jdk-8u91-linux-x64.tar.gz
解压缩
[root@localhost ~]# tar -zxf apache-tomcat-8.5.73.tar.gz -C /usr/src/
[root@localhost ~]# tar -zxf jdk-8u91-linux-x64.tar.gz
[root@localhost ~]# mv /usr/src/apache-tomcat-8.5.73/ /usr/local/tomcat
查看jdk的解压文件
[root@localhost ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg jdk-8u91-linux-x64.tar.gz
apache-tomcat-8.5.73.tar.gz jdk1.8.0_91
[root@localhost ~]# mv jdk1.8.0_91/ /usr/local/java
添加配置路径
[root@localhost ~]# vim /etc/profile
最后添加配置路径
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export CLASSPATH=$JAVA_HOME/lib:$JRE_HMOE/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
重新加载依赖环境
[root@localhost ~]# source /etc/profile
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin:/usr/local/java/jre/bin
启动脚本
[root@localhost ~]# sh /usr/local/tomcat/bin/startup.sh
查看端口
[root@localhost ~]# netstat -anput | grep tomcat
[root@localhost ~]# netstat -anput | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 10899/java
curl 192.168.217.11:8080
curl 192.168.217.12:8080
修改配置文件;
[root@localhost ~]# cat /usr/local/tomcat/conf/server.xml
[ <Host name="localhost" appBase="vvv" #修改appBase 后面路径 (也可不修改)
unpackWARs="true" autoDeploy="true">
添加以下内容
<Context path="vvv" docBase="/vvv"
reloadeable="false" crossContext="true" />
[root@localhost ~]# mkdir /vvv
[root@localhost ~]# echo tomcat1 > /vvv/index.jsp 设备2 输入tomcat 2222 #便于区分 两个内容不一样
没有路径的优化 关闭的命令
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
[root@localhost ~]# netstat -anput | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 11690/java
tcp6 0 0 ::1:44526 ::1:8080 TIME_WAIT -
设备1
[root@localhost ~]# curl 192.168.217.11:8080/vvv/index.jsp
tomcat1
设备2
[root@localhost ~]# curl 192.168.217.12:8080/vvv/index.jsp
tomcat 2222
设备3 代理服务器
安装依赖
[root@localhost ~]# yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel openssl openssl-devel
解压
[root@localhost ~]# tar -zxf nginx-1.12.2.tar.gz -C /usr/src
[root@localhost ~]# cd /usr/src/nginx-1.12.2/
编译检查
[root@localhost nginx-1.12.2]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
编译安装
[root@localhost nginx-1.12.2]# make && make install
建立软连接
[root@localhost nginx-1.12.2]# ln -s /usr/local/nginx/sbin/* /usr/local/sbin/
修改配置文件
[root@localhost nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf
http 与 server 之间添加 负载均衡
upstream tomcatserver {
server 192.168.217.11:8080 weight=1;
server 192.168.217.12:8080 weight=1;
}
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
# root html; #注释 (此处不住注释 nginx 网页仍然存在)
# index index.html index.htm; #注释
proxy_pass http://tomcatserver; #添加 名字可自己编写
}
#error_page 404 /404.html;
[root@localhost nginx-1.12.2]# killall -9 nginx #杀死nginx进程
[root@localhost nginx-1.12.2]# nginx #重启
[root@localhost nginx-1.12.2]# nginx -s reload #加载配置文件
[root@localhost nginx-1.12.2]# nginx #重启
验证负载均衡
[root@localhost nginx-1.12.2]# curl 192.168.217.13/vvv/index.jsp
tomcat1
[root@localhost nginx-1.12.2]# curl 192.168.217.13/vvv/index.jsp
tomcat 2222
总结:
设备2 安装tomcat 时遇到一下问题
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
六月 11, 2022 2:32:32 下午 org.apache.catalina.startup.Catalina stopServer
严重: Could not contact [localhost:8005]. Tomcat may not be running.
六月 11, 2022 2:32:32 下午 org.apache.catalina.startup.Catalina stopServer
严重: Catalina.stop:
java.net.ConnectException: 拒绝连接
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:504)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:391)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:481)
经过检查使用了很多方法仍未解决,最终 执行了此命令source /etc/profile 发现成功解决
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
六月 11, 2022 2:32:32 下午 org.apache.catalina.startup.Catalina stopServer
严重: Could not contact [localhost:8005]. Tomcat may not be running.
六月 11, 2022 2:32:32 下午 org.apache.catalina.startup.Catalina stopServer
严重: Catalina.stop:
java.net.ConnectException: 拒绝连接
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at org.apache.catalina.startup.Catalina.stopServer(Catalina.java:504)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.stopServer(Bootstrap.java:391)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:481)
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@localhost ~]# ^C
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
[root@localhost ~]# vim /etc/profile
[root@localhost ~]# source /etc/profile
[root@localhost ~]# sh /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@localhost ~]# netstat -anput | grep tomcat
[root@localhost ~]# netstat -anput | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 74311/java
[root@localhost ~]# vim /usr/local/tomcat/conf/server.xml
[root@localhost ~]# vim /vvv/index.jsp
[root@localhost ~]# /usr/local/tomcat/bin/shutdown.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
[root@localhost ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java/jre
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
[root@localhost ~]# netstat -anput | grep 8080
tcp6 0 0 :::8080 :::* LISTEN 74866/java
tcp6 0 0 ::1:56564 ::1:8080 TIME_WAIT -