nginx+tomcat负载均衡实现session共享

Nginx+tomcat 负载均衡

一、环境介绍

1.本次实验共3台虚拟机(rhel6.2-64)

     192.168.232.147(nginx)

     192.168.232.154(tomcat)

     192.168.232.155(tomcat)

2.安装并配置JDK

3.配置相关环境变量(profile,hosts)

4.准备好一个web项目,以便用于测试是否负载均衡,本次实验用一以前写的权限管理的模块

二、安装配置tomcat

1.在192.168.232.154,192.168.232.155机器安装tomcat

2.下载一个linux版本的apache-tomcat-7.0.64.tar.gz解压即可用

3.在<Host>标签里添加

<Context  path="" docBase="/root/webapps/permission" reloadable="false"/>

4.创建/root/webapps目录,然后把permission这个web项目放到该目录下,启动tomcat,访问

http://192.168.232.154:8080/ , http://192.168.232.154:8080/ 可以访问到permission项目的首页。

这里可以放任意的web项目,我好久没写WEB项目了,所以手头上没有现存的web项目可用,所以随便找了4年前写的权限管理的web项目就拿来用了。


三、安装配置Nginx

1.下载nginx-1.2.6.tar.gz 并解压放到指定的目录下

2.确保nginx编译所具备的运行环境

3.安装pcre-devel openssl openssl-devel

(1)配置本地yum,使得yum安装时能找到安装包

(2)安装:yum -y install pcre-devel openssl openssl-devel

4.创建www用户:useradd www

5.准备编译安装环境

./configure --user=www --group=www --prefix=/usr/local/nginx  --with-http_stub_status_module --with-http_ssl_module

6.编译安装,进到nginx解压的根目录:cd /root/app/nginx-1.2.6

make && make install

7.检查nginx安装是否成功

[root@storm1 nginx-1.2.6]# /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

8.访问nginx默认主页:http://192.168.232.147:80/,可以看到nginx欢迎主页面

到此Nginx安装完毕


四、配置nginx+tomcat集成,其实只需配置nginx,tomcat不用动

1.进到安装指定的目录:/usr/local/nginx,把nginx.conf简单的改成如下

user  www www;
worker_processes  1;
pid     /usr/local/nginx/logs/nginx.pid;
events {
    use epoll;
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    include     /usr/local/nginx/conf/proxy.conf;
    sendfile        on;
    tcp_nopush      on;
    keepalive_timeout  65;
    log_format  $upstream_addr  $status $request_time   $time_local     $remote_user    $http_user_agent;
    upstream panguoyuan.com {
      server  192.168.232.154:8080;
      server  192.168.232.155:8080;
                }

        server{
            listen 80;
            server_name panguoyuan.com;
            location / {
                proxy_pass         http://panguoyuan.com;
                proxy_set_header   Host             $host;
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
            }
        }
}

2.在192.168.232.147机器上的hosts如下

[root@storm1 conf]# cat /etc/hosts
192.168.232.147 storm1
192.168.232.154 storm2
192.168.232.155 storm3
192.168.232.147 panguoyuan.com

3.启动服务并验证负载均衡

分别在192.168.232.154,192.168.232.155机器把tomcat服务启动

在192.168.232.147把nginx服务启动:/usr/local/nginx/sbin/nginx

到此为止,nginx+tomcat负载均衡安装配置结束

用浏览器访问:panguoyuan.com,然后分别在192.168.147的/usr/local/nginx/logs/access.log 和192.168.232.154,192.168.232.155机器上的/root/app/apache-tomcat-7.0.64/logs目录下的localhost_access_log.2015-09-04.txt文件里都会记录有响应客户端的访问日志。


一台机器多实例的改进方案

在从性能和资源的利用率角度来分析,企业应用部署都不会在一台服务器上只部署一个实例,一般至少都两个实例以上进行部署,所以下面我在192.168.232.154和192.168.232.155上分别启动两个实例。

1.把上面的apache-tomcat-7.0.64重命名为tomcat1,再把tomcat1复制一份命名为tomcat2

2.在tomcat2中的server.xml的相关端口修改如下信息

(1)8005---->9005

(2)8080---->9090

(3)8009---->9009

保存退出,然后把tomcat1,tomcat2都启动,从以下图可看出6个端口都已经开启了


(4)另一台机器也重复做同样的操作

3.修改/usr/local/nginx/conf/nginx.conf

 upstream panguoyuan.com {
      server  192.168.232.154:8080;
      server  192.168.232.154:9090;
      server  192.168.232.155:8080;
      server  192.168.232.155:9090;
   }

4.重启nginx,访问panguoyuan.com,然后分别到4个tomcat下查看localhost_access_log.2015-09-04.txt日志,都可以看到有访问的日志信息。



session共享

一、安装memcached

1.下载安装包

 wget http://www.monkey.org/~provos/libevent-1.3.tar.gz

 wget http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz

2.在安装memcached之前必须先安装libevent

(1)tar -zxvf libevent-1.3.tar.gz

(2)进到libevent-1.3

      ./configure --prefix=/usr

      make && make install

测试libevent是否安装成功

[root@storm3 libevent-1.3]#  ls -al /usr/lib | grep libevent
lrwxrwxrwx   1 root root     21 Sep  5 02:06 libevent-1.3.so.1 -> libevent-1.3.so.1.0.3
-rwxr-xr-x   1 root root 313551 Sep  5 02:06 libevent-1.3.so.1.0.3
-rw-r--r--   1 root root 502116 Sep  5 02:06 libevent.a
-rwxr-xr-x   1 root root    805 Sep  5 02:06 libevent.la
lrwxrwxrwx   1 root root     21 Sep  5 02:06 libevent.so -> libevent-1.3.so.1.0.3

3.安装memcached

# tar -xzvf memcached-1.2.2.tar.gz
# cd memcached-1.2.2
# ./configure --with-libevent=/usr
# make
# make install

4.检查memcached是否安装成功

[root@storm3 memcached-1.2.2]#  ls -al /usr/local/bin/mem*
-rwxr-xr-x 1 root root 142620 Sep  5 02:12 /usr/local/bin/memcached
-rwxr-xr-x 1 root root 153737 Sep  5 02:12 /usr/local/bin/memcached-debug

5.启动memcached服务

/usr/local/bin/memcached -d -m 10 -u root -l 192.168.232.155 -p 12000 -c 256 -P /tmp/memcached.pid

6.启动memcached时报错并解决

/usr/local/bin/memcached: error while loading shared libraries: libevent-1.3.so.1: cannot open shared object file: No such file or directory

7.解决办法,执行如下两个命令

(1)LD_DEBUG=libs memcached -v

(2)ln -s /usr/lib/libevent-1.3.so.1 /usr/lib64/libevent-1.3.so.1

(3)再次启动

    /usr/local/bin/memcached -d -m 10 -u root -l 192.168.232.155 -p 12000 -c 256 -P /tmp/memcached.pid


8.测试memcached

[root@storm3 memcached-1.2.2]# telnet 192.168.232.155 12000
Trying 192.168.232.155...
Connected to 192.168.232.155.
Escape character is '^]'.
set username 0 0 10
panguoyuan
STORED
get username
VALUE username 0 10
panguoyuan
END

二、向tomcat的lib目录下添加memcached的依赖包

couchbase-client-1.0.3.jar  memcached-session-manager-1.5.1.jar      msm-kryo-serializer-1.5.1.jar
javolution-5.4.3.1.jar      memcached-session-manager-tc7-1.5.1.jar  msm-xstream-serializer-1.5.1.jar
memcached-2.6.jar           msm-javolution-serializer-1.5.1.jar

三、修改tomcat的content.xml的内容

 <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"   
    memcachedNodes="n1:192.168.232.155:12000"   
    requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$"   
    sessionBackupAsync="false"   
    sessionBackupTimeout="100"   
    transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory"   
    copyCollectionsForSerialization="false" />  

四、启动tomcat



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值