当前位置: 首页 > 编程日记 > 正文

linux tomcat集群配置笔记

趁最后一天假期,配置linux环境下的apache集群,巩固下,免的以后用到又忘记,网上东拼息凑,环境弄好后,整到blog,以便以后用到。

参考来源:http://www.linuxidc.com/Linux/2011-03/32859.htm

我用的版本:

httpd-2.2.21.tar.gz

apache-tomcat-6.0.32.tar.gz

jdk-6u26-linux-i586.bin

jdk,和tomcat 环境配置忽略

a.在 /opt目录新增apache目录并将httpd-2.2.21.tar.gz copy到改目录中.

cd /opt

mkdir apache

tar zxf  httpd-2.2.21.tar.gz

cd httpd-2.2.21

然后配置 httped prefix

./configure --prefix=/opt/web/apache2 --enable-mods-shared=most # --prefix后面的红色路径可以根据实际情况自定义

然后屏幕会显示一大堆配置信息,完成后

make #开始编译

make install #编译后,进入安装阶段

cd /opt/solft/apache2/bin

./apachectl -k start #启动apache服务

如果如下提示信息,代表成功了

httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName

在浏览器中输入http://127.0.0.1/ 就可以看到 It works!
b.开始安装 mod_proxy.so和mod_proxy_ajp.so,mod_proxy_balancer.so模块
cd /opt/apache/httpd-2.2.21/modules/proxy
/opt/web/apache2/bin/apxs -i -a -c mod_proxy.c proxy_util.c
/opt/web/apache2/bin/apxs -i -a -c mod_proxy_ajp.c ajp*.c
/opt/web/apache2/bin/apxs -i -a -c mod_proxy_balancer.c
c.配置httpd.conf
vim /opt/web/apache2/conf/httpd.conf
ProxyPass /images !
ProxyPass /css !
ProxyPass /js !

ProxyRequests Off
ProxyPass /examples balancer://mycluster/ stickysession=JSESSIONID

ProxyPassReverse /examples balancer://mycluster/ stickysession=JSESSIONID
<Proxy balancer://mycluster>
     BalancerMember ajp://192.168.1.102:8009/examples/ route=worker1 loadfactor=1
     BalancerMember ajp://192.168.1.102:8909/examples/ route=worker2 loadfactor=1
</Proxy>
SetHandler balancer-manager

如图

#上面ip端口红色部分与apache-tomcat-x.x.x/config/server.xml  中<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 中的端口保持一直

d.编辑tomcat1/apache-tomcat-6.0.32/config/server.xml

server.xml文件,如果tomcat在不同机器上,则不需要修改,本人环境是本机上测试.所以其中的一个tomcat的端口一定要修改

需要修改的地方(红色部分)

<Connector port="8080" protocol="HTTP/1.1"
             connectionTimeout="20000"
             redirectPort="8443" />

<Server port="8005" shutdown="SHUTDOWN">

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

把这段信息<Engine name="Catalina" defaultHost="localhost"/>

用下面的配置信息覆盖,如果在本机中红色端口需要修改,jvmRoute参数不能一样

<Engine name="Catalina" defaultHost="localhost" jvmRoute="worker1"/>

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
          <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"
                   notifyListenersOnReplication="true"/>

          <Channel className="org.apache.catalina.tribes.group.GroupChannel">
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/>
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="192.168.1.102"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/>

            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
            </Sender>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
          </Channel>

          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>

    <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/>
          <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
          <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
     </Cluster>

e.配置tomcat.x.x.x/webapps/examples/WEB-INF/web.xml,加上红色部分,以支持seesion复制

在<webapp>

...........

.........

<distributable/>

</webapp>

最后.复制tomcat下webapps下的文件到 /opt/web/apache2/htdocs

cp –R  /opt/web/tomcat1/apache-tomcat-6.0.32/webapps/* /opt/web/apache2/htdocs

到这里负载均衡和session复配置已经完成

开始启动 apache2

cd /opt/web/apache2/bin

./apachectl -k start

启动2个tomcat

cd /opt/web/tomcat2/apache-tomcat-6.0.32/bin

./start.sh

cd /opt/web/tomcat1/apache-tomcat-6.0.32/bin

./start.sh

测试session 复制

http://192.168.1.102/examples/servlets/servlet/SessionExample

查看负载均衡

http://192.168.1.102/balancer-manager

但是有个问题,如果session有很多对象,而对象又不停的变化,这就使得seesion会消耗很大性能.

网上查了下,可以用memcached来做缓存应用.有时间再把这个整理下

转载于:https://www.cnblogs.com/montya/archive/2011/10/07/2190688.html

相关文章:

spring -- 自定义注解

我们直接通过代码解释自定义注解的使用及各个含义 package com.sysware.cloud.dts.annotation;import java.lang.annotation.*;Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) Inherited Documented public interface DtTransactional {/** Whether need to…

angular 字符串转换成数字_蓝盟IT外包,Python算法的一般技术和嵌入式库|python|字符串|key|算法|调用...

近年来&#xff0c;随着python着火&#xff0c;python也开始受到很多程序员的喜爱。 很多程序员已经开始使用python作为第一语言。最近在python上刷问题时&#xff0c;我想去找python的刷问题常用库api和刷问题技术。 和c的STL库文档一样&#xff0c;但很遗憾没有找到。 因此&a…

Mapping Persistence Classes 笔记2---ValueType的形式和映射

2010年5月17日 简介&#xff1a; 前面的笔记着重讲解了实体类以及其class-mapping options&#xff0c;本章笔记将关注值类型的形式以及其OR映射选项。 值类型一般可分为两类&#xff1a;JDK类型和用户自定义类型。本章首先从实体类的使用JDK类型的properties开始&#xff0c;讲…

安装wampserver及配置php,phpmyadmin遇到的问题及解决方法

wampserver 安装好以后&#xff0c;打开&#xff0c;发现appache无法启动&#xff0c;查了一下&#xff0c;发现是前安装过iis&#xff0c;iis使用80端口&#xff0c;打开httpd.conf&#xff0c;把里面所有的80都改成了81&#xff0c;然后appache就可以正常启动了。 再配置wamp…

as一种模拟输入效果

这个小程序展现的是一种模拟输入的效果&#xff0c;比如你在键盘上随便输入什么&#xff0c;在屏幕上就会依次的显示“这句话不是我输入的&#xff0c;呵呵”。比较有意思。 var s:Sprite new Sprite; var t:TextField new TextField(); var i:Number0; var myText:String&qu…

signature验证/salt验证/token验证的作用

1.salt验证: salt是随机生成的一串字符,salt验证的作用是将生成的salt与加密的密码密文拼接后再次加密存储 这样可以是存储在数据库中的密码更加安全 2.signature验证: I、将token, timestamp, nonce, encrypt的内容按照大小字母顺序排列 II、按顺序将列表中排序号的内容拼接成…

算法导论课后习题解析 第四章 上

4.1-1 返回只包含绝对值最小的元素的子数组。 4.1-2 Maximun-Subarray(A)max -infinityfor i 1 to A.lengthsum 0for j i to A.lengthsum sum A[i]if sum > maxmax sumlow ihigh jreturn (low, high, max)每次内循环都利用上次累加的结果&#xff0c;避免重复运算…

win10商店打不开_科技资讯:Win10系统电脑的应用商店老是打不开还闪退怎么办

最近关于Win10系统电脑的应用商店老是打不开还闪退怎么办在网上的热度是非常高的&#xff0c;很多网友们也都是非常关注Win10系统电脑的应用商店老是打不开还闪退怎么办这个事情&#xff0c;为此小编也是在网上进行了一番搜索查阅相关的信息&#xff0c;那么如果说有感兴趣的网…

[原]tornado源码分析系列(三)[网络层 IOLoop类]

引言&#xff1a;由于都是在工作当中抽出时间看源代码&#xff0c;所以更新速度比较慢&#xff0c;但是还是希望通过对好的源码的分析和探讨&#xff0c;大家相互学习&#xff0c;发现不好的地方共同讨论。 上次讲了IOLoop中的几个重要的方法&#xff0c;inistance() 和 add_ha…

参悟JavaScript

引子 编程世界里只存在两种基本元素&#xff0c;一个是数据&#xff0c;一个是代码。编程世界就是在数据和代码千丝万缕的纠缠中呈现出无限的生机和活力。 数据天生就是文静的&#xff0c;总想保持自己固有的本色&#xff1b;而代码却天生活泼&#xff0c;总想改变这个世…

SQL数据库无法附加 系统表损坏修复 数据库中病毒解密恢复

SQL数据库无法附加 系统表损坏修复 数据库中病毒解密恢复 开发此工具是为了 让手工恢复数据库物理故障时 更加简单便捷直观, 本工具用于物理修复独立处理大部分问题以及与DBCC配合完成修复各种数据库错误.特别是针对大型数据库上百G 上TB数据库&#xff0c;节约大量时间精力。 …

ODP.NET调用存储需要使用事务

今天发生在用ODP.NET调整一个存储过程时发生了两个奇怪的错误。 ORA-08103: object no longer exists ora-01410: invalid rowid网上都说是索引块有错误什么的&#xff0c;我索引也重建&#xff0c;表也重建了&#xff0c;但还是不行。 奇怪的是我直接测试存储过程是有结果的。…

HDU-1698-Just a Hook

HDU-1698-Just a Hook http://acm.hdu.edu.cn/showproblem.php?pid1698 还是成段更新线段树 #include<stdio.h> #include<string.h> #include<stdlib.h> #define N 100005 struct cam {int x;int y;int sum;int val; }list[N*4]; void build(int k,int x,in…

sketchup 255个su常用插件)_SketchUp领域的知乎,有胆来问!

你知道知乎、豆瓣、果壳……但你可能不知道【问吧】这是一个 SketchUp 领域的知乎(点击文末“阅读原文”可直接进入【问吧】)你可以找到关于 SketchUp 的任何话题&#xff1a;SketchUp、Vray、建模、插件、曲面、SUAPP、组件、导入、材质、渲染、导出、贴图、材质、错误报告、L…

js简单的抽屉菜单

闲暇时间用Jquery写了一个js简单的抽屉菜单。。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns"http://www.w3.org/1999/xhtml" > <…

checkedListBox的使用

1.添加项checkedListBox1.Items.Add("蓝色"); checkedListBox1.Items.Add("红色"); checkedListBox1.Items.Add("黄色");2. 判断第i项是否选中,选中为true,否则为falseif&#xff08;checkedListBox1.GetItemChecked(i)&#xff09;{return t…

Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...

尽管前面介绍的几种动画会让觉得很好玩了&#xff0c;但是&#xff0c;不知道你是否发现&#xff0c;在前面说到的一系列XXXAnimation中&#xff0c;都有一个共同点&#xff0c;那就是仅仅针对两个值的目标值之间产生动画&#xff0c;如果使用By&#xff0c;将在原值和加上By后…

性能定位常用命令整理

统计每秒钟Nginx收到多少请求&#xff1a; cat access.log | grep 2019:20:19:50 | wc -l 解释&#xff1a;access.log为Nginx的日志&#xff0c;通过Nginx的配置文件nginx.conf查看日志文件名称和位置&#xff0c;2019:20:19:50 表示获取20点19分50秒接收的请求数&#xff0c;…

4块硬盘做raid几_HP-P4500存储RAID硬盘离线数据恢复案例

在这里北亚小编分享一篇关于HP-P4500存储RAID硬盘离线数据恢复案例&#xff0c;经客户描述&#xff1a;一台HP-P4500的存储系统&#xff0c;底层是12块1TB的硬盘组的RAID。其中每6个1TB的盘一组&#xff0c;第一组的前面一部分组了一个RAID01&#xff0c;是存放HP-P4500嵌入式系…

十个利用矩阵乘法解决的经典题目

出自matrix67.com 好像目前还没有这方面题目的总结。这几天连续看到四个问这类题目的人&#xff0c;今天在这里简单写一下。这里我们不介绍其它有关矩阵的知识&#xff0c;只介绍矩阵乘法和相关性质。 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中&…

maven生命周期理解

你可以仅仅调用clean来清理工作目录&#xff0c;仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。 知道了每套生命周期的大概用途和相互关系以后&#xff0c;来逐个详细看一下每套生命周期&#xff0c;Clean和Site相对比较简单&…

安装envi出现cannot find lincese_Ubuntu 16.04 安装 CUDA10.1 (解决循环登陆的问题)

0. 前言直接用 cuda安装文件同时安装 NVIDIA 驱动和 CUDA&#xff0c;没有单独安装更高版本的 NVIDIA 驱动&#xff1b;为避免浪费显存&#xff0c;图形化界面显示是在Intel 集显环境下&#xff0c;NVIDIA 独显做计算&#xff1b;循环登陆问题是因为安装时没有加 --no-opengl-l…

POJ1067_取石子游戏_威佐夫博弈

/* *State: 1067 Accepted 176K 16MS C 435B *题目大意&#xff1a; * 威佐夫博弈 *解题思路&#xff1a; * 略。 */ #include <iostream> #include <stdio.h> #include <cmath> using namespace std;int main(void) {int big,…

cuda cudnn pytorch版本对应关系

1. cuda和cudnn版本对应关系 https://developer.nvidia.com/rdp/cudnn-archive#a-collapse742-10 转载于:https://www.cnblogs.com/yeran/p/11345990.html

【转载】WinCE OAL架构分析

转载自&#xff1a;http://blog.csdn.net/nanjianhui/article/details/3830452 我个人认为OAL应该是WinCE BSP中最为重要的一个模块了&#xff0c;简单回顾一下&#xff0c;WinCE BSP由Bootloader&#xff0c;Drivers&#xff0c;OAL和配置文件组成。Bootloader一般指EBOOT&…

centos7 中搭建gitlab

1、在virtual box中新建一个虚拟机 2、gitlab ce&#xff08;community版本&#xff09;地址&#xff1a;https://about.gitlab.com/installation/#centos-7?versionce 如果在执行如下安装命令提示无法连接&#xff0c; sudo EXTERNAL_URL"http://gitlab.example.com&quo…

androidstudio jni开发_初识NDK开发(一)

“ 前言&#xff1a;初学逆向 请多多指教 昨天在看雪论坛发了篇文章&#xff0c;被标记了优秀&#xff0c;不由得感叹 这一个月没有白学&#xff01; 剩下还有11个月 冲了”学习到的内容—1、了解了什么是NDK&#xff0c;以及在android studio中的环境搭建中注意的事项2、pthre…

http编程学习(C#)

《HTTP Programming Recipes for C# Bots》 第一章 选择GET还是POST取决于传送到服务器的数据的多少。GET传送的数据少&#xff0c;POST几乎对传送的数据无限制。 It is important to note that only one physical file is transferred per HTTP request. 每次HTTP请求只传送了…

服务器远程免密登录

1. 生成本地密钥 ssh-keygen2. 将密钥上传到服务器 ssh-copy-id -p port username192.128.128.128 3. 创建登录脚本 ssh -p port username192.128.128.128 转载于:https://www.cnblogs.com/yeran/p/11348045.html

如何触发AspxGridview的PageIndexChanged 客户端事件

&#xff1f;最近在使用AspxGridview控件时&#xff0c;遇到一个问题&#xff0c;就是在触发AspxGridview分页事件之后&#xff0c;需要在执行js事件&#xff0c;找了好久&#xff0c;在官网上找到处理的办法。 就是在cs页面设置变量在触发PageIndexChanged事件后&#xff0c;改…