手把手教你负载均衡-tomcat1.7+nginx+memcached

一.为什么开始写博文

      最近郑州这边也兴起了,像北上广面试的时候需要问有技术博客,参与过开源的github项目吗,都30的人了,现在开始写我想也不晚,现在开始吧自己的学习都记录下来,之前很多东西都了解,但是缺少纪录,现在开始纪录吧。

二.为什么开始搞负载均衡

      做了多年的企业内部的java开发一直只限于写代码,带项目也是针对内网来的一个tomcat来跑,用户量也很少,自己也不怎么跳槽(导致知识面比较窄),都是业务上比较熟悉,根据需求都可以完成开发。

      公司的战略开始互联网项目,开始了解了负载均衡,开始恶补跟之前的同事进行交流,了解了nginx,通过了解发现很多的互联网网站都是实用的nginx,访问一些网站报的404都是nginx报的,才知道原来可以通过nginx下配置多个tomcat来进行负载一个tomcat的压力。好神奇尴尬

      公司的人员访问量并发越来越多,开始预见性的尝试使用,但是nginx和tomcat使用后发现一个问题后台无法登陆,nginx来回的跳转,真是日了狗了。了解了原来是3个tomcat之前没有进行session的共享。尝试自己解决一下,了解了memcached 可以实现sesson的共享。

三 .我的负载思路

     nginx 负责跳转下面3个tomcat,3个tomcat用memcached负责进行session的共享,3个tomcat的内容完全一样,现在我吧操作步骤一步一步告诉大家希望多分享交流

     关于centos下nginx  和 mysql,jdk安装我之前的博文有直接观看吧

     1.三个空的tomcat

 

      2.tomcat目录结构 

 

    3.加入memcached的lib的jar包(我用的mac本的UltraEdit)

      3.1ultraEdit-文件--浏览

        

      3.2 查看3个tomcat路径种lib是否有新加入的

        

       3.3 查看3个tomcat的conf中的server.xml文件的修改

         

       修改关闭端口 我的分别是

  1. tomcat1:18005
  2. tomcat2:28005
  3. tomcat3:38005

      修改连接端口 我的分别是

  1. tomcat1:18080
  2. tomcat2:28080
  3. tomcat3:38080 

    

 

     修改长链接端口我的分别是

  1. tomcat1:18009
  2. tomcat2:28009
  3. tomcat3:38009

     

     修改Engine 起对应的名称

  1. tomcat1     jvmRoute=“tomcat1”
  2. tomcat2     jvmRoute ="tomcat2"
  3. tomcat3     jvmRoute ="tomcat3"

   

 

 修改Context中  docBase 是对应webapp里面的项目名称,3个tomcat中都加入这样的代码

 <Context docBase="mfb" path="/mfb" reloadable="false" source="org.eclipse.jst.jee.server:mfb">
      <Manager  
			className="de.javakaffee.web.msm.MemcachedBackupSessionManager"  
			memcachedNodes="n1:127.0.0.1:11211"  
			sticky="false"  
			sessionBackupAsync="false"  
			lockingMode="uriPattern:/path1|/path2"  
			requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"  
			transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"/> 
      </Context>

 

访问后http://192.168.1.201:18080/mfb/manage/admin.jsp

 

访问后http://192.168.1.201:28080/mfb/manage/admin.jsp

 

访问后http://192.168.1.201:38080/mfb/manage/admin.jsp

 

   4.安装memcached

4.1查询命令

yum  search  memcached

 

 

 

4.2 安装命令

yum  -y install memcached

 

 4.3 命令帮助

  memcached –h

 

 注意:默认的端口是11211 

 

 4.3 加入service服务命令

 

chkconfig --level 2345 memcached on 

     以后就可以通过service memcached start|stop|restart等命令来启动、关闭、重启memcached服务。

 

 

 

5.nginx的配置

5.1进入nginx的conf路径

 

 

5.2创建gzip.conf写入

    gzip              on;  
    gzip_min_length      1000;  
    gzip_types         text/plain text/css application/x-javascript;  

 

5.3创建proxy.conf空文件(注意:Host $host:180;是根据我的nginx访问的端口来的因为我本机centos80端口已经占用了我改了下端口)

proxy_redirect          off;
proxy_set_header        Host $host:180;
proxy_set_header        X-Real-IP $remote_addr;
proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size    10m;
client_body_buffer_size 128k;
proxy_connect_timeout   300;
proxy_send_timeout      300;
proxy_read_timeout      300;
proxy_buffer_size       4k;
proxy_buffers           4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;

 5.4修改nginx.conf

#Nginxwindow
#user  niumd niumd;

#CPU2CPU
worker_processes  4;

#
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
error_log  logs/error.log  info;

#pid
pid        logs/nginx.pid;

events {
    #IOlinuxepollFreeBSDkqueuewindow
    #use epoll;
    
    #
    worker_connections  2048;
}

http {

    include       mime.types;
    include      proxy.conf;
    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  off;
    access_log  logs/access.log;

    client_header_timeout  3m;
    client_body_timeout    3m;
    send_timeout           3m;
 
    client_header_buffer_size    1k;
    large_client_header_buffers  4 4k;

    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;

    #keepalive_timeout  75 20;

    include    gzip.conf;
    upstream localhost {
      #iptomcatsession
      #ip
      #ip_hash; 
      server localhost:18080;
      server localhost:28080;
      server localhost:38080;
     }

    server {
            listen       180;
            server_name  localhost;   

            location / {
            		proxy_connect_timeout   3;
            		proxy_send_timeout      30;
            		proxy_read_timeout      30;
                proxy_pass http://localhost;
            }
            
   }
}

  5.5 启动试试

    启动:

./nginx  

  关闭:

./nginx -s stop

 

 

 

三 .大功告成

1.启动nginx

2.启动mencached

3启动tomcat

 

 

 

 

关于tomcat的配置  和 nginx的配置附件可以下载

猜你喜欢

转载自394498036.iteye.com/blog/2290085