通常情况下一台 Tomcat 站点由于可能出现单点故障及无法应付过多客户复杂多样的请求等问题, 不能单独用于生产环境. 所以我们就需要一套更可靠的解决方案来完善 web 站点架构.
Nginx 是一款非常优秀的 HTTP 服务器软件, 它能够支持高达 50000 个并发连接数的响应, 拥有强大的静态资源处理能力, 运行稳定, 并且内存, CPU 等系统资源消耗非常低. 目前的很多大型网站都应用 Nginx 服务器作为后端网站程序的反向代理及负载均衡器, 来提升整个站点的负载并发能力.
案例环境
案例实施
(1)安装部署 Tomcat 1 服务
- [[email protected] ~]# tar zxf apache-tomcat-8.5.16.tar.gz -C /usr/src
- [[email protected] ~]# mv /usr/src/apache-tomcat-8.5.16/ /usr/local/tomcat8
- [[email protected] ~]# VIM /usr/local/tomcat8/conf/server.xml
- ........................ // 省略部分内容
- <Host name="localhost" appBase="webapps"
- unpackWARs="true" autoDeploy="true">
- //host 定义一个虚拟主机, 域名为 localhost,appBase 定义应用程序基准目录, unpackWARs 定义是否自动解压, autoDeploy 定义是否自动部署
- ........................ // 省略部分内容, 添加以下内容
- <Context docBase="/web/webapp" path=""reloadable="false">
- </Context>
- //context 定义一个 Web 应用(虚拟目录),path 指定访问目录, docBase 定义网页目录, 当应用程序发生变化时候, 自动装载, 不用重启 tomcat(手动添加 <Context ......></Context > 内容)
- </Host>
- [[email protected] ~]# /usr/local/tomcat8/bin/startup.sh
- // 启动 Tomcat 服务
- [[email protected] ~]# mkdir -p /Web/webapp
- [[email protected] ~]# VIM /Web/webapp/index.jsp
- <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
- <html>
- <head>
- <title>JSP test1 page</title>
- </head>
- <body>
- <% out.println("welcome to test");%>
- </body>
- </HTML>
- [[email protected] ~]# netstat -anpt | grep 8080
- tcp6 0 0 :::8080 :::* LISTEN 18026/java
- [[email protected] ~]# firewall-cmd --add-port=8080/tcp
- success
- // 开启相应的端口, 不建议关闭防火墙
客户端访问测试:
搭建 Tomcat 服务器详细信息及软件包网盘下载点就参考博文: 部署 Tomcat(Web)服务详解 https://blog.51cto.com/14157628/2435536
(2)安装部署 Tomcat 2 服务
搭建方法跟搭建第一台 Tomcat 服务器一样(实际生产环境中, 主页内容必须一致, 但是, 为了看出实验效果, 建议主页内容不要一样)
客户机访问效果:
(3)安装部署 Nginx 服务
- [[email protected] ~]# yum -y install pcre-devel zlib-devel openssl-devel
- //pcre 为 nginx 提供 rewrite 所需的正则表达式语法, zlib: 提供压缩, openssl-devel: 提供 ssl 加密
- [[email protected] ~]# groupadd www
- [[email protected] ~]# useradd -g www www -s /bin/false
- // 创建所需的程序用户及组 (/bin/false) 这个 shell 非常严格, 无论通过何种方式登录系统都不允许
- [[email protected] ~]# tar zxf nginx-1.12.0.tar.gz -C /usr/src
- [[email protected] ~]# cd /usr/src/nginx-1.12.0/
- [[email protected] nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=www --group=www --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module --with-http_ssl_module
- [[email protected] nginx-1.12.0]# make && make install
Nginx 服务详细介绍及相关软件包, 请参考博文: 基于 Nginx 搭建 Web 服务器及虚拟主机相关配置详解 https://blog.51cto.com/14157628/2434832
各配置项含义:
- // --prefix=: 指定安装目录;
- //--user=,--group=: 指定运行的用户和组;
- //--with-file-aio: 启用文件修改支持;
- //--with-http_stub_status_module: 启用状态统计;
- // --with-http_gzip_static_module: 启用 gzip 静态压缩;
- //--with-http_flv_module: 启用 flv 模块, 提供寻求内存使用基于时间的偏移量文件;
- // --with-http_ssl_module : 启用 SSL 模块;
- [[email protected] nginx-1.12.0]# VIM /usr/local/nginx/conf/nginx.conf
- // 该 Nginx 服务配置文件
- http {
- .................. // 省略部分内容
- upstream tomcat_server {
- server 192.168.1.2:8080 weight=1;
- server 192.168.1.3:8080 weight=1;
- }
- // 设定负载均衡的服务器列表, weight 参数表示权限, 权值越高被分到的概率越大
- //Nginx 使用 upstream 模块实现代理, 如果有多台 Tomcat 服务器, 按照前两台的格式继续写就好
- server {
- listen 80;
- server_name localhost;
- #charset koi8-r;
- #access_log logs/host.access.log main;
- location / {
- root HTML;
- index index.HTML index.htm;
- proxy_pass http://tomcat_server;
- // 把 nginx 的默认站点通过 proxy_pass 方法代理到设定好的 tomcat_server 负载均衡服务器组
- }
- .................................... // 省略部分内容
- }
- [[email protected] nginx-1.12.0]# /usr/local/nginx/sbin/nginx -t
- // 检查 Nginx 服务配置文件是否有语法错误
- [[email protected] nginx-1.12.0]# /usr/local/nginx/sbin/nginx
- // 启动服务, 由于没有优化路径, 所以应打绝对路径
- [[email protected] nginx-1.12.0]# netstat -anpt | grep 80
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 46627/nginx: master
- [[email protected] nginx-1.12.0]# firewall-cmd --add-service=http
- success
测试负载均衡效果:
Nginx+Tomcat 实现负载均衡群集已经实现!!!
来源: http://www.bubuko.com/infodetail-3184022.html