Nginx+双tomcat+memcache实现软负载

前言;

       为应对访问量大的web请求,单台tomcat 已不能应对突如其来的故障,为不间断的为用户提供服务,我们可以采用nginx+tomcat的方式实现负载均衡的访问控制。当多台tomcat协同工作时,最主要的问题是session如何实现共享,接下来本文就告诉你,如何配置。


 

环境:

192.168.1.199   nginx 监听80端口

192.168.1.220   memcache 监听11211端口

192.168.1.200   tomcat 1 监听8080

192.168.1.201   tomcat 2 监听8088


一、安装 centos 7 64位版

 

1、安装centos 7 64位版。我安装的版本是CentOS-7.0-1406-x86_64-DVD.iso

下载地址:http://ftp.yzu.edu.tw/Linux/CentOS/7.0.1406/isos/x86_64/

2、Centos的安装,略。

 

3、配置网卡

Centos安装完成后,默认网卡未启用,通过修改以下配置文件启用

Vi  /etc/sysconfig/network-script/ifcfg-eth0

 

修改里面的ONBOOT=yes,如果要手动配置静态IP,修改BOOTPROTO=static

然后添加:

IPADDR=ip地址

NETMASK=子网掩码

GATEWAY=网关

DNS1=DNS解析地址。

存盘,重启网卡或服务器;

 

4、安装相关的工具:

A、安装网络工具相关

yum  install  net-tools  //安装了后,可使用ifconfig一类的工具 

B、安装编译相关

yum install  gcc-c++  zlib  zlib-devel  openssl  openssl--devel  pcre  pcre-devel

 

 

二、Nginx安装与配置

 

1、这里直接采用yum 方式安装了。如果是编译方式,请查找相应的文档。

yum  install  nginx

 

安装完成后,查看一下安装的位置 

Find  -name nginx

 

一般是放在了/etc/nginx

 

2、配置nginx支持负载

修改配置文件:nginx.conf为如下内容,该文件在/etc/nginx目录下

 

user  nginx;

worker_processes  1;

 

error_log  /var/log/nginx/error.log warn;

pid        /var/run/nginx.pid;

 

events {

    worker_connections  1024;

}

 

http {

    include       /etc/nginx/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  /var/log/nginx/access.log  main;

 

    sendfile        on;

    #tcp_nopush     on; 

 

    #include /etc/nginx/conf.d/*.conf;

    keepalive_timeout  0;

    #keepalive_timeout  65;

    #gzip  on;

 

upstream 192.168.1.199{

#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。 

server 192.168.1.200:8088 weight=3;

server 192.168.1.201:8080 weight=3; 

}

    server {

        listen       80;

        server_name  192.168.1.199;

 

        #charset koi8-r;

 

        #access_log  logs/host.access.log  main;

 

        location / {

            #root   html;

            #index  index.html index.htm;

            proxy_pass http://192.168.1.199;

            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;

        }

 

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80

        #

        #location ~ \.php$ {

        #    proxy_pass   http://127.0.0.1;

        #}

 

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        #

        #location ~ \.php$ {

        #    root           html;

        #    fastcgi_pass   127.0.0.1:9000;

        #    fastcgi_index  index.php;

        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

        #    include        fastcgi_params;

        #}

 

        # deny access to .htaccess files, if Apache's document root

        # concurs with nginx's one

        #

        #location ~ /\.ht {

        #    deny  all;

        #}

    }

}

 

 

3、启动nginx

直接执行:nginx

停止nginx : nginx -s stop

更多命令,可以nginx -h 查看帮助

 

 

 

三、安装Memcache

这个比较简单,可以下载一个windows版本的,直接打开执行就可以了。

如果有不会的,请查询相关的资料。

 

Memcache的默认端口是11211

 

在本例中,我把memcache安装在了:192.168.1.220上端口为11211

 

四、配置Tomcat

这里我们采用两个tomcat,如果都部署在不同机器上,请修改sever.xml里的端口,如果部署在同一台机器上,请修改相关的端口, 与NGINX里配置的端口对应上。

tomcat集成memcache的方式有好几种:

Flexjson-session

Java-session

Javolution-session

Kryo-session

Xstream-session

 

有说kryo方式效率相对较高一点。这里我们使用kryo-session方式。使用kryo-session方式需要以下的jar包:



1、配置tomcatcontex.xml如下:

 

将下面的配置,添加到两个tomcat中的contex.xml文件中:

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

    memcachedNodes="n1:192.168.1.220:11211"   

lockingMode="auto"

sticky="false" 

requestUriIgnorePattern= ".*\.(png|gif|jpg|css|js)$"    

sessionBackupAsync= "false"   

sessionBackupTimeout= "100"    

copyCollectionsForSerialization="true"   

transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"    

  />

 

2、启动相关应用,顺序为:

Nginx

Memcache

Tomcat

 

3、编写测试网页,并放到tomcat的应该目录下:

这个放在tomcat 2里:Webapps\ROOT\t.jsp  

 

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%>

SessionID: <h1><%=session.getId()%></h1>  

<BR>  

SessionIP:<%=request.getServerName()%>  

<BR>  

SessionPort:<%=request.getServerPort()%>  

<h1>tomcat 2 <h1/>

 

这个放在tomcat 1中:Webapps\ROOT\t.jsp  

 

<%@ page contentType="text/html;charset=UTF-8" isELIgnored="false"%> 

SessionID: <h1><%=session.getId()%></h1>  

<BR>  

SessionIP:<%=request.getServerName()%>  

<BR>  

SessionPort:<%=request.getServerPort()%>  

<h1>来自tomcat 1 <h1/>



五、看看效果

 

1、直接访问两个tomcat地址




2、访问nginx监听的地址


再刷新一下



成功,我们发现。sessionID并没有变化,配置成功!



最后再附上,集成了相关session共享的jar包的tomcat,测试通过了的

apache-tomcat 7 集成了memcache-java-session相关包



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值