说明:
本文描述的是 nginx + tomcat + redis 实现应用负载均衡且满足session一致性,从安装到配置的全部过程,供大家学习!
nginx 代理服务器ip: 10.219.24.26
tomcat_1 应用服务器ip与端口: 10.219.24.21:8080
tomcat_2 应用服务器ip与端口: 10.219.24.21:8081
redis 缓存服务器ip: 10.219.24.23

一、 nginx-1.9.7 编译安装

下载地址: http://nginx.org/download/nginx-1.9.7.tar.gz

补充: 安装 nginx之前,需要先安装一些依赖包:gcc、pcre、zlib
a、nginx gzip模块需要zlib库
b、nginx rewrite模块需要pcre库
c、nginx ssl模块需要openssl库

1、安装必要依赖包
[root@mysql03 ~]# yum install -y pcre pcre-devel

centos 6.7 配置 yum 本地源 链接参考: http://blog.csdn.NET/zhang123456456/article/details/56690945
2、 Nginx安装
[root@mysql03 ~]# ll nginx-1.9.7.tar.gz
-rw-r--r--. 1 root root 885562 Jun 14 21:46 nginx-1.9.7.tar.gz
[root@mysql03 ~]# tar zxvf nginx-1.9.7.tar.gz
[root@mysql03 ~]# cd nginx-1.9.7
-- 配置nginx安装选项
[root@mysql03 nginx-1.9.7]# ./configure --prefix=/usr/local/nginx
说明: 配置完毕后可以看到一个配置概要,概要中的5项必须都有了相应的库支持
Configuration summary
+ using system PCRE library
+ OpenSSL library is not used
##如果想要安装openssl模块,安装时需指定 ./configure --prefix=/usr/local/nginx --with-openssl=/root/openssl-1.0.2d ##
+ md5: using system crypto library
+ sha1: using system crypto library
+ using system zlib library
-- 安装nginx
[root@mysql03 nginx-1.9.7]# make && make install
3、 检查安装是否正常
[root@mysql03 nginx-1.9.7]# cd /usr/local/nginx
[root@mysql03 nginx]# ll
total 16
drwxr-xr-x. 2 root root 4096 Jun 14 22:14 conf
drwxr-xr-x. 2 root root 4096 Jun 14 22:14 html
drwxr-xr-x. 2 root root 4096 Jun 14 22:14 logs
drwxr-xr-x. 2 root root 4096 Jun 14 22:14 sbin
-- 启动
[root@mysql03 nginx]# ./sbin/nginx #如果不能正常启动,可能是端口占用
[root@mysql03 nginx]# ps -ef|grep nginx
root 5212 1 0 22:17 ? 00:00:00 nginx: master process ./sbin/nginx
nobody 5213 5212 0 22:17 ? 00:00:00 nginx: worker process
root 5228 2359 0 22:20 pts/0 00:00:00 grep nginx
-- 访问
浏览器输入: http://10.219.24.26/ #ip换成自己的ip
看到以下页面内容,一切正常。
Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

-- 关闭
[root@mysql03 nginx]# ./sbin/nginx -s stop
[root@mysql03 nginx]# ps -ef|grep nginx
root 5241 2359 0 22:25 pts/0 00:00:00 grep nginx

二、 单机多实例 tomcat 安装

前言:
JDK(JavaDevelopment Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的javaSDK. JDK是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。所以要想运行jsp的程序必须要有JDK的支持,理所当然安装Tomcat的前提是安装好JDK.

二、1       JDK安装

1. 查看os版本
[root@MySQL ~]# uname -a
Linux mysql 2.6.32-200.13.1.el5uek #1 SMP Wed Jul 27 21:02:33 EDT 2011 x86_64 x86_64 x86_64 GNU/linux
解释:如果有x86_64就是64位的,没有就是32位的。后面是x686或x86_64则内核是64位的,i686或i386则内核是32位的。
2. 下载安装包
下载JDK,地址:http://www.Oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html,
我下载【jdk-8u131-linux-x64.tar.gz】,如下图所示:

3. 安装Java JDK8.0
3.1、然后将下载了的JDK安装包mv到local文件夹下
[root@mysql ~]# mv jdk-8u131-linux-x64.tar.gz /usr/local/
3.2、跳转到local下面:
[root@mysql ~]# cd /usr/local/
[root@mysql local]# ll jdk-8u131-linux-x64.tar.gz 
-rw-r--r-- 1 root root 185540433 Jun 17 17:08 jdk-8u131-linux-x64.tar.gz
3.3、再将JDK解压
[root@mysql local]# tar zxvf jdk-8u131-linux-x64.tar.gz

4. 配置环境变量
4.1、 在 /etc/profile 文件中添加Java相关的环境变量,将下面的内容复制到底部:
JAVA_HOME=/usr/local/jdk1.8.0_131
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=$JAVA_HOME/jre/lib/ext:$JAVA_HOME/lib/tools.jar
export PATH JAVA_HOME CLASSPATH

注意:根据上面的配置信息,我们既可以将环境变量的配置完成,需要注意的是,PATH在配置的时候,一定要把JAVA_HOME/bin放在最前面,不然使用java命令时,系统会找到以前的java,再不往下找了,这样java这个可执行文件运行的目录其实不在$JAVA_HOME/bin下,而在其它目录下,会造成很大的问题。

4.2、 立即生效 
[root@mysql local]# source /etc/profile

5. 验证是否安装成功
[root@mysql local]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

二、2    安装 apache-tomcat-7.0.78

前言:
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应对HTML 页面的访问请求。实际上Tomcat 部分是Apache 服务器的扩展,但它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

1、 安装 apache-tomcat-7.0.78 版本的 jdk 版本要求
Tomcat 7.0 requires Java SE 6 or later. 
Read the RELEASE-NOTES and the RUNNING.txt file in the distribution for more details.
2、 os 查看 JDK 版本
[root@mysql ~]# java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

3. 安装 apache-tomcat-7.0.78
3.0、 apache-tomcat-7.0.78 的下载网址为:http://tomcat.apache.org/download-70.cgi ,截图如下:

____________________________________

3.1、然后将下载了的 apache-tomcat-7.0.78.tar.gz 安装包mv到 /usr/local/tomcat_1/ 文件夹下

[root@mysql ~]# mkdir /usr/local/tomcat_1/
[root@mysql ~]# cp apache-tomcat-7.0.78.tar.gz /usr/local/tomcat_1/
3.2、跳转到local下面:
[root@mysql ~]# cd /usr/local/tomcat_1/
[root@mysql tomcat_1]# ll apache-tomcat-7.0.78.tar.gz
-rw-r--r-- 1 root root 8968516 Jun 18 09:43 apache-tomcat-7.0.78.tar.gz
3.3、再将 apache-tomcat-7.0.78.tar.gz 解压
[root@mysql tomcat_1]# tar -zxvf apache-tomcat-7.0.78.tar.gz
3.4、 catalina.sh 放置在 /etc/init.d/ 下为 tomcat 启动启动做准备
[root@mysql tomcat_1]# cp -p /usr/local/tomcat_1/apache-tomcat-7.0.78/bin/catalina.sh /etc/init.d/tomcat_1
3.5 编辑 /etc/init.d/tomcat_1
vim /etc/init.d/tomcat_1
在第二行加入以下内容:
# chkconfig: 112 63 37
# description: tomcat server init script
# Source Function Library
. /etc/init.d/functions

JAVA_HOME=/usr/local/jdk1.8.0_131/
CATALINA_HOME=/usr/local/tomcat_1/apache-tomcat-7.0.78
4、 修改权限及创建目录
[root@mysql tomcat]# chmod 755 /etc/init.d/tomcat_1
[root@mysql tomcat]# chkconfig --add tomcat_1
[root@mysql tomcat]# chkconfig tomcat_1 on

同理配置 tomcat2 ,注意相应的地方要修改 如:/usr/local/tomcat_1/ 改为 /usr/local/tomcat_2/
__________________________________________________

5、 修改每个tomcat实例中server.xml中的端口

[root@mysql apache-tomcat-7.0.78]# pwd
/usr/local/tomcat_2/apache-tomcat-7.0.78
[root@mysql apache-tomcat-7.0.78]# cat conf/server.xml

<Server port="8006" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<!-- Security listener. Documentation at /docs/config/listeners.html
.....
<Connector port="8081" protocol="HTTP/1.1"
.....
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
.....
</Host>
</Engine>
</Service>
</Server>

说明:上面是裁剪过后的server.xml,分别修改以上三个端口(Server、HTTP、AJP),这里我将tomcat_1端口号不变,
tomcat_2的端口都相应的+1 ,比如:Server 由 8005 + 1 =8006,注意 不要和其它实例的端口或系统已经占用的端口发生冲突。

6、 启动、关闭tomcat
-- 启动
[root@mysql tomcat]# service tomcat_1 start
[root@mysql tomcat]# service tomcat_2 start

7、 登录验证

    

三、 nginx-1.9.7 + apache-tomcat-7.0.78 反向代理+应用负载均衡 安装配置

1、 tomcat_1 配置 webapps/ROOT/index.jsp 修改成如下所示
[root@MySQL apache-tomcat-7.0.78]# pwd
/usr/local/tomcat_1/apache-tomcat-7.0.78
[root@mysql apache-tomcat-7.0.78]# vi webapps/ROOT/index.jsp
[root@mysql apache-tomcat-7.0.78]# cat webapps/ROOT/index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html lang="en">
SessionID:<%=session.getId()%>
</br>
SessionIP:<%=request.getServerName()%>
</br>
<h1>tomcat1</h1>
</html>

说明: 同理配置另外一台 tomcat_2 服务器

2、 配置完 tomcat 后,接下来,修改 nginx.conf 配置,如下
[root@mysql03 nginx]# pwd
/usr/local/nginx
[root@mysql03 nginx]# cat conf/nginx.conf
user root root;
worker_processes 1;

events {
worker_connections 1024;
}

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

upstream web_app {
server 10.219.24.21:8080 weight=1 max_fails=2 fail_timeout=30s;
server 10.219.24.21:8081 weight=1 max_fails=2 fail_timeout=30s;
}

server {
listen 80;
server_name aa.com;
charset utf8;
location / {
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_pass http://web_app;
proxy_redirect default;
}
}
}

说明: server段 proxy_pass定义的web_app需要跟upstream 里面定义的web_app一致,否则server找不到均衡。

3、 启动 tomcat 与 Nginx
4、 测试
本机浏览器输入:http://10.219.24.26/ 反复点击刷新 发现链接在 tomcat_1 与 tomcat_2 之间轮转,达到负载均衡。

   

注意:此时 session 并不一致, sessionID每次轮转都会改变。

四、 centos 6.7 下安装 redis-3.2.5

前期准备:
1. 操作系统需要安装 gcc 包 与 TCL 库, 通过配置本地 yum 源 ,yum -y install gcc 、 yum -y install tcl安装
2. 下载 redis 安装包,上传至 linux 下。 网址: http://download.redis.io/releases/
[root@mysql ~]# ll redis-3.2.5.tar.gz
-rw-r--r--. 1 root root 1544040 Jun 1 22:57 redis-3.2.5.tar.gz
说明: centos 6 配置本地Yum源,请参考 http://blog.csdn.net/zhang123456456/article/details/56690945
正式安装
3. 解压
[root@mysql ~]# tar -xzvf redis-3.2.5.tar.gz
4. 编译安装
[root@mysql ~]# cd redis-3.2.5
[root@mysql redis-3.2.5]# make && make install
说明:逐次执行上述命令,这样 Redis 会安装在/usr/local/bin/路径下。
5. 修改配置文件
在 redis-3.2.5路径下有一个 redis.conf 文件,需要拷贝并创建到/etc 路径下,命令如下
所示:
[root@mysql redis-3.2.5]# mkdir -p /etc/redis
[root@mysql redis-3.2.5]# mv redis.conf /etc/redis/
6. 修改配置文件
[root@mysql redis-3.2.5]#vim /etc/redis/redis.conf
[root@mysql redis-3.2.5]# cat /etc/redis/redis.conf
daemonize yes
pidfile /var/run/redis_6379.pid
port 6379
7. 运行/ 停止 Redis
-- 启动
[root@mysql redis-3.2.5]# redis-server /etc/redis/redis.conf
[root@mysql redis-3.2.5]# ps -ef|grep redis
root 5845 1 0 23:29 ? 00:00:00 redis-server *:6379
root 5854 2553 0 23:30 pts/1 00:00:00 grep redis
说明:第一条命令表示启动 redisserver,第二条命令表示查看 redis 服务是否启动正常。
-- 关闭
[root@mysql redis-3.2.5]# redis-cli shutdown
[root@mysql redis-3.2.5]# ps -ef|grep redis
root 5861 2553 0 23:31 pts/1 00:00:00 grep redis

五、配置 nginx + tomcat + redis 的 session 一致性

1、修改 redis 配置文件vi /etc/redis/redis.conf
将bind的127.0.0.1修改为本机地址,否则只能本机访问了,如下:
[root@redis01 ~]# cat /etc/redis/redis.conf
bind 10.219.24.23
daemonize yes
pidfile /var/run/redis_6379.pid
port 6379

2、导入redislib中三个jar包到 tomcat 的lib中

3、在 tomcat/conf/server.xml 的最下面的中增加 sessionCookieName 配置你想要的Redis中key的前缀,如下所示:
[root@mysql apache-tomcat-7.0.78]# pwd
/usr/local/tomcat_1/apache-tomcat-7.0.78
[root@mysql apache-tomcat-7.0.78]# vi conf/server.xml      (在</Server>前添加如下配置,也就是倒数第二行处添加)

<Context docBase="/root/YOUR_WEB_APP"
path=""
reloadable="true"
sessionCookieName="YOURJSessionID" />

4、 在 tomcat的conf目录下,编辑context.xml , 在末尾</Context>前添加如下配置。如果你是用Redis单点,则可以仿照如下配置:
[root@mysql apache-tomcat-7.0.78]# pwd
/usr/local/tomcat_1/apache-tomcat-7.0.78
[root@mysql apache-tomcat-7.0.78]# vi conf/context.xml
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />
<Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"
host="10.219.24.23"           #redis服务器ip
port="6379"
database="1"
maxInactiveInterval="60" />

5、 启动 nginx 、 tomcat 、redis
6、 测试
在浏览器中输入 : http://10.219.24.26/ 反复点击刷新 发现链接在 tomcat_1 与 tomcat_2 之间轮转,
达到负载均衡并保持 session一致性,sessionID保持不变。

        >成功!

nginx之 nginx + tomcat + redis 负载均衡且session一致性的更多相关文章

  1. nginx+tomcat+redis负载均衡及session共享

    概述 本文档是用来详细描述 nginx+tomcat+redis负载均衡实现session共享 所需软件及下载地址 软件名称 下载地址 功能说明 Nginx-v1.6.0 http://nginx.o ...

  2. haproxy+tomcat实现负载均衡以及session共享(linux centos7环境)

    一.安装HAProxy 1.进入home目录,下载最新haproxy安装包. cd /home wget http://haproxy.1wt.eu/download/1.4/src/haproxy- ...

  3. Linux 下配置 nginx + 两个 tomcat 的负载均衡

    前提:已经安装了 nginx 和两个 tomcat 1.修改 nginx.conf 配置文件    1)在 http{} 节点之间添加 upstream 配置 2)修改 nginx 的监听端口,默认是 ...

  4. nginx和tomcat配置负载均衡和session同步

    一.背景 因业务需求,现需配置多台服务器,实现负载均衡. 二.解决方案 使用 nginx + tomcat,在这一台应用服务器部署一个nginx和两个tomcat.通过nginx修改配置后reload ...

  5. nginx配置分发Tomcat服务,负载均衡

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 项目中瓦片资源越来越多,如果提高瓦片的访问效率是一个需要解决的 ...

  6. Nginx+Tomcat+memcached负载均衡实现session共享

    http://blog.csdn.net/love_ubuntu/article/details/8464983 1.  安装各个软件不用说了. 2.  到tomcat的安装目录lib中,加入: me ...

  7. nginx+tomcat实现负载均衡以及session共享(linux centos7环境)

    一.nginx的安装 1.准备三份tomcat tomcat1 设置端口 8080 tomcat2 设置端口 8081 tomcat3 设置端口 8082 2. 下载nginx 3. 解压到/home ...

  8. Nginx+Tomcat+Memcached负载均衡和session共享

    1. 演示搭建 说明:本文参考网络日志http://blog.csdn.net/remote_roamer/article/details/51133790,结合实际操作,仅做个演示记录. 1.1.  ...

  9. nginx实现后端tomcat的负载均衡调度

    一.编译安装nginx 请跳转查阅:编译安装nginx 二.tomcat的二进制安装 请跳转查阅:二进制安装tomcat 三.配置nginx代理 # cat /apps/nginx/conf/ngin ...

随机推荐

  1. mui开发app之联网应用传输数据

    手机的app分为,在线和单机,在线就是类似于C/S模式,能与服务器与他人共享数据的程序,单机就是在没有网络下可以玩转的app. 目前互联网盛行的时代,99%的程序都是联网环境下工作的.那么如何开发本地 ...

  2. dva框架使用mock.js模拟数据 + fetch请求数据

    what DVA? Dva是基于Redux做了一层封装,对于React的state管理,有很多方案,我选择了轻量.简单的Dva. dva 可以很方便就使用mock.js进行数据的模拟. 只需要三步,即 ...

  3. cmd第一次推送github

    echo off for %%i in ("%cd%") do set "name=%%~ni" git init git remote add origin ...

  4. 0基础搭建Hadoop大数据处理-初识

    在互联网的世界中数据都是以TB.PB的数量级来增加的,特别是像BAT光每天的日志文件一个盘都不够,更何况是还要基于这些数据进行分析挖掘,更甚者还要实时进行数据分析,学习,如双十一淘宝的交易量的实时展示 ...

  5. 产品经理学Python:逻辑判断与运算符

    这是关于Python的第6篇文章,主要介绍下逻辑判断与运算符. (一) 逻辑判断: 如果要实现一个复杂的功能程序,逻辑判断必不可少.逻辑判断的最基本标准:布尔类型. 布尔类型只有两个值:True和Fa ...

  6. Python的RSA加密和PBE加密

    最近在写接口的时候,遇到了需要使用RSA加密和PBE加密的情况,对方公司提供的DEMO都是JAVA的,我需要用python来实现. 在网上搜了一下,python的RSA加密这块写的还是比较多的,但是P ...

  7. 用C#操作文件/文件夹(删除,复制,移动)

    操作某一个文件/文件夹,需要一个文件的完整路径 一.使用File的静态方法进行文件操作 //使用file的静态方法进行复制 File.Copy(path, destpath); //使用File的静态 ...

  8. springcloud(四):熔断器Hystrix

    说起springcloud熔断让我想起了去年股市中的熔断,多次痛的领悟,随意实施的熔断对整个系统的影响是灾难性的,好了接下来我们还是说正事. 熔断器 雪崩效应 在微服务架构中通常会有多个服务层调用,基 ...

  9. 在JLabel上显示图片,并且图片自适应JLabel的大小

    本文转载地址:       http://blog.csdn.net/xiaoliangmeiny/article/details/7060250 在写<Core Java>上的示例代码时 ...

  10. Github 开源:升讯威 Winform 开源控件库( Sheng.Winform.Controls)

    Github 地址:https://github.com/iccb1013/Sheng.Winform.Controls 本控件库中的代码大约写于10年前(2007年左右),难免有不成熟与欠考虑之处, ...