当前位置: 亚洲城ca88 > 亚洲城 > 正文

服务器负荷均衡配置,多汤姆cat负载均衡达成详

时间:2019-07-28 04:51来源:亚洲城
一、简介 由于需要,得搭建个Nginx Tomcat Https的负载均衡服务器,搜了搜网上的发现总是有错,现在整理了些有用的,备忘。 CentOS7下Nginx Tomcat负载均衡及Redis共享Session解决方案 【Nginx】

一、简介

由于需要,得搭建个Nginx Tomcat Https的负载均衡服务器,搜了搜网上的发现总是有错,现在整理了些有用的,备忘。

CentOS7下Nginx Tomcat负载均衡及Redis共享Session解决方案

【Nginx】 大名鼎鼎,麻雀虽小五脏俱全,它拥有小而稳且高效的特性。为目前大多数中小企业所使用。nginx可以做以下几件事:

环境:CentOS6.5、JDK1.8、Tomcat8、Nginx1.10.1
准备材料:
1.JDK1.8安装包jdk-8u102-linux-x64.tar.gz

文件准备

  • 反向代理
  • 负载均衡
  • 动静分离
  • 网页、图片缓存

2.Tomcat8安装包apache-tomcat-8.0.37.tar.gz

nginx: nginx-1.10.3.tar.gz

【Tomcat】 是一个免费开放源代码的 Web 应用服务器,具有开源免费、容易安装、 容易使``用、占用资源小、易于和其他软件集成等优点。``Tomcat 很受广大程序员的喜欢,因为它运行时占用的系统资源小,扩展性好,支持负载``平衡与邮件服务等开发应用系统常用的功能;而且它还在不断的改进和完善中,任何一个感``兴趣的程序员都可以更改它或在其中加入新的功能。

3.Nginx1.10安装包nginx-1.10.1.tar.gz

tomcat8: apache-tomcat-8.0.43.zip

【N T的负载均衡】

1、JDK安装配置
解压并安装到/usr/local/jdk

redis: redis-3.2.8.tar.gz

然而他们的组合将是一把无与伦比的利刃。首先说明一下它的请求原理(路径走向)

[root@localhost ~]# tar zxvf jdk-8u102-linux-x64.tar.gz
[root@localhost ~]# mv jdk1.8.0_102 /usr/local/jdk

ruby(当使用redis cluster时需要): ruby-2.4.1.tar.gz

Nginx作为反向代理服务器,实现负载均衡。首先浏览器发起请求,到达Nginx,由Nginx将请求地址转发给相应的tomcat服务器,再由tomcat服务器将结果返回给Nginx,Nginx将结果再转发给浏览器。

下面上图:

图片 1

图中的信息显而易见,以nginx服务器作为中转分发请求,以达到负载均衡的目的。

二、环境需求

【由于博主的主机(脸红~)配置低,所以只开一开虚拟机作为这次负载均衡的测试。一个ip三个端口既可实现上图所述的效果了】

主机A:192.168.0.144/24

apache-tomcat-6.0.35.tar.gz   tomcat 6  使用的主要端口:18080
apache-tomcat-7.0.82.tar.gz   tomcat 7  使用的主要端口:28080
apache-tomcat-8.5.23.tar.gz   tomcat 8  使用的主要端口: 8088
nginx-1.0.12.tar.gz
jdk7u79linuxx64.tar.gz

(其他一些基础环境比如gcc-c 的自己补全吧)

三、各个环境的搭建

3.1 Nginx搭建

先把所有准备好的软件工具放到一个目录下(都先准备好必用软件,不然配置起来才去找软件是很烦人的)

[root@N T lhl]# ll
total 175172
-rw-r--r-- 1 root root   9472492 Dec  1  2017 apache-tomcat-8.5.23.tar.gz
-rw-r--r-- 1 root root 153512879 Dec  7  2017 jdk7u79linuxx64.tar.gz
-rw-r--r-- 1 root root    691002 May  9  2012 nginx-1.0.12.tar.gz
-rw-r--r-- 1 root root  15692490 Nov 29  2017 Tomcat6-7.zip

    接下来安装一下开发环境

[root@N T lhl]# yum -y install gcc gcc-c  

在/usr目录下面创建一个nginx的目录,并把nginx包移动到该目录下,再解压到该目录下面

[root@N T lhl]# mkdir -p /usr/nginx
[root@N T lhl]# mv nginx-1.0.12.tar.gz /usr/nginx/ &&cd /usr/nginx/&&tar -zxvf nginx-1.0.12.tar.gz 

最好进入nginx-1.0.12目录,再编译安装

[root@N T nginx-1.0.12]# ./configure &&make &&make install

一般编译安装都默认在/usr/local/nginx/ 目录下面 ,下面这个就是nginx的主程序。

[root@N T sbin]# ll /usr/local/nginx/sbin/nginx 
-rwxr-xr-x 1 root root 954836 Aug 16 04:43 /usr/local/nginx/sbin/nginx

本博文为了搭建的方便直接把这个主程序拉倒/usr/bin/ 目录下了

[root@N T sbin]# cp -a /usr/local/nginx/sbin/nginx /usr/bin/

下面是配置文件

[root@N T sbin]# ll /usr/local/nginx/conf/nginx.conf

简单的配置了一下配置文件

#####nginx 3 T 负载均衡测试############
#####最简化的配置文件了--###############
user nobody;   #对于用户有安全性限制的伙伴可以创建一个账户去使用
worker_processes 1;

events {
    use epoll;
    worker_connections  1024;
    }


http


{
    include       mime.types;
    default_type  application/octet-stream;


     sendfile        on;

     keepalive_timeout  60; #简单文本显示格式编辑
     fastcgi_connect_timeout 300;
     fastcgi_send_timeout 300;
     fastcgi_read_timeout 300;
     fastcgi_buffer_size 64k;
     fastcgi_buffers 8 128k;
     fastcgi_busy_buffers_size 128k;
     fastcgi_temp_file_write_size 128k;
     fastcgi_temp_path /dev/shm;


    server{

        listen       80;
        server_name  localhost;
        access_log /var/log/nginx/aeecss.log;
        error_log  /var/log/nginx/error.log;
        location / {
                proxy_pass  http://li7105.com;
                proxy_redirect default;
          }

        }
}

下面运行nginx,查看信息

[root@N T sbin]# /usr/bin/nginx -c /usr/local/nginx/conf/nginx.conf
[root@N T sbin]# ps -ef | grep nginx
root       1561      1  0 13:04 ?        00:00:00 nginx: master process /usr/bin/nginx -c /usr/local/nginx/conf/nginx.conf
www        1562   1561  0 13:04 ?        00:00:00 nginx: worker process                             
root       1709   1573  0 18:49 pts/1    00:00:00 grep --color nginx

注意:nginx没有启动起来,麻烦去认真的检查一下nginx配置文件。

PS:开机机动启动的话,直接把启动代码丢进rc.local这个文件里面即可。

[root@N T lhl]# echo "/usr/bin/nginx  -c /usr/local/nginx/conf/nginx.conf"  >> /etc/rc.d/rc.local 

nginx的基本部署完成!

3.2 Tomcat 的搭建

由于tomcat依赖于jdk环境下运行,所以先搭建jdk环境,配置变量环境

[root@N T lhl]# mkdir /usr/java/
[root@N T lhl]# mv jdk7u79linuxx64.tar.gz /usr/java/ && cd /usr/java/ && tar -zxvf jdk7u79linuxx64.tar.gz

 

[root@N T java]# ll
total 4
drwxr-xr-x 8 uucp 143 4096 Apr 11  2015 jdk1.7.0_79
[root@N T java]# cd jdk1.7.0_79/
[root@N T jdk1.7.0_79]# pwd  #看清楚路径
/usr/java/jdk1.7.0_79
[root@N T jdk1.7.0_79]# 

PS:关于软件依赖的变量环境

就目前来去为一个软件或者环境的运行去搭建变量环境主要用下面三种方法

1、在/etc/profile下配置,这属于大环境的配置了。不过管理上不灵活,属于点到面的管理(本博文由于只有这个tomcat用到,所以在这配置了)

2、在/etc/profile.d/目录下面创建一个专属的变量环境如:tomcat.sh  在里面指的变量路径以及文件路径,这种方式管理很灵活,属于点到点的管理。

3、在软件的某个文本下面去直接添加指定的变量环境,如tomcat的。

[root@N T bin]# pwd
/usr/tomcatG/tomcat6/bin
[root@N T bin]# ll
total 612
-rw-r--r-- 1 root root  22705 Nov 28  2011 bootstrap.jar
-rw-r--r-- 1 root root  11830 Nov 28  2011 catalina.bat
-rwxr-xr-x 1 root root  17708 Nov 28  2011 catalina.sh
-rw-r--r-- 1 root root   2374 Nov 28  2011 catalina-tasks.xml
-rw-r--r-- 1 root root  24172 Nov 28  2011 commons-daemon.jar
-rw-r--r-- 1 root root 199623 Nov 28  2011 commons-daemon-native.tar.gz
-rw-r--r-- 1 root root   1342 Nov 28  2011 cpappend.bat
-rw-r--r-- 1 root root   2108 Nov 28  2011 digest.bat
-rwxr-xr-x 1 root root   1689 Nov 28  2011 digest.sh
-rw-r--r-- 1 root root   3150 Nov 28  2011 setclasspath.bat
-rwxr-xr-x 1 root root   4153 Aug 16 10:57 setclasspath.sh ###在这个文件里面指定变量环境
-rw-r--r-- 1 root root   2108 Nov 28  2011 shutdown.bat
-rwxr-xr-x 1 root root   1628 Nov 28  2011 shutdown.sh
-rw-r--r-- 1 root root   2109 Nov 28  2011 startup.bat
-rwxr-xr-x 1 root root   2023 Nov 28  2011 startup.sh
-rw-r--r-- 1 root root  32277 Nov 28  2011 tomcat-juli.jar
-rw-r--r-- 1 root root 249259 Nov 28  2011 tomcat-native.tar.gz
-rw-r--r-- 1 root root   3479 Nov 28  2011 tool-wrapper.bat
-rwxr-xr-x 1 root root   3472 Nov 28  2011 tool-wrapper.sh
-rw-r--r-- 1 root root   2113 Nov 28  2011 version.bat
-rwxr-xr-x 1 root root   1632 Nov 28  2011 version.sh
[root@N T bin]# 

setclasspath.sh  里面指定。软件的不同在不同的文件指定吧,这个可以在度娘查到。第三种办法一般很少用到。

继续!下面在/etc/profile下配置变量环境

export JAVA_HOME=/usr/java/jdk1.7.0_79/  #路径别弄错
export JAVA_BIN=$JAVA_HOME/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

最后直接执行,使得文件profile生效

[root@N T /]# source /etc/profile

接着执行 java -version  命令即可看到对应的版本号,说明已经生效了。(在这里有些小伙伴会时常出现一个问题,明明tomcat已经实在用这个

jdk版本了,可是输入命令java -version 显示出来的却不是目前tomcat在用的jdk版本,这时候该注意一下查看tomcat下面的comment目录下的jdk版本是否对应的,不是的话。就把jdk下的替换过去,另外我还有寻找另外一种解决办法,希望各位赐教。)

jdk部署完毕!

3.3 tomcat 的搭建

在/usr 下创建tomcatG 的目录,并且把三个版本的tomcat拉到目录下分别改名为tomcat6、tomcat7、tomcat8。最后分别解压,再修改server.xml  文档的端口

[root@N T tomcatG]# ll
total 12
drwxr-xr-x 9 root root 4096 Aug 16 10:27 tomcat6
drwxr-xr-x 9 root root 4096 Aug 16 10:49 tomcat7
drwxr-xr-x 9 root root 4096 Aug 16 11:11 tomcat8
[root@N T tomcatG]# 

下面修改tomcat6的server.xml文件:三处地方

1、

<Connector port="18080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443" />

2、

<Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />

3、

<Server port="18005" shutdown="SHUTDOWN">

剩下的tomcat7和tomcat8以此类推!

下面启动tomcat6-8

启动tomcat6:

[root@N T bin]# pwd
/usr/tomcatG/tomcat6/bin
[root@N T bin]# ll
total 612
-rw-r--r-- 1 root root  22705 Nov 28  2011 bootstrap.jar
-rw-r--r-- 1 root root  11830 Nov 28  2011 catalina.bat
-rwxr-xr-x 1 root root  17708 Nov 28  2011 catalina.sh
-rw-r--r-- 1 root root   2374 Nov 28  2011 catalina-tasks.xml
-rw-r--r-- 1 root root  24172 Nov 28  2011 commons-daemon.jar
-rw-r--r-- 1 root root 199623 Nov 28  2011 commons-daemon-native.tar.gz
-rw-r--r-- 1 root root   1342 Nov 28  2011 cpappend.bat
-rw-r--r-- 1 root root   2108 Nov 28  2011 digest.bat
-rwxr-xr-x 1 root root   1689 Nov 28  2011 digest.sh
-rw-r--r-- 1 root root   3150 Nov 28  2011 setclasspath.bat
-rwxr-xr-x 1 root root   4153 Aug 16 10:57 setclasspath.sh
-rw-r--r-- 1 root root   2108 Nov 28  2011 shutdown.bat
-rwxr-xr-x 1 root root   1628 Nov 28  2011 shutdown.sh  #这是停止
-rw-r--r-- 1 root root   2109 Nov 28  2011 startup.bat
-rwxr-xr-x 1 root root   2023 Nov 28  2011 startup.sh  #启动
-rw-r--r-- 1 root root  32277 Nov 28  2011 tomcat-juli.jar
-rw-r--r-- 1 root root 249259 Nov 28  2011 tomcat-native.tar.gz
-rw-r--r-- 1 root root   3479 Nov 28  2011 tool-wrapper.bat
-rwxr-xr-x 1 root root   3472 Nov 28  2011 tool-wrapper.sh
-rw-r--r-- 1 root root   2113 Nov 28  2011 version.bat
-rwxr-xr-x 1 root root   1632 Nov 28  2011 version.sh
[root@N T bin]# ./startup.sh 

如图所示!

tomcat 7-8以此类推!

再看一下三个tomcat启动的进程。

[root@N T bin]# ps -ef |grep tomcat
root       1278      1  0 13:50 ?        00:00:10 /usr/java/jdk1.7.0_79/bin/java -Djava.util.logging.config.file=/usr/tomcatG/tomcat7/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.endorsed.dirs=/usr/tomcatG/tomcat7/endorsed -classpath /usr/tomcatG/tomcat7/bin/bootstrap.jar:/usr/tomcatG/tomcat7/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcatG/tomcat7 -Dcatalina.home=/usr/tomcatG/tomcat7 -Djava.io.tmpdir=/usr/tomcatG/tomcat7/temp org.apache.catalina.startup.Bootstrap start start
root       1287      1  0 13:50 ?        00:00:13 /usr/java/jdk1.7.0_79/bin/java -Djava.util.logging.config.file=/usr/tomcatG/tomcat8/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -classpath /usr/tomcatG/tomcat8/bin/bootstrap.jar:/usr/tomcatG/tomcat8/bin/tomcat-juli.jar -Dcatalina.base=/usr/tomcatG/tomcat8 -Dcatalina.home=/usr/tomcatG/tomcat8 -Djava.io.tmpdir=/usr/tomcatG/tomcat8/temp org.apache.catalina.startup.Bootstrap start start
root       1301      1  0 13:50 ?        00:00:08 /usr/java/jdk1.7.0_79/jre/bin/java -Djava.util.logging.config.file=/usr/tomcatG/tomcat6//conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/tomcatG/tomcat6//endorsed -classpath /usr/tomcatG/tomcat6//bin/bootstrap.jar -Dcatalina.base=/usr/tomcatG/tomcat6/ -Dcatalina.home=/usr/tomcatG/tomcat6/ -Djava.io.tmpdir=/usr/tomcatG/tomcat6//temp org.apache.catalina.startup.Bootstrap start
root       1509   1418  0 15:02 pts/0    00:00:00 grep --color tomcat
[root@N T bin]# 

可以看到,各个端口以及运行的变量环境(jdk)这个排版比较长,需要往后面拉取才能看到所有内容。

3.4 配置负载均衡

在nginx里面添加几条代码即可,下面请看

#####nginx 3 T 负载均衡测试############
user nobody;
worker_processes 1;

events {
    use epoll;
    worker_connections  1024;
    }


http


{
    include       mime.types;
    default_type  application/octet-stream;


     sendfile        on;

     keepalive_timeout  60;
     fastcgi_connect_timeout 300;
     fastcgi_send_timeout 300;
     fastcgi_read_timeout 300;
     fastcgi_buffer_size 64k;
     fastcgi_buffers 8 128k;
     fastcgi_busy_buffers_size 128k;
     fastcgi_temp_file_write_size 128k;
     fastcgi_temp_path /dev/shm;

   upstream li7105.com {              #在此插入
   server 127.0.0.1:18080 weight=1;   #tomcat6分流    weight=1  这是权重分配。
   server 127.0.0.1:28080 weight=2;   #tomcat7分流    weight=2 显然2更大,那么它被分配任务的几率也就更大
   server 127.0.0.1:8088 weight=2;    #tomcat8分流
           }



    server{

        listen       80;
        server_name  localhost;
        access_log /var/log/nginx/aeecss.log;
        error_log  /var/log/nginx/error.log;
        location / {
                proxy_pass  http://li7105.com;
                proxy_redirect default;
          }

        }
}

 【关于nginx的负载均衡的分配方式】

nginx关于这个负载均衡方面的权重分配方式有4种:

   1.轮询,默认采取此方式,Nginx会按照请求时间的先后顺序进行轮询分发,若某台Web Server宕机,Nginx自动将其摘掉。

   2.weight,权重,即轮询的几率,值越大,被分发的可能性越大,用于后端服务器性能不均的情况。

   3.ip_hash,每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决共享session的问题。

   4.自定义规则

 PS:     

  down 表示当前的Web Server暂时不参与负载 
  weight  默认为1.weight越大,负载的权重就越大。 
  backup: 其它所有的非backup Server down或者忙的时候,请求backup机器。所以这台机器压力会最轻。

四、负载均衡的测试

为了是的测试的效果明了些,我把/usr/tomcatG/tomcat6/webapps/ROOT 目录下的index.jsp 文件的内容全部删除掉,直接改为tomcat6 ,7-8一样如此。

[root@N T ROOT]# cat index.jsp 
I am Tomcat 6666666666666!

在测试之前需要检查一下,下面几个个问题。确保没问题了,就去测试,不然返回来做无用功了。

1、nginx、tomcat、jdk正在运行

2、网页上能够哦正常访问nginx 和  tomcat

3、防火墙

我就在本地主机上面的浏览器测试吧,因为跟物理机是连通的。

在浏览器输入:  然后不停按F5刷新网页,接着网页会不停的在tomcat6、tomcat7、tomcat8的内容标识上面做跳转,显示的内容也会不一样。

如图:

图片 2

 

 

图片 3

图片 4

不停的刷新,看着页面的变化。你会发现权重等于1的tomcat6出现的次数会比tomcat7和tomcat8的次数很多的。

上面只是个简单的测试,有兴趣的伙伴可以添加去修改这个jsp文档,哈哈。

上述图片说明了nginx的负载均衡是正在运行中的了。测试完毕!

五、总结

 在搭建这个环境需要注意的几点:

1、tomcat的端口,由于是在一台机器上面部署3个tomcat,所以改的端口就有9个了。主机端口的范围,超出范围不然tomcat是无法启动的

2、jdk变量环境的搭建,注意路径。

3、nginx 配置文档的参数、模块注意编写。不然无法启动

4、注意防火墙设置,对于需求安全性的伙伴们。当然测试你可以完全的关闭掉。

nginx和tomcat的负载均衡,基本配置完毕,这类型的负载均衡目前在很多的企业被使用。然而这仅仅是企业网络架构中的一个小小的部分,我期待后面能够给大家讲述更多关于这方面的知识。

更多Tomcat相关教程见以下内容

CentOS 6.6下安装配置Tomcat环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5安装JDK Tomcat并部署Java项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat权威指南(第二版)(中英高清PDF版 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux下使用Xshell查看Tomcat实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

Ubuntu 16.04下安装Tomcat 8.5.9  http://www.linuxidc.com/Linux/2017-06/144809.htm

Ubuntu 16.04安装Tomcat 8 图解  http://www.linuxidc.com/Linux/2017-10/147773.htm

Tomcat配置文件server.xml详解  http://www.linuxidc.com/Linux/2017-10/148003.htm

Tomcat单机多实例部署-多项目部署  http://www.linuxidc.com/Linux/2017-10/147259.htm

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-12/149354.htm

图片 5

配置JDK环境变量

TomcatRedisSessionManager(From GitHub): TomcatRedisSessionManager-1.1.1.zip

[root@localhost ~]# vi /etc/profile

jdk :jdk-8u131-linux-x64.tar.gz

在底部加入以下内容

环境安装

PS:建议将所有文件下载后上传至/usr/local/src ;若无其他说明,本教程所有操作均以/usr/local/src作为起手目录

JAVA_HOME=/usr/local/jdk
JRE_HOME=$JAVA_HOME/jre
CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
export JAVA_HOME JRE_HOME PATH CLASSPATH

redis

tar -zxvf redis-3.2.8.tar.gz
cd redis-3.2.8
make

建议安装后, 将redis移动到/usr/local/redis3.2或相似的好记的目录,方便后续操作

安装后查看是否安装成功

cd src
./redis-server ../redis.conf

具体参考:

CentOS 7.0 安装Redis 3.2.1详细过程和使用常见问题 http://www.linuxidc.com/Linux/2016-09/135071.htm

应用环境变量

nginx

yum -y install make zlib zlib-devel gcc-c   libtool  openssl openssl-devel
wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
tar zxvf pcre-8.35.tar.gz
cd pcre-8.35
./configure
make && make install
tar -zxvf nginx-1.10.3.tar.gz
cd nginx-1.10.3
./confignre --prefix=/usr/local/webserver/nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35
make && make install

安装完成后,进入sbin目录, 输入 nginx 默认端口80,尝试访问

nginx源码安装较为复杂,参考完整安装教程:

CentOS 7下Nginx服务器的安装配置  http://www.linuxidc.com/Linux/2017-04/142986.htm

CentOS上安装Nginx服务器实现虚拟主机和域名重定向  http://www.linuxidc.com/Linux/2017-04/142642.htm

CentOS6.9编译安装Nginx1.4.7  http://www.linuxidc.com/Linux/2017-06/144473.htm

[root@localhost ~]# source /etc/profile

tomcat

tar -zxvf apache-tomcat-8.0.43.zip
cd apache-tomcat-8.0.43
cd bin
./startup.sh

解压即安装,启动后默认端口为8080, 自行测试server是否正常开启,若失败,尝试以下命令

systemctl stop firewalld
systemctl stop iptabled

检测是否成功,显示版本说明成功

nginx tomcat集群搭建

[root@localhost ~]# java -version

复制一份tomcat8

mv apache-tomcat-8.0.43 /usr/local/tomcat8/8081
cp /usr/local/tomcat8/8081 /usr/local/tomcat8/8082

2、Tomcat安装配置
解压并安装到/usr/local/tomcat

修改tomcat的启动及关闭端口

[root@localhost ~]# tar zxvf apache-tomcat-8.0.37.tar.gz
[root@localhost ~]# mv apache-tomcat-8.0.37 /usr/local/tomcat

更改配置文件

默认tomcat是root身份运行的,这样不安全,这里设置普通用户运行

tomcat/conf/server.xml

更改关闭端口,例如8005->8015

<Server port="8005" shutdown="SHUTDOWN">
.....

更改启动端口,例如8080->8081

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
[root@localhost ~]# groupadd tomcat
[root@localhost ~]# useradd -g tomcat tomcat
[root@localhost ~]# passwd tomcat
[root@localhost ~]# chown tomcat.tomcat -R /usr/local/tomcat

配置nginx

运行tomcat

nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    upstream tomcatcluster{
        server 127.0.0.1:8081 weight=1;
        server 127.0.0.1:8082 weight=1;
    }

    server {
        listen       80;
        server_name  localhost;

        charset utf-8;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass http://tomcatcluster;
            proxy_redirect default;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
}

其中核心是

upstream tomcatcluster{
server 127.0.0.1:8081 weight=1;
server 127.0.0.1:8082 weight=1;
}

定义一个upstream 标识为tomcatcluster;
server:定义一个服务器
ip:port:指定URL
weight:权重, 越大

location / {
proxy_pass ;
proxy_redirect default;
}

http:// 后接upstream指定的标识 ,如 tomcatcluster

[root@localhost ~]# su - tomcat /usr/local/tomcat/bin/startup.sh

启动nginx

进入nginx目录, 比如我的/usr/local/nginx

cd /usr/local/nignx
cd sbin
./nginx

启动前可使用nignx -t 检验配置文件是否错误.
浏览器访问80端口, 若无意外, 则显示tomcat的欢迎界面,于是为tomcat添加项目

设置开机启动

修改tomcat/webapps/ROOT

cd /usr/local/tomcat8/8081
cd webapps/ROOT
rm -rf *
vi index.jsp

输入以下内容:

<html>
    <body>  
        <h1>This is tomcat 1 , sessionId: <%=session.getId()%></h1>
        <% session.setAttribute("aa","guddqs"); session.setAttribute("bb","bbgudqs"); %>
    </body> 
</html>

类似的修改8082, 要在jsp上区分出是哪个tomcat服务

修改后,多次刷新页面, 轮次出现2个tomcat的页面. 至此nginx tomcat负载均衡搭建完毕

[root@localhost ~]# echo "su - tomcat /usr/local/tomcat/bin/startup.sh" >> /etc/rc.local

redis共享session for tomcat

PS: 本教程采用tomcat8, 并使用国外某大佬github项目, 对于tomcat7需要另一个redis-session-manager.jar

3、Nginx安装配置
配置Nginx用户

准备文件

unzip TomcatRedisSessionManager-1.1.1.zip
cd TomcatRedisSessionManager-1.1.1
ls -l
total 740
-rw-r--r--. 1 root root  61829 Mar 19  2016 commons-logging-1.2.jar
-rw-r--r--. 1 root root 111892 Mar 19  2016 commons-pool2-2.4.1.jar
-rw-r--r--. 1 root root 533252 Feb 21  2016 jedis-2.8.0.jar
-rw-r--r--. 1 root root   1850 Nov 26 00:30 ReadMe.txt
-rw-r--r--. 1 root root    324 Nov 25 23:56 RedisDataCache.properties
-rw-r--r--. 1 root root  28807 Nov 26 00:49 TomcatRedisSessionManager-1.1.1.jar

其中4个jar包需要复制到tomcat的lib目录下

cp commons-logging-1.2.jar /usr/local/tomcat/8081/lib
cp commons-pool2-2.4.1.jar /usr/local/tomcat/8081/lib
.......

RedisDataCache.properties需要复制到tomcat的conf下

cp RedisDataCache.properties /usr/local/tomcat/8081/conf
[root@localhost ~]# groupadd nginx
[root@localhost ~]# useradd -g nginx -s /sbin/nologin nginx

修改配置文件

安装依赖包

context.xml

进入tomcat的conf目录, 修改 context.xml文件
<Context> 节点下加入

<Valve className="com.r.tomcat.session.management.RequestSessionHandlerValve" />
<Manager className="com.r.tomcat.session.management.RequestSessionManager" />
[root@localhost ~]# yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel gcc gcc-c  

RedisDataCache.properties

然后修改之前复制到conf下的RedisDataCache.properties文件,切记不可修改文件名

vi RedisDataCache.properties
  • 1

单redis配置如下:

redis.hosts=127.0.0.1:6379

# Redis Password
redis.password=

# set true to enable redis cluster mode
redis.cluster.enabled=false

# Redis database (default 0)
#redis.database=0

# Redis connection timeout (default 2000)
#redis.timeout=2000

redis cluster模式配置文件如下:

redis.hosts=127.0.0.1:3000,127.0.0.1:3001,127.0.0.1:3002,127.0.0.1:3003,127.0.0.1:3004,127.0.0.1:3005

# Redis Password
redis.password=

# set true to enable redis cluster mode
redis.cluster.enabled=true

# Redis database (default 0)
#redis.database=0

# Redis connection timeout (default 2000)
#redis.timeout=2000

PS: redis.password留空则等于无密码

类似的修改8082下的tomcat配置文件, 复制jar包, RedisDataCache.properties

最后重启2个tomcat, 访问80端口, 刷新页面, 观察页面显示是否达到 2个不同的tomcat服务单具有相同的session id

解压并进入文件夹内

小结

使用nginx反向代理到2个tomcat服务器, 仅需修改tomcat配置不同的端口,以及为nginx.conf添加upstream配置并将反向代理指向upstream即可
而添加tomcat的session共享则利用了tomcat的提供的外部session存储机制接口,而实现则使用了redis作为储存源.从而实现了session共享.

更多Tomcat相关教程见以下内容

CentOS 6.6下安装配置Tomcat环境  http://www.linuxidc.com/Linux/2015-08/122234.htm

RedHat Linux 5.5安装JDK Tomcat并部署Java项目  http://www.linuxidc.com/Linux/2015-02/113528.htm 

Tomcat权威指南(第二版)(中英高清PDF版 带书签)  http://www.linuxidc.com/Linux/2015-02/113062.htm 

Tomcat 安全配置与性能优化 http://www.linuxidc.com/Linux/2015-02/113060.htm 

Linux下使用Xshell查看Tomcat实时日志中文乱码解决方案 http://www.linuxidc.com/Linux/2015-01/112395.htm 

CentOS 64-bit下安装JDK和Tomcat并设置Tomcat开机启动操作步骤 http://www.linuxidc.com/Linux/2015-01/111485.htm 

Ubuntu 16.04下安装Tomcat 8.5.9  http://www.linuxidc.com/Linux/2017-06/144809.htm

Ubuntu 16.04安装Tomcat 8 图解  http://www.linuxidc.com/Linux/2017-10/147773.htm

Tomcat单机多实例部署-多项目部署  http://www.linuxidc.com/Linux/2017-10/147259.htm

Tomcat 的详细介绍:请点这里
Tomcat 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-11/148311.htm

图片 6

[root@localhost ~]# tar zxvf nginx-1.10.1.tar.gz
[root@localhost ~]# cd nginx-1.10.1

配置安装

[root@localhost nginx-1.10.1]# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module
[root@localhost nginx-1.10.1]# make && make install

配置Nginx

[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf

这一步需要手动将ssl证书放入/usr/local/nginx/conf/目录下,分别为cert.crt和cert.key文件
如果证书文件是其他格式,可以自行搜索转换方法
如果无须配置https,更改443端口即可

nginx主配置文件

user nginx;
worker_processes 1;
error_log logs/error.log;
pid logs/nginx.pid;

events {
    use epoll;
    worker_connections 1024;
}

http {
    include mime.types;
    default_type application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log logs/access.log main;

    proxy_redirect off;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size 10m;
    client_body_buffer_size 128k;
    proxy_connect_timeout 90;
    proxy_send_timeout 90;
    proxy_read_timeout 90;
    proxy_buffer_size 4k;
    proxy_buffers 6 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;

    sendfile on;
    keepalive_timeout 65;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types text/plain application/x-javascripttext/css application/xml;
    gzip_vary on;

    server {
        listen 80;
        server_name www.domain.com; #修改域名
        return 301 https://$server_name$request_uri; #强制跳转443端口
    }

    server {
        listen 443 ssl;
        server_name www.domain.com; #修改域名
        ssl_certificate cert.crt; #导入证书
        ssl_certificate_key cert.key; #导入证书
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 5m;
        ssl_ciphers HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers on;
        location / {
            root /usr/local/tomcat/webapps/ROOT;
            index index.html index.jsp index.htm;
        }
        location ~ .*.jsp$ {
            index index.jsp;
            proxy_pass http://127.0.0.1:8080;
        }
        location /nginxstatus {
            stub_status on;
            access_log on;
            auth_basic "nginxstatus";
            auth_basic_user_file /usr/local/nagois/etc/htpasswd.users;
        }
        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root html;
        }
    }
}

启动服务器

/usr/local/nginx/sbin/nginx

浏览器访问出现小猫即成功。

更多Nginx负载均衡配置相关教程见以下内容

Nginx负载均衡配置说明 http://www.linuxidc.com/Linux/2016-03/129424.htm

Linux下Nginx Tomcat负载均衡和动静分离配置要点  http://www.linuxidc.com/Linux/2016-01/127255.htm

Docker Nginx Tomcat7配置简单的负载均衡  http://www.linuxidc.com/Linux/2015-12/125907.htm

Nginx负载均衡(主备) Keepalived  http://www.linuxidc.com/Linux/2015-12/126865.htm

使用Nginx作为负载均衡器 http://www.linuxidc.com/Linux/2015-12/125789.htm

使用Nginx简单实现负载均衡  http://www.linuxidc.com/Linux/2016-08/134443.htm

Nginx负载均衡与高可用的实现 http://www.linuxidc.com/Linux/2016-04/130350.htm

Nginx 的详细介绍:请点这里
Nginx 的下载地址:请点这里

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-09/135400.htm

图片 7

编辑:亚洲城 本文来源:服务器负荷均衡配置,多汤姆cat负载均衡达成详

关键词: 亚洲城ca88