最近不是很忙,用零碎时间做点小小的实验。

以前公司采用F5负载均衡交换机,F5将请求转发给多台服务器,每台服务器有多个webserver实例,每个webserver分布在多台服务器,交叉式的分布集群。F5只是简单了解,毕竟那玩意几十万的价格实在不是我一个小喽喽能弄来做试验玩的,而起公司也不能开放权限。后来知道apache、Nginx软件可以实现负载(F5是操作于IOS网络模型的传输层,Nginx、apache是基于http反向代理方式,位于ISO模型的第七层应用层。直白些就是TCP UDP 和http协议的区别,Nginx不能为基于TCP协议的应用提供负载均衡。)

现在对window下对Nginx+tomcat负载均衡做配置尝试,将全部请求转发到tomcat,并未做静态,动态分开,图片防盗链等配置,一切先简单来,后续慢慢添加完善。

用到软件:

Nginx ,两个tomcat ,eclipse肯定要有了,web项目自备,其他无。

1、下载nginx

2、目录结构

Nginx-

|_  conf   配置目录

|_  contrib

|_  docs 文档目录

|_  logs  日志目录

|_  temp 临时文件目录

|_  html 静态页面目录

|_  nginx.exe 主程序

window下安装Nginx极其简单,解压缩到一个无空格的英文目录即可(个人习惯,担心中文出问题),双击nginx启动,这里我安装到:D:\server目录,下面涉及到的tomcat也安装在此目录。

nginx启动:到目录下执行nginx

nginx停止:nginx -s stop

3、下载两个版本的tomcat6。

下面就是关键的配置问题了。

Nginx配置文件默认在conf目录,主要配置文件为nginx.conf,我们安装在D:\server\nginx-1.6.2、默认主配置文件为D:\server\nginx-1.6.2\nginx.conf。下面是nginx作为前端反向代理服务器的配置

nginx.conf

 #Nginx所用用户和组
#user niumd niumd; #工作的子进程数量(通常等于CPU数量或者2倍于CPU)
worker_processes ; #错误日志存放路径
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log logs/error.log info; #指定pid存放文件
pid logs/nginx.pid; events {
#使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue
#use epoll; #允许最大连接数
worker_connections ;
} http {
include 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 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 4k; sendfile on;
tcp_nopush on;
tcp_nodelay on; #keepalive_timeout ; include gzip.conf;
upstream localhost {
#ip_hash
#ip_hash;
server localhost:;
server localhost:;
} server {
listen ;
server_name localhost; location / {
proxy_connect_timeout ;
proxy_send_timeout ;
proxy_read_timeout ;
proxy_pass http://localhost;
} }
}

gzip压缩相关配置如下:

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

下面为tomcat的配置,这个大家应该很熟悉了

我这里有两个tomcat6,分别为apache-tomcat-6.0.37-8081和tomcat-6.0.18-8080,意思很明白一个用8081端口一个用8080端口,修改server.xml配置文件即可,端口修改这里不提。

启动两个tomcat成功后。检验效果的时候到了。

浏览器输入:http://localhost/user/test.do这是我自己项目的链接,查看连个服务的后台日志是否有打印,结果OK一切顺利。

期间顺带解决问题:去掉url中项目名称的问题。解决方法在server.xml加如下代码,path属性不填,正常情况为项目名,docBase为发布的地址,可以不再tomcat目录下大家随意。

      <Context docBase="D:\server\apache-tomcat-6.0.37-8081\wtpwebapps\项目名" path="" reloadable="true" source="org.eclipse.jst.jee.server:mySpring"/></Host>

好!今天接着来。

上面配置简单的分发后,问题是接踵而至啊。首先nginx每次分发后seesionid都会变化,也就是每次登陆后刷新几次还要重新登录,可能觉的是服务器session丢失了,其实不然,服务器的session还在,只是你的sessionid变了,那问题来了,seesion怎么共享呢。有个简单的方法nginx的配置文件中设置ip_hash。

upstream localhost {
ip_hash;
server localhost:;
server localhost:;
}

这样同一的ip会分发到一个服务器,session就可以取到了。

当然服务器挂掉后,ng肯定会给你分发到其他的服务器,session又没了。方法不是很理想啊。

-----------------------------------------------------------------------------------------------------------

话题接着继续

基于apache的tomcat负载均衡和集群配置的更多相关文章

  1. 基于apache的tomcat负载均衡和集群配置session共享

    接上面的话题接着继续完善.为什么没接到上篇呢?原因很简单太长的文章不爱看!就像有人写了上千行的方法一样,不是逼得没办法谁爱看谁看,反正我不看. 期间我没有一次配置成功,从失败的开始说起, 1.准备ja ...

  2. apache的tomcat负载均衡和集群配置 "

    略看了一下,感觉太复杂,要配置的东西太多,因此在这里写出一种更简洁的方法. 要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务 ...

  3. 基于Apache的Tomcat负载均衡和集群(2)

    反向代理负载均衡 (Apache+JK+Tomcat) 使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web服务器之一上,从而达到负载均衡的目的.这种代理方式 ...

  4. 基于nginx的tomcat负载均衡和集群

    要集群tomcat主要是解决SESSION共享的问题,因此我利用memcached来保存session,多台TOMCAT服务器即可共享SESSION了. 你可以自己写tomcat的扩展来保存SESSI ...

  5. 使用apache和nginx代理实现tomcat负载均衡及集群配置详解

    实验环境: 1.nginx的代理功能 nginx proxy: eth0: 192.168.8.48 vmnet2 eth1: 192.168.10.10 tomcat server1: vmnet2 ...

  6. apache + tomcat 负载均衡分布式集群配置

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  7. Apache、Tomcat负载均衡与集群

    一. 环境准备 1.软件下载 a) apache_2.0.55-win32-x86-no_ssl.msi: b) apache-tomcat-5.5.17.rar c) mod_jk-apache-2 ...

  8. 基于mod_proxy+Apache 2.2.16+Tomcat 7的负载均衡与集群配置

    第一章. 背景简介 对于大多数企业应用,都希望能做到7*24小时不间断运行.要保持如此高的可用性并非易事,比较常见的做法是将系统部署到多台机器上,每台机器都对外提供同样的功能,这就是集群.系统变为集群 ...

  9. Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)

    最近公司要给客户提供一套集群方案,项目组采用了Apache和Tomcat的集群配置,用于实现负载均衡的实现. 由于以前没有接触过Apache,因此有些手生,另外在网上搜寻了很多有关这方面的集群文章,但 ...

随机推荐

  1. mongodb的查询语句学习摘要

    看了些资料,对应只需要知道怎么查询和使用mongodb的我来说,这些足够啦. 左边是mongodb查询语句,右边是sql语句.对照着用,挺方便. db.users.find() select * fr ...

  2. objccn-相机工作原理

    感觉这个世界上最幸福的事情就是工作和兴趣结合到一起了.这一阵子总是在听再看有关摄影的种种,今天在objccn上又看到这个,哈哈~ 轻轻一按,相机就把光子转化成了比特,于是一张照片就保存到了手机里. 一 ...

  3. 整合SSM时报错:java.lang.AbstractMethodError: org.mybatis.spring.transaction.SpringManagedTransaction.getTimeout()Ljava/lang/Integer;

    在整合Spring和MyBatis时,只进行了简单的插入操作,结果报了这个错,顿时整个人都崩溃了 -- 一点都看不懂嘛!只有网上搜索 结果是在使用MyBatis3.x和Spring4.x整合是 导入的 ...

  4. 同步异步,阻塞非阻塞 和nginx的IO模型

    同步与异步 同步和异步关注的是消息通信机制 (synchronous communication/ asynchronous communication).所谓同步,就是在发出一个*调用*时,在没有得 ...

  5. CDN -- 集合

    weui https://cdnjs.cloudflare.com/ajax/libs/weui/0.4.3/style/weui.min.css 百度静态资源库 http://cdn.code.ba ...

  6. web前端学习部落22群开源分享 左边菜单导航

    有大量web前端开发工具及学习资料,可以搜群[ web前端学习部落22群 ]进行下载,遇到学习问题也可以问群内专家以及课程老师哟 <!DOCTYPE html> <html lang ...

  7. (转)Oracle 获取上周一到周末日期的查询sql语句

    -- Oracle 取上周一到周末的sql -- 这样取的是 在一周内第几天,是以周日为开始的 select to_char(to_date('20130906','yyyymmdd'),'d') f ...

  8. 获取到Android控件的高度

    问题 如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth.getMeasuredWidth不就可以获得了吗,但是,事实上是并没有简单 ...

  9. tp框架之增删改查

    控制器 <?php namespace Home\Controller; use Think\Controller; class CeShiController extends Controll ...

  10. 基于Libevent的HTTP Server

    简单的Http Server 使用Libevent内置的http相关接口,可以很容易的构建一个Http Server,一个简单的Http Server如下: #include <event2/e ...