说明:
本文描述的是 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. [瞎玩儿系列] 使用SQL实现Logistic回归

    本来想发在知乎专栏的,但是文章死活提交不了,我也是醉了,于是乎我就干脆提交到CNBLOGS了. 前言 前段时间我们介绍了Logistic的数学原理和C语言实现,而我呢?其实还是习惯使用Matlab进行 ...

  2. java入门基础

    什么是java? java是一门编程语言  编程语言有很多种 你比如 C语言 等等 为什么学习java呢! 因为你要和计算机交互  当然了你用汉语跟她说她听不懂 所以你要学习编程语言 那么额咱们的ja ...

  3. DDD理论学习系列(1)-- 通用语言

    1.引言 在开始之前,我想我们有必要先了解以下DDD的主要参与者.因为毕竟语言是人说的吗,就像我们面向对象编程一样,那通用语言面向的是? DDD的主要参与者:领域专家+开发人员 领域专家:精通业务的任 ...

  4. DTCMS插件的制作实例电子资源管理(三)前台模板页编写

    总目录 插件目录结构(一) Admin后台页面编写(二) 前台模板页编写(三) URL重写(四) 本实例旨在以一个实际的项目中的例子来介绍如何在dtcms中制作插件,本系列文章非入门教程,部分逻辑实现 ...

  5. 成熟的C#网络通信框架介绍——ESFramework通信框架

    (转自:http://www.cnblogs.com/zhuweisky/archive/2010/08/12/1798211.html) ESFramework通信框架是一套性能卓越.稳定可靠.强大 ...

  6. 新手上路---Java学习知识梳理

    我随笔 我相信也有那么一些人跟我一样,脱下军装后对未来感到迷茫,不知所措甚至怀疑起自己的能力,自身体会的经历过才能明白其中的辛酸!归咎一切:心态,信心,自信!再穷不过乞讨,不死终将出头.好了,闲言碎语 ...

  7. Android Studio 首坑 Gradle sync failed: Cause: error in opening zip file 的错误

    前言 今天安装Android studio 2.3.1时发生了一个错误,安装完成后创建第一个Hello World项目是报错.经过这个百度后,结果没有一个靠谱的.将拆解经过记录一下. 环境: 操作系统 ...

  8. HotSpot的算法实现

    1.枚举根节点 可达性分析中从GC Roots节点找引用,可作为GC Roots的节点主要是全局性的引用与执行上下文中,如果要逐个检查引用,必然消耗时间.另外可达性分析对执行时间的敏感还体现在GC停顿 ...

  9. 服务器数据库挂掉 Can 't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock '(2) ";

    刚刚遇到这个报错,我无语了,我这么个菜逼,咋解决,还好师兄(付付)解决了,付付真棒,在此记录一下,以供学习 Can 't connect to local MySQL server through s ...

  10. JEESZ-Zookeeper集群安装

    1. 在根目录创建zookeeper文件夹(service1.service2.service3都创建) [root@localhost /]# mkdir zookeeper 通过Xshell上传文 ...