说明:
本文描述的是 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. FrameBuffer系列 之 相关结构与结构体

    在linux中,fb设备驱动的源码主要在Fb.h (linux2.6.28\include\linux)和Fbmem.c(linux2.6.28\drivers\video)两个文件中,它们是fb设备 ...

  2. linux操作系统中对大小端的判断

    static union { char c[4]; unsigned long l; } endian_test = { { 'l', '?', '?', 'b' } }; #define ENDIA ...

  3. 【转】QQ传输文件原理参考(来自互联网)

    QQ的文件发送是怎样的过程呢?通常,发送文件的计算机首先要通过消息服务器将其IP地址发送给接收计算机,当接收计算机同意接收的确认消息反馈到消息服务器后,消息服务器将据此设置好文件传输对话.随即,发送计 ...

  4. Markdown - 语法简介

    标题 在文字里书写不同数量的“#”可以完成不同的标题,如下: # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 列表 无序列表的使用,在 ...

  5. 修改maven本地仓库的默认地址

    由于maven默认仓库地址为C盘,所以缓存jar文件多了会占用掉C盘很多空间,鉴于此可更改maven仓库地址来避免.   1. 打开maven解压后目录,找到conf文件夹中的settion.xml文 ...

  6. JAVA中令人疑惑的字符串

    Java中不同的字符串存在于同一个存储池中,字符串变量将指向存储池中相应的位置,也就是字符串变量里面包含的并不是字符串而是这个字符串对象的内存地址. String a = "123" ...

  7. (原创)性能测试中,Oracle服务器定位CPU使用率高的瓶颈(SQL)

    本篇博客记录一次性能测试过程中,定位对CPU使用率高的瓶颈问题,主要定位SQL为准 一.用SQL命令定位1.首先用TOP命令监控系统资源,如果是AIX系统,就用topas,进入TOP命令的滚动刷新数据 ...

  8. hdu3586 Information Disturbing 树形DP+二分

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3586 题目大意:给定n个敌方据点,编号1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值c ...

  9. 如何在WebGL全景图上做标记

    WebGL可以用来做3D效果的全景图呈现,例如故宫的全景图.但有时候我们不仅仅只是呈现全景图,还需要增加互动.故宫里边可以又分了很多区域,例如外朝中路.外朝西路.外朝东路等等.我们需要在3D图上做一些 ...

  10. [大数据]-Elasticsearch5.3.1 IK分词,同义词/联想搜索设置

    --题外话:最近发现了一些问题,一些高搜索量的东西相当一部分没有价值.发现大部分是一些问题的错误日志.而我是个比较爱贴图的.搜索引擎的检索会将我们的博文文本分词.所以图片内容一般是检索不到的,也就是说 ...