Nginx+Tomcat 负载均衡配置

一、问题引入:

  Nginx+Tomcat 是目前主流的java web架构,如何让 nginx+tomcat 同时工作呢,也可以说如何使用 nginx 来反向代理 tomcat 后端均衡呢?
二、JAVA - JDK安装:
# 下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u79-linux-x64.tar.gz 
# 备注:这个电商项目只支持jdk1.7版本,更高版本不支持 
 
[root@localhost data]# tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/local/         # 然后配置环境变量,这样可以任何地方引用jdk,如下配置:         # vi /etc/profile  最后面加入以下语句:         export JAVA_HOME=/usr/local/jdk1.7.0_79/      export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib        export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin        # source /etc/profile   #使环境变量马上生效      # java  --version    #查看java版本 java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.79-b14, mixed mode)

三、Nginx安装:

1、先要安装pcre

下载 nginx: wget http://nginx.org/download/nginx-1.16.0.tar.gz
下载 pcre: wget https://ftp.pcre.org/pub/pcre/pcre-8.43.tar.gz
[root@localhost pcre-8.43]# yum -y install gcc-c++ gcc cc* make zlib-devel openssl* 
[root@localhost data]#  tar -zxvf pcre-8.43.tar.gz
[root@localhost data]# cd pcre-8.43 
[root@localhost pcre-8.43 ]# ./configure
[root@localhost pcre-8.43 ]# make && make install
2、安装nginx
[root@localhost data]# tar -zxvf nginx-1.16.0.tar.gz       
[root@localhost data]# cd nginx-1.16.0   
[root@localhost nginx-1.16.0]# ./configure  --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module  
[root@localhost nginx-1.16.0]# make && make install
3、检查nginx配置文件是否正确,返回OK即正确
[root@localhost ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
4、启动 nginx
[root@localhost ~]# /usr/local/nginx/sbin/nginx 
# 平滑启动nginx
[root@localhost ~]# /usr/local/nginx/sbin/nginx -s reload

四、安装Tomcat

1.
#
官方网站下载 /data/apache-tomcat-8.5.50.tar.gz 或者其他版本:         # cd /data # tar -zxvf /data/apache-tomcat-8.5.50.tar.gz         # 这里是把两个 tomcat 放在同一台机器上面了,也可以直接放两台不一样的机器上面,解压完成执行,同时拷贝两个tomcat,命名为tomcat1 tomcat2         # mv /data/apache-tomcat-8.5.50  /data/tomcat1        # cp /data/tomcat1  /data/tomcat2 -r         # 分别修改tomcat1和tomcat2 端口,这里有三个端口需要修改,分别如下:         shutdown 端口:8005  主要负责启动关闭.         ajp端口:8009 主要负责通过ajp均衡(常用于apache和tomcat整合)         http端口:8080 可以通过web页面直接访问(nginx+tomcata整合)         # 注* 如果tomcat1三个端口分别为:8005 8009 8080 ,那么tomcat2端口在此基础上都+1,即为:8006 8010 8081         # 一台服务器上,端口不能重复,否则会报错。         # 修改完端口后,然后启动两个tomcat,启动命令为:         # 如何提示没有这个文件或者权限不足,需要tomcat 的bin目录对sh文件赋予执行权限:chmod o+x   *.sh         # /data/tomcat1/bin/startup.sh         # /data/tomcat2/bin/startup.sh         # 启动后,使用 netstat -tnl 可以看到6个端口,即代表tomcat1 tomcat2成功启动。
# 你可以使用http://ip:8080  http://ip:8081访问tomcat默认页面。
 
2.在/data/tomcat1/webapps/和/data/tomcat2/webapps/目录下分别建目录test # mkdir -p /data/tomcat1/webapps/test # mkdir -p /data/tomcat2/webapps/test
3.tomcat1发布目录test下内容: # vim test.jsp # 输入如下内容 <html>    <body>    <h1>TOMCAT_1 JSP Test Page</h1>    <%=new java.util.Date()%>    </body>    </html> 
4.tomcat2发布目录test下内容: # vim test.jsp # 输入如下内容 <html>    <body>    <h1>TOMCAT_2 JSP Test Page</h1>    <%=new java.util.Date()%>    </body>    </html>  然后访问 http://ip:8080/test/test.jsp、 http://ip:8081/test/test.jsp 查看测试内容。
5、Nginx+Tomcat整合: 整合主要是修改nginx.conf配置,给一个完整的nginx.conf线上配置,部分参数可以自己根据实际需求修改:   worker_processes 8;    pid /usr/local/nginx/nginx.pid;    worker_rlimit_nofile 102400;    events    {    use epoll;    worker_connections 102400;    }    http    {      include       mime.types;      default_type  application/octet-stream;      fastcgi_intercept_errors on;      charset  utf-8;      server_names_hash_bucket_size 128;      client_header_buffer_size 4k;      large_client_header_buffers 4 32k;      client_max_body_size 300m;      sendfile on;      tcp_nopush     on;             keepalive_timeout 60;             tcp_nodelay on;      client_body_buffer_size  512k;           proxy_connect_timeout    5;      proxy_read_timeout       60;      proxy_send_timeout       5;      proxy_buffer_size        16k;      proxy_buffers            4 64k;      proxy_busy_buffers_size 128k;      proxy_temp_file_write_size 128k;             gzip on;      gzip_min_length  1k;      gzip_buffers     4 16k;      gzip_http_version 1.1;      gzip_comp_level 2;      gzip_types       text/plain application/x-javascript text/css application/xml;      gzip_vary on; 
    log_format  main  
'$http_x_forwarded_for - $remote_user [$time_local] "$request" '                 '$status $body_bytes_sent "$http_referer" '                 '"$http_user_agent"  $request_time $remote_addr';     #添加下面需要转发的tomcat端口信息 upstream web_app {     server 127.0.0.1:8080 weight=1 max_fails=2 fail_timeout=30s;     server 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;    }         ####chinaapp.sinaapp.com    server {        listen 80;        server_name  chinaapp.sinaapp.com;        index index.jsp index.html index.htm;        #发布目录html     root  html;                 location /        {        proxy_next_upstream http_502 http_504 error timeout invalid_header;        proxy_set_header Host  $host;        proxy_set_header X-Real-IP $remote_addr;        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        proxy_pass http://web_app;        expires      3d;        }           }        }  # 注* server段 proxy_pass定义的web_app需要跟upstream 里面定义的web_app一致,否则server找不到均衡。     # 如上配置 nginx+tomcat 反向代理负载均衡配置完毕 访问:http://ip(nginxip地址)/test/test.jsp

五、准备数据库

1、登录 mysql 数据建库

[root@localhost ~]# mysql -uroot -p123456
mysql> create database if not exists kyj default character set utf8;  
#  db_shop是数据库的名称
mysql> use kyj;      # 切换到kyj数据库
mysql> set names utf8;  
mysql> GRANT ALL PRIVILEGES ON *.* TO 'db_shop'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
# 创建用户名db_shop,密码为:123456,授权在任何的ip地址都可以登录
mysql>flush privileges;

root用户也执行一下授权
mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

mysql>flush privileges;
mysql> exit;
Bye

2、连接数据库

在刚才创建的数据库上面,右键选择“运行sql文件”,选择sql文件

点击开始,看到如下信息,说明已经导入成功了

六、部署包到Tomcat下面

1、上传app.tar.gz或者项目的war包
2、war格式的包,不需要自己解压,直接启动Tomcat就可以了
# cd /data/apache-tomcat-8.5.50/webapps
# rz                        //选择本地的包(app.tar.gz)
[root@localhost webapps]# tar -zxvf app.tar.gz
3、修改数据库连接信息
[root@localhost webapps]# vim app/WEB-INF/classes/application.properties 

jdbc.url=jdbc:mysql://127.0.0.1:3306/kyj?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
当 Tomcat 和 MySQL 在一台机器上面,就可以直接用“127.0.0.1”,当不在一台机器上面的时候,把“127.0.0.1”改成MySQL服务器所在的ip地址
 
4、启动Tomcat:
[root@localhost webapps]# /data/apache-tomcat-8.5.50/bin/startup.sh &&tail -f /data/apache-tomcat-8.5.50/logs/catalina.out 
当看到下面的信息,说明启动成功了
接入到nginx:先配置一个
 upstream web_app {
         server 192.168.226.147:8080 weight=1 max_fails=2 fail_timeout=30s;
         #server 192.168.226.128:8080 weight=2  max_fails=2 fail_timeout=30s;   

        }
最后访问:http://ip(nginxip地址)/app/back/account/login
posted @ 2022-05-07 17:47  刑之风  阅读(351)  评论(0编辑  收藏  举报