• tomcat动静分离和负载均衡


    目录

    引言

    1.实验环境搭建

    2.部署Nginx服务器及配置静态页面Web服务

    3.部署Tomcat服务及配置动态页面Web服务

    4.实验验收

    动态页面

    静态页面


    引言

    tomcat服务既可以处理动态页面,也可以处理静态页面;但其处理静态页面的速度远远不如nginx和apache服务,但ngingx和apache服务无法直接处理动态页面,下文就讲述了nginx和tomcat组合使用,实现动静分离和负载均衡;目前很多大型网站都应用Nginx服务器作为后端网站程序的反向代理及负载均衡器,提升整个站点的负载并发能力。

    • standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。

      反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp代理给Tomcat

    • LNMT:Linux + Nginx + MySQL + Tomcat

      LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat

      前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更适合

      LNMT:Linux + Nginx + MySQL + Tomcat

    • 多级代理

      LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

    动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一起提供服务。如何把并发的压力分摊,这就需要调度,采用一定的调度策略,将请求分发给不同的服务器,这就是Load Balance负载均衡。当单机Tomcat,演化出多机多级部署的时候,一个问题便凸显出来,这就是Session。而这个问题的由来,都是由于HTTP协议在设计之初没有想到未来的发展。

    在部署Tomcat之前,要部署好环境(JDK),因为JDK是Tomcat运行的必要环境

    1.实验环境搭建

    根据实验环境,客户端可以用真机模拟,此实验需要五台虚拟机,Centos7-1Nginx代理服务器,Centos7-2和Centos7-3作为负载均衡第一分支的后端服务器,Centos7-4和Centos7-6作为负载均衡第二分支的后端服务器;Centos7-2和Centos7-4作为处理静态资源的服务器,需要搭建Nginx服务;Centos7-3和Centos7-6作为处理动态资源的服务器,需要搭建Tomcat服务

    五台虚拟机统一关闭防火墙

    2.部署Nginx服务器及配置静态页面Web服务

    Centos7-1、Centos7-2、Centos7-4都要部署Nginx服务

    1. [root@7-1 opt]#yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
    2. #安装依赖关系包
    3. [root@7-1 opt]#useradd -M -s /sbin/nologin nginx
    4. #新建Nginx用户 方便管理
    5. [root@7-1 opt]#yum install nginx -y
    6. [root@7-1 opt]#systemctl start nginx
    7. [root@7-1 opt]#systemctl status nginx
    8. ● nginx.service - The nginx HTTP and reverse proxy server
    9. Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
    10. Active: active (running) since 六 2024-03-02 13:40:43 CST; 3s ago
    11. Process: 2436 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
    12. Process: 2433 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
    13. Process: 2429 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
    14. Main PID: 2438 (nginx)
    15. CGroup: /system.slice/nginx.service
    16. ├─2438 nginx: master process /usr/sbin/nginx
    17. ├─2439 nginx: worker process
    18. └─2440 nginx: worker process
    19. 302 13:40:42 7-1 systemd[1]: Starting The nginx HTTP and reverse prox.....
    20. 302 13:40:43 7-1 nginx[2433]: nginx: the configuration file /etc/ngin...ok
    21. 302 13:40:43 7-1 nginx[2433]: nginx: configuration file /etc/nginx/ng...ul
    22. 302 13:40:43 7-1 systemd[1]: Started The nginx HTTP and reverse proxy...r.
    23. Hint: Some lines were ellipsized, use -l to show in full.

    1. [root@7-2 ~]#yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
    2. #安装依赖关系包
    3. [root@7-2 ~]#useradd -M -s /sbin/nologin nginx
    4. #新建Nginx用户 方便管理
    5. [root@7-2 ~]#systemctl start nginx
    6. [root@7-2 ~]#systemctl status nginx
    7. ● nginx.service - The nginx HTTP and reverse proxy server
    8. Loaded: loaded (/usr/lib/systemd/system/nginx.service; static; vendor preset: disabled)
    9. Active: active (running) since Sat 2024-03-02 00:32:49 EST; 5s ago
    10. Process: 1986 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
    11. Process: 1983 ExecStartPre=/usr/local/nginx/sbin/nginx -t (code=exited, status=0/SUCCESS)
    12. Main PID: 1988 (nginx)
    13. CGroup: /system.slice/nginx.service
    14. ├─1988 nginx: master process /usr/local/nginx/sbin/nginx
    15. └─1989 nginx: worker process
    16. Mar 02 00:32:49 node2.localdomain systemd[1]: Starting The nginx HTTP and ....
    17. Mar 02 00:32:49 node2.localdomain nginx[1983]: nginx: the configuration fi...k
    18. Mar 02 00:32:49 node2.localdomain nginx[1983]: nginx: configuration file /...l
    19. Mar 02 00:32:49 node2.localdomain systemd[1]: Failed to read PID from file...t
    20. Mar 02 00:32:49 node2.localdomain systemd[1]: Started The nginx HTTP and r....
    21. Hint: Some lines were ellipsized, use -l to show in full.
    22. [root@7-2 ~]#cd /usr/local/nginx/
    23. [root@7-2 nginx]#ls
    24. client_body_temp fastcgi_temp logs sbin uwsgi_temp
    25. conf html proxy_temp scgi_temp
    26. [root@7-2 nginx]#cd html/
    27. [root@7-2 html]#ls
    28. 50x.html index.html
    29. [root@7-2 html]#mkdir /usr/local/nginx/html/static
    30. [root@7-2 html]#ls
    31. 50x.html index.html static
    32. [root@7-2 html]#cd static/
    33. [root@7-2 static]#rz -E
    34. rz waiting to receive.
    35. [root@7-2 static]#ls
    36. f32b966ddaf1002dfa4b2f6c556e57f0.jpg
    37. [root@7-2 static]#mv f32b966ddaf1002dfa4b2f6c556e57f0.jpg nginx.jpg
    38. [root@7-2 static]#ls
    39. nginx.jpg
    40. [root@7-2 static]#vim /usr/local/nginx/conf/nginx.conf

    静态要加jpg,路径要修改为/usr/local/nginx/html/static 

    1. [root@7-4 ~]#yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
    2. #安装依赖关系包
    3. [root@7-4 ~]#useradd -M -s /sbin/nologin nginx
    4. #新建Nginx用户 方便管理
    5. [root@7-4 ~]#systemctl start nginx
    6. [root@7-4 ~]#systemctl status nginx
    7. ● nginx.service - The nginx HTTP and reverse proxy server
    8. Loaded: loaded (/usr/lib/systemd/system/nginx.service; static; vendor preset: disabled)
    9. Active: active (running) since 六 2024-03-02 13:33:00 CST; 12s ago
    10. Process: 1962 ExecStart=/usr/local/nginx/sbin/nginx (code=exited, status=0/SUCCESS)
    11. Process: 1960 ExecStartPre=/usr/local/nginx/sbin/nginx -t (code=exited, status=0/SUCCESS)
    12. Main PID: 1964 (nginx)
    13. CGroup: /system.slice/nginx.service
    14. ├─1964 nginx: master process /usr/local/nginx/sbin/nginx
    15. └─1965 nginx: worker process
    16. 302 13:32:59 G.D systemd[1]: Starting The nginx HTTP and reverse prox.....
    17. 302 13:33:00 G.D nginx[1960]: nginx: the configuration file /usr/loca...ok
    18. 302 13:33:00 G.D nginx[1960]: nginx: configuration file /usr/local/ng...ul
    19. 302 13:33:00 G.D systemd[1]: Started The nginx HTTP and reverse proxy...r.
    20. Hint: Some lines were ellipsized, use -l to show in full.
    21. [root@7-4 ~]#cd /usr/local/nginx/html/
    22. [root@7-4 html]#ls
    23. 50x.html index.html
    24. [root@7-4 html]#mkdir static
    25. [root@7-4 html]#cd static/
    26. [root@7-4 static]#ls
    27. [root@7-4 static]#rz -E
    28. rz waiting to receive.
    29. [root@7-4 static]#ls
    30. f32b966ddaf1002dfa4b2f6c556e57f0.jpg
    31. [root@7-4 static]#mv f32b966ddaf1002dfa4b2f6c556e57f0.jpg nginx.jpg
    32. [root@7-4 static]#ls
    33. nginx.jpg

    3.部署Tomcat服务及配置动态页面Web服务

    Centos7-3和Centos7-6需要部署Tomcat服务

    1. [root@7-3 ~]#cd /opt
    2. [root@7-3 opt]#rz -E
    3. rz waiting to receive.
    4. [root@7-3 opt]#ls
    5. jdk-8u291-linux-x64.tar.gz
    6. [root@7-3 opt]#tar xf jdk-8u291-linux-x64.tar.gz
    7. [root@7-3 opt]#ls
    8. jdk1.8.0_291 jdk-8u291-linux-x64.tar.gz
    9. [root@7-3 opt]#java -version
    10. openjdk version "1.8.0_131"
    11. OpenJDK Runtime Environment (build 1.8.0_131-b12)
    12. OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
    13. [root@7-3 opt]#mv jdk1.8.0_291/ /usr/local/
    14. [root@7-3 opt]#cd /usr/local/
    15. [root@7-3 local]#ls
    16. bin games jdk1.8.0_291 lib64 nginx share
    17. etc include lib libexec sbin src
    18. [root@7-3 local]#vim /etc/profile.d/jdk.sh
    19. [root@7-3 local]#cat /etc/profile.d/jdk.sh
    20. export JAVA_HOME=/usr/local/jdk
    21. export PATH=$JAVA_HOME/bin:$PATH
    22. export JRE_HOME=$JAVA_HOME/jre
    23. export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
    24. [root@7-3 local]#source /etc/profile.d/jdk.sh
    25. [root@7-3 local]#echo $PATH
    26. /usr/local/jdk1.8.0_91/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
    27. [root@7-3 local]#ln -s jdk1.8.0_291/ jdk
    28. [root@7-3 ~]#java -version
    29. java version "1.8.0_291"
    30. Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
    31. Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
    32. [root@7-3 opt]#cd /opt
    33. [root@7-3 opt]#ls
    34. jdk-8u291-linux-x64.tar.gz
    35. [root@7-3 opt]#rz -E
    36. rz waiting to receive.
    37. [root@7-3 opt]#ls
    38. apache-tomcat-9.0.16.tar.gz jdk-8u291-linux-x64.tar.gz
    39. [root@7-3 opt]#tar xf apache-tomcat-9.0.16.tar.gz
    40. [root@7-3 opt]#ls
    41. apache-tomcat-9.0.16 apache-tomcat-9.0.16.tar.gz jdk-8u291-linux-x64.tar.gz
    42. [root@7-3 opt]#cp -r apache-tomcat-9.0.16 /usr/local/
    43. [root@7-3 opt]#cd /usr/local/
    44. [root@7-3 local]#ls
    45. apache-tomcat-9.0.16 etc include lib libexec sbin src
    46. bin games jdk1.8.0_291 lib64 nginx share
    47. [root@7-3 local]#ln -s apache-tomcat-9.0.16/ tomcat
    48. [root@7-3 local]#ls
    49. apache-tomcat-9.0.16 etc include lib libexec sbin src
    50. bin games jdk1.8.0_291 lib64 nginx share tomcat
    51. [root@7-3 ~]#ss -natp |grep 8080
    52. LISTEN 0 100 :::8080 :::* users:(("java",pid=3237,fd=57))
    53. [root@7-3 ~]#cd /usr/local/tomcat/webapps/
    54. [root@7-3 webapps]#ls
    55. docs examples host-manager manager ROOT
    56. [root@7-3 webapps]#mkdir test
    57. [root@7-3 webapps]#ls
    58. docs examples host-manager manager ROOT test
    59. [root@7-3 webapps]#cd test/
    60. [root@7-3 test]#ls
    61. [root@7-3 test]#vim index.jsp
    62. [root@7-3 test]#cat index.jsp
    63. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    64. <html>
    65. <head>
    66. <tile>JSP test1 page </title>
    67. </head>
    68. <boby>
    69. <% out.println("动态页面1,http://www.test1.com");%>
    70. </boby>
    71. </html>
    72. [root@7-3 test]#vim /usr/local/tomcat/conf/server.xml
    73. [root@7-3 test]#/usr/local/tomcat/bin/startup.sh
    74. Using CATALINA_BASE: /usr/local/tomcat
    75. Using CATALINA_HOME: /usr/local/tomcat
    76. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    77. Using JRE_HOME: /usr/local/jdk/jre
    78. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    79. Tomcat started.
    80. [root@7-4 static]#vim /usr/local/nginx/conf/nginx.conf

    1. [root@7-6 ~]#cd /opt
    2. [root@7-6 opt]#rz -E
    3. rz waiting to receive.
    4. [root@7-6 opt]#ls
    5. jdk-8u291-linux-x64.tar.gz
    6. [root@7-6 opt]#tar xf jdk-8u291-linux-x64.tar.gz
    7. [root@7-6 opt]#ls
    8. jdk1.8.0_291 jdk-8u291-linux-x64.tar.gz
    9. [root@7-6 opt]#java -version
    10. openjdk version "1.8.0_131"
    11. OpenJDK Runtime Environment (build 1.8.0_131-b12)
    12. OpenJDK 64-Bit Server VM (build 25.131-b12, mixed mode)
    13. [root@7-6 opt]#mv jdk1.8.0_291/ /usr/local/
    14. [root@7-6 opt]#cd /usr/local/
    15. [root@7-6 local]#ls
    16. bin games jdk1.8.0_291 lib64 nginx share
    17. etc include lib libexec sbin src
    18. [root@7-6 local]#ln -s jdk1.8.0_291/ jdk
    19. [root@7-6 local]#vim /etc/profile.d/jdk.sh
    20. [root@7-6 local]#cat /etc/profile.d/jdk.sh
    21. export JAVA_HOME=/usr/local/jdk
    22. export PATH=$JAVA_HOME/bin:$PATH
    23. export JRE_HOME=$JAVA_HOME/jre
    24. export CLASSPATH=$JAVA_HOME/lib/:$JRE_HOME/lib/
    25. [root@7-6 local]#source /etc/profile.d/jdk.sh
    26. [root@7-6 ~]#java -version
    27. java version "1.8.0_291"
    28. Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
    29. Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
    30. [root@7-6 local]#cd /opt/
    31. [root@7-6 opt]#ls
    32. jdk-8u291-linux-x64.tar.gz
    33. [root@7-6 opt]#rz -E
    34. rz waiting to receive.
    35. [root@7-6 opt]#ls
    36. apache-tomcat-9.0.16.tar.gz jdk-8u291-linux-x64.tar.gz
    37. [root@7-6 opt]#tar xf apache-tomcat-9.0.16.tar.gz
    38. [root@7-6 opt]#cp -r apache-tomcat-9.0.16 /usr/local/
    39. [root@7-6 opt]#cd /usr/local/
    40. [root@7-6 local]#ls
    41. apache-tomcat-9.0.16 etc include lib libexec sbin src
    42. bin games jdk1.8.0_291 lib64 nginx share
    43. [root@7-6 local]#ln -s apache-tomcat-9.0.16/ tomcat
    44. [root@7-6 local]#ls
    45. apache-tomcat-9.0.16 etc include lib libexec sbin src
    46. bin games jdk1.8.0_291 lib64 nginx share tomcat
    47. [root@7-6 ~]#/usr/local/tomcat/bin/startup.sh
    48. Using CATALINA_BASE: /usr/local/tomcat
    49. Using CATALINA_HOME: /usr/local/tomcat
    50. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    51. Using JRE_HOME: /usr/local/jdk/jre
    52. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    53. Tomcat started.
    54. [root@7-6 ~]#ss -natp|grep 8080
    55. LISTEN 0 100 :::8080 :::* users:(("java",pid=2811,fd=57))
    56. [root@7-6 ~]#cd /usr/local/tomcat/webapps/
    57. [root@7-6 webapps]#ls
    58. docs examples host-manager manager ROOT
    59. [root@7-6 webapps]#mkdir test
    60. [root@7-6 webapps]#ls
    61. docs examples host-manager manager ROOT test
    62. [root@7-6 webapps]#cd test/
    63. [root@7-6 test]#ls
    64. [root@7-6 test]#vim index.jsp
    65. [root@7-6 test]#cat index.jsp
    66. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    67. <html>
    68. <head>
    69. <tile>JSP test2 page </title>
    70. </head>
    71. <boby>
    72. <% out.println("动态页面2,http://www.test2.com");%>
    73. </boby>
    74. </html>
    75. [root@7-6 test]#vim /usr/local/tomcat/conf/server.xml
    76. [root@7-6 test]#/usr/local/tomcat/bin/startup.sh
    77. Using CATALINA_BASE: /usr/local/tomcat
    78. Using CATALINA_HOME: /usr/local/tomcat
    79. Using CATALINA_TMPDIR: /usr/local/tomcat/temp
    80. Using JRE_HOME: /usr/local/jdk/jre
    81. Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    82. Tomcat started.

    4.实验验收

    动态页面

    [root@7-1 opt]#tail -f /var/log/nginx/access.log 

    静态页面

    [root@7-1 opt]#tail -f /var/log/nginx/access.log 

  • 相关阅读:
    借助Log360实现综合可见性的增强网络安全
    语音信号处理:预处理【预加重、分帧、加窗】
    DPDK基础组件一(mbuf、ring、pktmbuf_pool)
    vue之axios的封装
    RCE(Pikachu)
    【MindSpore易点通】如何将PyTorch源码转成MindSpore低阶APIP,并在Ascend芯片上实现单机单卡训练
    tiup cluster upgrade
    为什么进程切换比线程切换代价大,效率低?【TLB:页表缓存/快表】
    人工智能 多元线性回归(一)
    外包干了3个多月,技术退步明显。。。。
  • 原文地址:https://blog.csdn.net/zk584715834/article/details/136476877