linux(ubuntu12.04)下搭建负载均衡和tomcat集群

上一篇博客我们搭建了nginx+tomcat的服务器配置,可是实现静态和动态分离,但是只有一个tomcat。

所以,接下来在我们的机器上搭建多个tomcat,首先我们先复制一份以前的tomcat(我的tomcat是在/usr/local/下),执行命令

cp /usr/local/tomcat1 /usr/local/tomcat2

应为要两个不同的tomcat使用不同的环境变量,所以我们需要修改/etc/profile的文件配置信息

sudo gedit /etc/profile

然后修改成这样

    JAVA_HOME=/usr/java/jdk1.7.0_71
    CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin
    export JAVA_HOME CLASSPATH  

    # tomcat1
    CATALINA_BASE=/usr/local/tomcat1
    CATALINA_HOME=/usr/local/tomcat1
    export CATALINA_BASE CATALINA_HOME  

    # tomcat2
    CATALINA_2_BASE=/usr/local/tomcat2
    CATALINA_2_HOME=/usr/local/tomcat2
    export CATALINA_2_BASE CATALINA_2_HOME  

    TOMCAT_HOME=/usr/local/tomcat1
    export TOMCAT_HOME  

    TOMCAT_2_HOME=/usr/local/tomcat2
    export TOMCAT_2_HOME  

最后一步我们需要修改tomcat2里面的配置文件。首先我们修改tomcat2/bin下面的startup.sh和shutdown.sh 添加一下内容

export JAVA_HOME=/usr/java/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JAVA_HOME/bin

export CATALINA_HOME=$CATALINA_2_HOME
export CATALINA_BASE=$CATALINA_2_BASE  

然后进去tomcat2/server.xml中修改一下几个地方

<Server port="8005" shutdown="SHUTDOWN">
    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  

把8005->8006,8080->8081,8009->8010就好了(具体端口由自己定就行了)

然后进入tomcat1/bin,tomcat2/bi下面执行

./startup.sh

ok

用浏览器进去localhost:8080和localhost:8081看看把,两个tomcat就已经搭建成功了

-------------------------------------------------------------------------------------------------接下来实现负载均衡---------------------------------------------------------------------------------------------------------

NGINX负载的几种方式

nginx 的 upstream目前支持 4 种方式的分配

1)、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2)、weight

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

2)、ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。

3)、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。

4)、url_hash(第三方)‘

我们使用最简单的ip_hash来实现,而且还可以解决session问题,本来想用memcached来解决session问题,但是这几天一直不顺,快玩死了。先用着这个把,

ip_hash其实上不能够完全解决ip问题,因为有很多用户我ip随时都可能在变动,ip_hash这个名字你就知道,是通过hash散列的原理将用户的ip散列到指定的tomcat上,自然而然的想当然的解决了session问题,最好是用memcached存取来实现session共享好吧,下面看我的nginx.conf的配置:

    #运行nginx所在的用户名和用户组http://zyjustin9.iteye.com/blog/2017237,http://freeloda.blog.51cto.com/2033581/1288553
    #user  www www; 

    #启动进程数
    worker_processes 8;
    #全局错误日志及PID文件
    error_log  /usr/local/nginx/logs/nginx_error.log  crit;

    pid        /usr/local/nginx/nginx.pid;

    #Specifies the value for maximum file descriptors that can be opened by this process.

    worker_rlimit_nofile 65535;
    #工作模式及连接数上限
    events
    {
      use epoll;
      worker_connections 65535;
    }
    #设定http服务器,利用它的反向代理功能提供负载均衡支持
    http
    {
      #设定mime类型
      include       mime.types;
      default_type  application/octet-stream;
      include /usr/local/nginx/conf/proxy.conf;
      #charset  gb2312;
      #设定请求缓冲
      server_names_hash_bucket_size 128;
      client_header_buffer_size 32k;
      large_client_header_buffers 4 32k;
      #client_max_body_size 8m;

      sendfile on;
      tcp_nopush     on;

      keepalive_timeout 60;

      tcp_nodelay on;

    #  fastcgi_connect_timeout 300;
    #  fastcgi_send_timeout 300;
    #  fastcgi_read_timeout 300;
    #  fastcgi_buffer_size 64k;
    #  fastcgi_buffers 4 64k;
    #  fastcgi_busy_buffers_size 128k;
    #  fastcgi_temp_file_write_size 128k;

    #  gzip on;
    #  gzip_min_length  1k;
    #  gzip_buffers     4 16k;
    #  gzip_http_version 1.0;
    #  gzip_comp_level 2;
    #  gzip_types       text/plain application/x-javascript text/css application/xml;
    #  gzip_vary on;

      #limit_zone  crawler  $binary_remote_addr  10m;
    upstream tomcat{                      # 负载均衡站点的名称为tomcat,可以自己取
        ip_hash;           		 # 可选,根据来源IP方式选择web服务器,省略的话按默认的轮循方式选择web服务器
        server 127.0.0.1:8080;       # web服务器的IP地址及tomcat发布端口
        server 127.0.0.1:8081;
		    }
    server {
         listen       80;                   # 站点侦听端口80
         server_name  localhost;            # 站点名称

  	  location / {
        	root   html;
        	index  index.html index.htm;
        	proxy_pass http://tomcat;      # 负载均衡指向的发布服务tomcat
              }

	}

    }

这样就ok啦,在两个tomcat下面建立两个一样的项目,index.jsp文件

<html>
  <head><title>essun.node1</title></head>
  <body>    <h1><font color="blue">111111111111</font></h1>
    <table align="centre" border="1">
      <tr>
        <td>Session ID</td>
    <% session.setAttribute("essun.org","essun.org"); %>
        <td><%= session.getId() %></td>
      </tr>
      <tr>
        <td>Created on</td>
        <td><%= session.getCreationTime() %></td>
     </tr>
    </table>
 <p>

</body>
</html>

tomcat下面的项目的jsp是一样的最好能够把改成node2,然后你就可以访问http://localhost/UE2/index.jsp(项目我随便建的)

就可以看见不同的ip会映射到不同的tomcat上面去,但是这样其实不是完全的解决了session共享和负载均衡,还需要继续研究memcached

时间: 2024-08-01 21:29:36

linux(ubuntu12.04)下搭建负载均衡和tomcat集群的相关文章

nginx负载均衡实现tomcat集群方案简要小结

重点两部分:一.负载均衡二.tomcat集群 所谓tomcat集群,就是可以向外提供并行服务的多台机器,任何一台服务器宕机,其它服务器可以替代它向外提供服务,而不影响用户访问. nginx是一个常用的反向代理服务,可自定义模块,实现请求转发及负载均衡(根具体采用策略有关).为了tomcat集群的高可用性,还需要实现nginx的双机热备.  一,如果仅是对外提供一个页面访问,不用区分单一用户(不区分每个访问session,不涉及用户权限,用户资料等内容),仅仅配置nginx负载均衡策略即可. ng

Linux(ubuntu12.04)下搭建Nginx+Tomcat

首先是安装包的准备nginx7.9:下载nginx  |tomcat7.0下载tomcat  |JDk下载JDK7.0 Nginx的优点太多太多,比apache好很多,更加稳定,功能更加强悍,越来越多的开发人员选择使用nginx来替代apache!! 具体查看这篇文章http://blog.csdn.net/a454211787/article/details/22494485 首先,我们配置jdk,下载好jdk之后,我的默认实在download下面,然后使用linux命令解压 $tar zxv

lvs+heartbeat搭建负载均衡高可用集群

[172.25.48.1]vm1.example.com [172.25.48.4]vm4.example.com 集群依赖软件: 1.安装heartbeat集群软件 2.生成heartbeat配置文件. 3.配置heartbeat配置文件.

javaweb的负载均衡,tomcat集群和session共享

nginx+tomcat+redis   (依赖包下载) 1.redis配置(192.168.159.131:16300)(v2.8.3) 2.tomcat配置 tomcat1(192.168.159.130:8081) tomcat2(192.168.159.130:8082) 3.nginx安装在192.168.159.131. 首先,是配置tomcat,使其将session保存到redis上.有两种方法,也是在server.xml或context.xml中配置,不同的是memcached只

Ubuntu12.04下搭建Java环境

1.认识需要配置的环境变量 1). PATH: 作用是指定命令搜索路径,打开/etc/environment可以看到PATH变量的值,该变量包含了一系列的路径.那些路径都是一些经常使用的系统命令的目录地址,如:./sbin./bin等.在bash终端执行命令时,系统会自动到PATH变量所指定的路径中查找是否能找到相应的命令程序.因此,我们需要把jdk安装目录下的bin目录增加到现存的PATH变量中让使用java命令如同系统命令一样方便. 2). CLASSPATH: 作用是指定类搜索路径,让jv

linux(ubuntu12.04)下手机真机调试eclipse上的android程序

模拟器太慢了,而且在模拟器上运行程序的效果毕竟还是跟在真机上有点区别的,所以建议大家尽量使用真机调试.把android手机通过usb线连接至电脑,之后步骤如下: 1. 在/etc/udev/rules.d/目录下新建一个51-android.rules文件,文件内容为: SUBSYSTEM == "usb",ENV{DEVTYPE} == "usb_device",MODE = "0666" 2.$ sudo chmod a+rx /etc/ud

ubuntu12.04下搭建ftp服务器

楼主想把同学硬盘里面的200多G电影共享给实验室的小伙伴们看,就打算在内网服务器上搭建一个ftp的服务器. 1.安装ftp 首先在终端下键入如下内容,安装ftp服务器: sudo apt-get install vsftpd 2.配置ftp 修改ftp的配置文件,该文件在/etc目录下,在终端中键入如下命令以打开配置文件: sudo gedit /etc/vsftpd.conf 简单的修改以下几个配置项即可: #禁止匿名访问 anonymous_enable=NO #接受本地用户 local_e

ubuntu12.04下搭建ftpserver

楼主想把同学硬盘里面的200多G电影共享给实验室的小伙伴们看,就打算在内网server上搭建一个ftp的server. 1.安装ftp 首先在终端下键入例如以下内容,安装ftpserver: sudo apt-get install vsftpd 2.配置ftp 改动ftp的配置文件,该文件在/etc文件夹下,在终端中键入例如以下命令以打开配置文件: sudo gedit /etc/vsftpd.conf 简单的改动下面几个配置项就可以: #禁止匿名訪问 anonymous_enable=NO

linux系统下对网站实施负载均衡+高可用集群需要考虑的几点

随着linux系统的成熟和广泛普及,linux运维技术越来越受到企业的关注和追捧.在一些中小企业,尤其是牵涉到电子商务和电子广告类的网站,通常会要求作负载均衡和高可用的Linux集群方案. 那么如何实施linux集群架构,才能既有效保证网站健康运行,又能节省运维成本呢?下面依据近几年的运维经历,简单梳理下自己的一点感悟. (1)机房的选择如果有自己公司的机房那是再好不过的了:如果没有,建议放在BGP机房内托管,如果有选择的话,最好是选择带有硬件防火墙的机房,这样在安全方面也有保障:网站如若是放在