yui 发表于 2016-12-23 10:10:13

Nginx Tomcat Memcached 集群搭建

1.Ngnix 下载
http://nginx.org/en/download.html
本例使用的是1.0.2 版本的nginx
2.Tomcat 下载
http://tomcat.apache.org
本例使用的是6.0.18版本的tomcat
3.Memcached下载
http://memcached.org
本例使用的是1.4.5版本的memcached
4.其他相关下载
由于使用集群,所以tomcat 间的session 同步就显得尤为重要。
本例中使用memcached-session-manager 的插件进行session 的同步管理。
http://code.google.com/p/memcached-session-manager/download/list
本例使用的是1.4.1版本的memcached-session-manager
其他依赖的jar包还有
msm-javolution-serializer-1.4.1.jar
memcached-2.6.jar
javolution-5.4.3.1.jar
5.安装nginx
tar –xvf nginx-1.0.2.tar.gz 解包
然后进入nginx
Cd nginx
执行configure
./configure
系统会自动检查相应依赖关系, 有可能系统会却pcre library, 没关系,去网上下载一个就好,下载地址 http://www.pcre.org/
本例中使用的是8.02 版本的 pcre
同样解包, 执行./configure,然后就是 make & make install了
Pcre安装好后,同样的步骤安装nginx
./configure
Make
Make install
Nginx 的默认路径是在/usr/local/nginx
进入nginx的sbin下执行 ./nginx 即可启动nginx
重启的命令 ./nginx –s reload
6.配置nginx
进入nginx 的conf目录下,编辑nginx.conf即可
由于资源有限, 本例是在一台linux上进行, 所以这里就单就本例作以说明。
配置http 区块即可, 如果是https的请配置https 区块
http {
    include       mime.types;
    default_typeapplication/octet-stream;

    sendfile      on;
keepalive_timeout65;
   upstream mynginx {
server 10.1.1.3:8081 weight=1;
server 10.1.1.3:8082 weight=1;
   }
    server {
      listen      8080;
      server_namemynginx;
charset utf-8;

      location / {
            root   html;
            indexindex.html index.htm index.jsp;
   proxy_pass http://mynginx;
   proxy_set_header X-Real-IP $remote_addr;
      }

      error_page   500 502 503 504/50x.html;
      location = /50x.html {
            root   html;
      }
}
}

我们对相应的端口进行监听,如果有域名,并且是多台机器集群,可以直接监听80端口, 本例就是一非常简单的sample, 所以监听相应的8080端口.(请进入linux iptables打开8080端口的访问权).
Server_name : 我们的域名啦
Weight: 负载均衡时的权重优先级
proxy_pass: internet 访问的地址
upstream中就是关键了,这里配置了我们的tomcat, 设置相应tomcat所在机器的ip端口号, 以及权重

7.安装Tomcat
很简单, 直接解包即可
8.配置tomcat
在tomcat的conf/server.xml中将默认端口号修改成相应nginx配置文件的中的端口号
9.启动tomcat, reload nginx
这个时候访问 http://nginx机器ip:8080
你就会看到熟悉的小猫了,到此nginx 和tomcat的集群完成。
但是多tomcat 就涉及到session 同步的问题, 这里选择memcached-session-manager的解决方案
10.安装memcached
安装memcached的前提条件是,机器上有相应的libevent 库,如果没有的话,下载安装,和安装pcre差不多。安装完成后再解包安装memcached.(默认命令安装在/usr/local/bin/memcached)
安装完成后,启动memcached

/usr/local/bin/memcached –d –m 30 –u root –l 10.1.1.3 –p 12111 –P /tmp/memcached.pid

有可能会出现找不到libevent的情况,诊断:
Find / -name libevent-2.0.so.2 找到我们的文件在那
LD_DEBUG=libs /usr/local/bin/memcached –v 查看memcached 所查找该libevent的路径
可以发现memcached所需要的libevent的路径和我们安装的路径不一样, 解决的办法也很简单, 建一个软连接即可
Ln-s /usr/local/lib/libevent-2.0.so.2 /usr/lib/libevent-2.0.so.2
再次启动memcached 即可
11.配置memcached-session-manager
将step4下载的jar包放到各tomcat的lib下, 然后修改tomcat/conf/server.xml

<Context docBase="/home/pazzini/sessionTest1" path="" reloadable="true">
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager" memcachedNodes="n1:10.1.1.3:12111" requestUriIgnorePattern=".*\.(png|gif|jpg|css|js)$" sessionBackupAsync="false" sessionBackupTimeout="100" transcoderFactoryClass="de.javakaffee.web.msm.serializer.javolution.JavolutionTranscoderFactory" copyCollectionsForSerialization="false" />
</Context>
在我们的项目中, 加上manager的相关配置即可。
MemcachedNodes 中的n1是指memcached的节点,比如多个memcached 机器我们就可以配置多个节点,这样容灾性较好,对于本例来讲,由于都在一台机器上,就无所谓了。
12.重新启动全部tomcat
你会惊喜地发现session同步了,至此一个简单的集群解决方案完成
页: [1]
查看完整版本: Nginx Tomcat Memcached 集群搭建