Tomcat集群部署
LVS+NGINX+TOMCAT 集群实施操作记录

IP:Eth0:192.168.100.115Eth1:192.168.100.215Vi /etc/init.d./lvs#!/bin/sh## lvs Start lvs## chkconfig: 2345 08 92# description: Starts, stops and saves lvs#SNS_VIP=192.168.100.215SNS_RIP1=192.168.100.114SNS_RIP2=192.168.100.113. /etc/rc.d/init.d/functions#logger $0 called with $1retval=0start(){#set squid vip/sbin/ipvsadm --set 30 5 60#/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up#/sbin/route add -host $SNS_VIP dev eth0:0/sbin/ipvsadm -A -t $SNS_VIP:80 -s rr/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1 -g/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2 -gtouch /var/lock/subsys/ipvsadm > /dev/null 2 >&1echo "ipvsadm started"}stop(){/sbin/ipvsadm -C/sbin/ipvsadm -Z#ifconfig eth0:0 down#route del $SNS_VIPrm -rf /var/lock/subsys/ipvsadm > /dev/null 2 >&1echo "ipvsadm stoped"}status(){if [ ! -e /var/lock/subsys/ipvsadm ];thenecho "ipvsadm stoped"exit 1elseecho "ipvsadm OK"fi}case "$1" instart)start;;stop)stop;;status)status;;restart)stopstart;;*)echo $"Usage: $0 {start|stop|status}"retval=1esacexit $retvalkeepalvivedtar xf keepalived-1.2.7.tar.gzcd keepalived-1.2.7./configure --prefix=/ --mandir=/usr/local/share/man/ --with-kernel-dir=/usr/src/kernels/2.6.32-279.el6.x86_64Makemake installcd /etc/keepalived/mv keepalived.conf keepalived.conf.default chkconfig --add keepalivedchkconfig keepalived onvim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {root@localhost}notification_email_from root@localhost smtp_server 127.0.0.1smtp_connect_timeout 30router_id Director1}#VRRP(虚拟路由冗余协议)实例配置vrrp_instance VI_1 {state MASTERinterface eth0virtual_router_id 51priority 150advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.122.254/24 eth1}}#LVS配置virtual_server 192.168.100.215 80 {delay_loop 3lb_algo rrlb_kind DRnat_mask 255.255.255.0# persistence_timeout 50protocol TCPreal_server 192.168.100.113 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 10nb_get_retry 3delay_before_retry 3}}real_server 192.168.100.114 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 10nb_get_retry 3delay_before_retry 3}}}}LVS-realserverIp 192.168.100.113Ip 192.168.100.114Vi /etc/init.d/rsup#!/bin/bashVIP=192.168.100.215ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up #route add –host $VIP dev lo:0echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/lo/arp_announceecho "1" >/proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" >/proc/sys/net/ipv4/conf/all/arp_announce#sysctl –pIp 192.168.100.122(nfs)Ip 192.168.100.113Ip 192.168.100.114#安装zlibtar xzvf zlib-1.2.3.tar.gzcd zlib-1.2.3./configuremake && make install#安装pcretar zxvf pcre-7.9.tar.gzcd pcre-7.9./configure --prefix=/usr/local/pcremake && make installwget /download/nginx_mod_h264_streaming-2.2.7.tar.gztar -zxvf nginx_mod_h264_streaming-2.2.7.tar.gzunzip nginx_upstream_check_module-master.zipmv ./nginx_upstream_check_module-master /root/healthtar -xvf nginx-1.4.1.tar.gz -C /usr/src/useradd nginxcd /usr/src/nginx-1.4.1patch -p1 < /root/health/check_1.2.6+.patch./configure --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_flv_module --add-module=../nginx_mod_h264_streaming-2.2.7 --with-pcre=/softw are/pcre-7.9 --with-zlib=/software/zlib-1.2.3 --prefix=/usr/local/nginx --add-module=/root/healthmake && make install/usr/local/nginx/sbin/nginx开机自动启动vi /etc/init.d/nginx#!/bin/bash## nginx - this script starts and stops the nginx daemin# chkconfig: - 85 15# description: Nginx is an HTTP(S) server, HTTP(S) reverse \ # proxy and IMAP/POP3 proxy server# processname: nginx# config: /usr/local/nginx/conf/nginx.conf# pidfile: /usr/local/nginx/logs/nginx.pid# Source function library.. /etc/rc.d/init.d/functions# Source networking configuration.. /etc/sysconfig/network# Check that networking is up.[ "$NETWORKING" = "no" ] && exit 0nginx="/usr/local/nginx/sbin/nginx"prog=$(basename $nginx)NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"lockfile=/var/lock/subsys/nginxstart() {[ -x $nginx ] || exit 5[ -f $NGINX_CONF_FILE ] || exit 6echo -n $"Starting $prog: "daemon $nginx -c $NGINX_CONF_FILEretval=$?echo[ $retval -eq 0 ] && touch $lockfilereturn $retval}stop() {echo -n $"Stopping $prog: "killproc $prog -QUITretval=$?echo[ $retval -eq 0 ] && rm -f $lockfilereturn $retval}restart() {configtest || return $?stopstart}reload() {configtest || return $?echo -n $"Reloading $prog: "killproc $nginx -HUPRETVAL=$?echo}force_reload() {restart}configtest() {$nginx -t -c $NGINX_CONF_FILE }rh_status() {status $prog}rh_status_q() {rh_status >/dev/null 2>&1 }case "$1" instart)rh_status_q && exit 0$1;;stop)rh_status_q || exit 0$1;;restart|configtest)$1;;reload)rh_status_q || exit 7$1;;force-reload)force_reload;;status)rh_status;;condrestart|try-restart)rh_status_q || exit 0;;*)echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"exit 2esac############################################################################## 改权限chmod 755 /etc/init.d/nginxchkconfig nginx onchkconfig --list nginxnginx 0:off 1:off 2:on 3:on 4:on 5:on 6:offservice nginx startservice nginx stopservice nginx restartservice nginx reload/etc/init.d/nginx start/etc/init.d/nginx stop/etc/init.d/nginx restart/etc/init.d/nginx reloadNginx 配置文件vi /usr/local/nginx/conf/nginx.conf#user nginx nginx;worker_processes 12;error_log /usr/local/nginx/logs/error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 65535;events{use epoll;worker_connections 204800;}http{include mime.types;default_type application/octet-stream;charset utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 2k;large_client_header_buffers 4 4k;client_max_body_size 8m;sendfile on;tcp_nopush on;keepalive_timeout 60;fastcgi_cache_path /usr/local/nginx/fastcgi_temp levels=1:2keys_zone=TEST:10minactive=5m;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 1638;fastcgi_buffers 16 16k;fastcgi_busy_buffers_size 16k;fastcgi_temp_file_write_size 16k;fastcgi_cache TEST;fastcgi_cache_valid 200 302 1h;fastcgi_cache_valid 301 1d;fastcgi_cache_valid any 1m;fastcgi_cache_min_uses 1;fastcgi_cache_use_stale error timeout invalid_header http_500;open_file_cache max=204800 inactive=20s;open_file_cache_min_uses 1;open_file_cache_valid 30s;tcp_nodelay on;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;upstream nginx_server {ip_hash;server 192.168.100.122:80;}upstream web_server {ip_hash;server 192.168.100.131:9001;server 192.168.100.132:9001;server 192.168.100.133:9001;server 192.168.100.134:9001;check interval=3000 rise=2 fall=5 timeout=1000;}upstream napi_server {ip_hash;server 192.168.100.131:9002;server 192.168.100.132:9002;server 192.168.100.133:9002;server 192.168.100.134:9002;server 192.168.100.131:9003;server 192.168.100.132:9003;server 192.168.100.133:9003;server 192.168.100.134:9003;server 192.168.100.131:9004;server 192.168.100.132:9004;server 192.168.100.133:9004;server 192.168.100.134:9004;check interval=3000 rise=2 fall=5 timeout=1000;}upstream oapi_server {ip_hash;server 192.168.100.131:9005;server 192.168.100.132:9005;server 192.168.100.133:9005;server 192.168.100.134:9005;server 192.168.100.131:9006;server 192.168.100.132:9006;server 192.168.100.133:9006;server 192.168.100.134:9006;check interval=3000 rise=2 fall=5 timeout=1000;}server {listen 80;server_name localhost;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html|mp3|wma|wmv)${root /usr/wodm/;proxy_pass http://nginx_server;}location ~ .*\.(js|css)?${expires 1h;}location /NginxStatus{stub_status on;access_log on;auth_basic "NginxStatus";#auth_basic_user_file conf/htpasswd;}location /nstatus {check_status;access_log off;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}}log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';access_log /usr/local/nginx/logs/access.log access;include /usr/local/nginx/conf/vhost/*.conf;}Nginx(nfs)Nginx.conf#user nginx nginx;worker_processes 16;#worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;error_log /usr/local/nginx/logs/error.log crit;pid /usr/local/nginx/logs/nginx.pid;worker_rlimit_nofile 204800;events{use epoll;worker_connections 204800;}http{include mime.types;default_type application/octet-stream;charset utf-8;server_names_hash_bucket_size 128;client_header_buffer_size 2k;large_client_header_buffers 4 4k;client_max_body_size 8m;sendfile on;tcp_nopush on;keepalive_timeout 60;fastcgi_cache_path /usr/local/nginx/fastcgi_cache levels=1:2keys_zone=TEST:10minactive=5m;fastcgi_connect_timeout 300;fastcgi_send_timeout 300;fastcgi_read_timeout 300;fastcgi_buffer_size 1638;fastcgi_buffers 16 16k;fastcgi_busy_buffers_size 16k;fastcgi_temp_file_write_size 16k;fastcgi_cache TEST;fastcgi_cache_valid 200 302 1h;fastcgi_cache_valid 301 1d;fastcgi_cache_valid any 1m;fastcgi_cache_min_uses 1;fastcgi_cache_use_stale error timeout invalid_header http_500;open_file_cache max=204800 inactive=20s;open_file_cache_min_uses 1;open_file_cache_valid 30s;tcp_nodelay on;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;server{listen 80;server_name localhost;index index.php index.htm;root /usr/wodm/;location /status{stub_status on;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|html|mp3|wma|wmv)${expires 30d;}}log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for';access_log /usr/local/nginx/logs/access.log access;标准字符集vi /etc/sysconfig/i18nLANG="zh_CN.UTF-8" SYSFONT="latarcyrheb-sun16" SUPPORTED="zh_CN.UTF-8:zh_CN:zh"LANG="zh_CN.GB18030"SUPPORTED="zh_CN.GB18030:zh_CN:zh:en_US.UTF-8:en_US:en"打开文件数vi /etc/security/limits.conf* soft nofile 65535* hard nofile 65535vi /etc/pam.d/loginsession required /lib/security/pam_limits.songinx 日志按天分割vi nginx_log.sh#!/bin/bashlogs_path="/usr/local/nginx/logs/"pid_path="/usr/local/nginx/nginx.pid"mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").logkill -USR1 `cat ${pid_path}`chmod 755 nginx_log.shcrontab –e0 0 * * * bash /usr/local/nginx/nginx_log.shTomcat memcachetar xf libevent-1.4.11-stable.tar.gzcd libevent-1.4.11-stable./configuremakemake installcd ../tar xf memcached-1.4.5.tar.gzcd memcached-1.4.5./configuremakemake install/usr/local/bin/memcached -d -m 10 -u root -l 192.168.1.113 -p 11211 -c 1024 -P /tmp/memcached.pidMemcache+tomcat 共享session后续计划尚未配置。
tomcat面试题

tomcat面试题Tomcat是一个开源的Servlet容器,用于实现Java Servlet和JavaServer Pages(JSP)的运行环境。
它是应用服务器中最受欢迎的选择之一,广泛应用于企业级web应用的开发与部署。
对于准备面试Tomcat相关职位的求职者来说,掌握Tomcat的原理、架构以及常见问题的解决方法是至关重要的。
本文将介绍一些常见的Tomcat面试题,并对其进行详细解答。
1. 请简要介绍一下Tomcat的架构。
Tomcat的架构可以分为三个主要的组件:Connector、Container和Servlet。
Connector组件负责处理网络连接,对客户端的请求进行接收和回应。
它通过使用协议(如HTTP、HTTPS等)来与客户端进行通信。
Container组件是Servlet容器,负责管理和执行Servlet的生命周期。
它包含了Servlet的加载、实例化、初始化、调用以及销毁等操作。
Tomcat中最重要的容器是Engine、Host和Context。
Servlet是Java编写的服务器端组件,用于处理客户端的请求。
Tomcat通过Servlet实现了动态的网页生成和处理。
2. 如何在Tomcat中配置SSL证书以实现HTTPS连接?要在Tomcat中实现HTTPS连接,需要进行以下配置:第一步,生成自签名SSL证书。
可以使用Java提供的keytool工具来生成证书文件。
第二步,将生成的证书文件配置到Tomcat的server.xml文件中。
找到Connector标签,增加以下属性:keystoreFile、keystorePass、protocol和SSLEnabled。
第三步,修改web.xml文件,将待保护的资源设置为需要HTTPS连接访问。
找到安全约束(security-constraint)标签,在其中设置<transport-guarantee>标签为CONFIDENTIAL。
Tomcat集群与负载均衡

Tomcat集群与负载均衡(转载)在单一的服务器上执行WEB应用程序有一些重大的问题,当网站成功建成并开始接受大量请求时,单一服务器终究无法满足需要处理的负荷量,所以就有点显得有点力不从心了。
另外一个常见的问题是会产生单点故障,如果该服务器坏掉,那么网站就立刻无法运作了。
不论是因为要有较佳的扩充性还是容错能力,我们都会想在一台以上的服务器计算机上执行WEB应用程序。
所以,这时候我们就需要用到集群这一门技术了。
在进入集群系统架构探讨之前,先定义一些专门术语:1. 集群(Cluster):是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信。
应用程序可以通过网络共享内存进行消息传送,实现分布式计算机。
2. 负载均衡(Load Balance):先得从集群讲起,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机。
如一个提供Web服务的集群,对外界来看是一个大Web服务器。
不过集群的节点也可以单独提供服务。
3. 特点:在现有网络结构之上,负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量,加强网络数据处理能力,提高网络的灵活性和可用性。
集群系统(Cluster)主要解决下面几个问题:高可靠性(HA):利用集群管理软件,当主服务器故障时,备份服务器能够自动接管主服务器的工作,并及时切换过去,以实现对用户的不间断服务。
高性能计算(HP):即充分利用集群中的每一台计算机的资源,实现复杂运算的并行处理,通常用于科学计算领域,比如基因分析,化学分析等。
负载平衡:即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
目前比较常用的负载均衡技术主要有:1. 基于DNS的负载均衡通过DNS服务中的随机名字解析来实现负载均衡,在DNS服务器中,可以为多个不同的地址配置同一个名字,而最终查询这个名字的客户机将在解析这个名字时得到其中一个地址。
FineReport关于tomcat集群部署的方案

FineReport关于tomcat集群部署的方案多台服务器集群后,配置权限、数据连接、模板、定时调度等,只能每台服务器一个个配置,不会自动同步到所有服务器。
针对上述情况,在FineReport中提供新集群部署插件,将xml配置文件、finedb/logdb 数据(定时任务、报表目录管理、批量导入、统计信息)的修改都对主机生效。
其他辅机的信息读取也都从主机读取,保证了数据同步。
实现了灾备,即主机当即后,次主机会上位接替主机的工作,保证系统正常运作。
同时还增加了集群灾备之文件同步,会将主机的finedb、xml、模板、jar包、插件等等备份到其他节点的应用上。
支持可以手动同步和自动同步。
插件介绍设计器插件、服务器插件安装好之后,新集群部署,有主机、次主机、辅机之分,配置文件都从主机读取,辅机只能用作计算引擎分担压力,有点事当改配置文件的时候,不需要每个节点都去修改,直接改主机即可。
分布式集群分布式集群文件系统:每台计算机各自提供自己的存储空间,并各自协调管理所有计算机节点中的文件。
这里测试修改主机的报表管理目录树平台标题,然后可以看到辅机会同步修改的配置。
其中报表管理目录树存在finedb中,平台样式的平台标题存在fsconfig.xml中。
•环境准备设置tomcat1、tomcat2、tomcat3集群,tomcat1为主机,tomcat2为辅机,tomcat3为次主机,tomcat集群。
WebReport工程分别放在tomcat下的webapps文件夹里配置文件集群配置完成之后,修改将配置包resource文件夹下的cluster.xml打开,如果没有这个文件的话,就新建一个,基本内容如下:PublicURL是集群默认跳转地址,比如集群时对外地址是自定义端口的,ip:8888/WebReport/ReportServer?op=fs我们并不能获取到这个8888端口,因此这里需要填写实际的ip:端口号,如果这段省略不写,默认跳转80端口。
通过+Terracotta实现基于Tomcat的Web应用集群

本文介绍如何配置Tomcat和Terracotta服务器将普通的Web应用部署到集群中,实现跨Tomcat节点的session 复制,以达到负载均衡、提高系统吞吐量和灾难恢复的效果。
基本原理简介一般利用T omcat搭建Web应用集群有如下几种方法:1、利用负载均衡器的粘session的方式把所有同一session的请求都发送到相同的T omcat节点。
这样不同用户的请求就被平均分配到集群中各个tomcat节点上,实现负载均衡的能力。
这样做的缺点是没有灾难恢复的能力。
一旦一个节点发生故障,这个节点上所有的session信息全部丢失;2、利用T omcat session复制的机制使得所有session在所有Tomcat节点中保持一致。
当一个节点修改一个session数据的时候,该节点会把这个session的所有内容序列化,然后广播给所有其它节点。
这样当下一个用户请求被负载均衡器分配到另外一个节点的时候,那个节点上有完备的session信息可以用来服务该请求。
这种做法的问题是对session哪怕有一点点修改,也要把整个sessions数据全部序列化(serialize),还要广播给集群中所有节点,不管该节点到底需不需要这个session。
这样很容易会造成大量的网络通信,导致网络阻塞。
一般采用这种方式,当Tomcat节点超过4个时候,整个集群的吞吐量就不能再上升了;3、第三种方式是通过cookie保存用户信息的一个或几个关键字,每一个http请求到达web应用的时候,web 程序拿这个关键字到数据库中读取相关的数据,然后对其进行处理。
也就是说把session数据保存到了数据库中。
这样以来在内存中的session就完全不需要了。
这样做的缺点就是加大了数据库的负载,使得数据库变成了集群的瓶颈。
而通过构造数据库集群提高负载能力往往需要高额的成本。
Terracotta的基本原理是对于集群间共享的数据,当在一个节点发生变化的时候,T erracotta只把变化的部分发送给T erracotta服务器,然后由服务器把它转发给真正需要这个数据的节点。
tomcat部署项目

第一种方法:在tomcat中的conf目录中,在server.xml中的,<host/>节点中添加:
<Context path="/hello" docBase="D:eclipse3.2.2forwebtoolsworkspacehelloWebRoot" debug="0" privileged="true">
runtime.getruntime().exec("cmd /c start "+strjavahome+"jar cvf hello.war c:\\tomcat5.0\\webapps\\root\\*");
}
catch(exception e){system.out.println(e);}
注意:删除一个Web应用同时也要删除webapps下相应的文件夹祸server.xml中相应的Context,还要将Tomcat的conf
\catalina\localhost目录下相应的xml文件删除。否则Tomcat仍会岸配置去加载。。。
webapps这个默认的应用目录也是可以改变。打开Tomcat的conf目录下的server.xml文件,找到下面内容:
<Host name="localhost" debug="0" appBase="webapps" unpackWARs="true" autoDeloy="true" xmlValidation="falase" xmlNamespaceAware="false">
Windows系统下Apache24+Tomcat7集群配置

准备工作1.httpd-2.4.23-x64-vc14-r3.zip(64位)和httpd-2.4.23-x86-vc14-r3.zip(32位)2.vc_redist.x64.exe(64位)和vc_redist.x86.exe(32位)3.apache-tomcat-7.0.73-windows-x64.zip(64位)和apache-tomcat-7.0.73-windows-x86.zip(32位)httpd-2.4.23-x64-vc14-r3.ziph和vc_redist.x64.exe下载地址:/Tomcat下载地址/安装配置安装apche(我选择的都是32位)1解压安装安装目录F:\ApacheTomcat,将httpd-2.4.23-x86-vc14-r3.zip解压到安装目录如图:2 安装apache服务F:\ApacheTomcat\Apache24\bin\httpd -k install如果安装失败提示如下图。
则需要安装vc_redist.x64.exe(64位)或vc_redist.x86.exe(32位)然后再运行提示:F:\ApacheTomcat\Apache24\bin>httpd -k installInstalling the 'Apache2.4' serviceThe 'Apache2.4' service is successfully installed.Testing httpd.conf....Errors reported here must be corrected before the service can be started.httpd: Syntax error on line 39 of F:/ApacheTomcat/Apache24/conf/httpd.conf: ServerRoot must be a valid directoryF:\ApacheTomcat\Apache24\bin>找到F:\ApacheTomcat\Apache24\conf\httpd.conf文件第38行,将Define SRVROOT"/Apache24"改为绝对路径Define SRVROOT "F:/ApacheTomcat/Apache24"。
Linux平台Apache高可用双机集群Tomcat负载均衡集群配置手册

Linux平台Apache双机高可用集群+ Tomcat负载均衡集群配置手册在这个配置手册中,使用的操作系统和软件清单如下:操作系统:RedHat Enterprise Linux AS4 U4 64bit(安装时最好选择完全安装)软件:jdk-1_5_0_15-linux-amd64.binTomcat5.5.26httpd-2.0.63.tar.gzjakarta-tomcat-connectors-jk2-src-current.tar.gzipvsadm-1.24.tar.gzlibnet.tar.gzheartbeat-2.1.3-3.el4.centos.x86_64.rpmheartbeat-pils-2.1.3-3.el4.centos.x86_64.rpmheartbeat-stonith-2.1.3-3.el4.centos.x86_64.rpm因为是linux操作系统,所以在安装软件时请使用对应自己操作系统内核的软件,这是整个集群成功的第一步。
本配置手册中的软件都是对应RedHat Enterprise Linux AS4 U4 64bit 这个版本的软件。
jdk-1_5_0_15-linux-amd64.binJAVA环境包使用的是64位1.5版Tomcat版本为公司指定的5.5版本Apache为2.0.63版jakarta-tomcat-connectors-jk2-src-current.tar.gz是连接Apache和Tomcat的连接插件,具体可以去Tomcat网站上查找下载ipvsadm-1.24.tar.gzlibnet.tar.gz这两个是用于2台Apache服务器虚拟一个IP地址使用heartbeat-2.1.3-3.el4.centos.x86_64.rpmheartbeat-pils-2.1.3-3.el4.centos.x86_64.rpmheartbeat-stonith-2.1.3-3.el4.centos.x86_64.rpm这3个软件是用于2台Apache服务器之间的心跳检测结构图Apache1以以以以以Tomcat1Tomcat2Apache22台Tomcat服务器使用Tomcat软件可以自己做集群,2台Apache服务器需要其他的软件实现虚拟服务器功能,工作站访问虚拟IP地址访问2台Apache服务器,再通过Apache服务器访问Tomcat服务器第3 页总13 页1.安装JAVA环境包1)输入命令:./ jdk-1_5_0_15-linux-amd64.bin执行完毕后,会在当前目录下生成一个JDK-1.5.0_15的文件夹2)在 /usr/local/下新建一个名字为JAVA文件夹,将个JDK-1.5.0_15的文件夹拷入到该文件夹下3)设置环境变量。
Tomcat 部署项目的三种方法

Tomcat 部署项目的三种方法1、下载Tomcat 服务器官网下载地址:/回到顶部2、启动并部署Tomcat 服务器①、解压tomcat 安装包到一个非中文目录下②、配置环境变量。
JAVA_HOME(指向JDK 安装的根目录)③、双击apache-tomcat-6.0.16\bin 目录下的startup.bat,启动服务器(如果一闪而过,那就是没有配置JAVA_HOME 的环境变量)④、在浏览器中输入http://localhost:8080注意:Tomcat 启动不了的时候注意配置JAVA_HOME:C:\ProgramFiles\Java\jdk1.6.0_43这是安装JDK的根目录回到顶部3、Tomcat 的目录结构4、部署项目的第一种方法(项目直接放入webapps 目录中)1、将编写并编译好的web项目(注意要是编译好的,如果是eclipse,可以将项目打成war 包放入),放入到webapps 中2、启动tomcat服务器(双击apache-tomcat-6.0.16\bin 目录下的startup.bat,启动服务器)3、在浏览器输入:http://localhost:8080/项目名/访问的文件名5、部署项目的第二种方法(修改conf/server.xml 文件)①、打开tomcat下conf/server.xml,在1path:浏览器访问时的路径名docBase:web项目的WebRoot所在的路径,注意是WebRoot的路径,不是项目的路径。
其实也就是编译后的项目reloadble:设定项目有改动时,tomcat是否重新加载该项目②、双击startup.bat,启动tomcat 服务器,然后在浏览器输入访问的项目名称路径注意:如果你配置的path="/xx",那么访问的时候就是这样:6、部署项目的第三种方法(apache-tomcat-7.0.52\conf\Catalina\localhost )①、进入到apache-tomcat-7.0.52\conf\Catalina\localhost 目录,新建一个项目名.xml 文件②、在那个新建的xml 文件中,增加下面配置语句(和上面的是一样的,但是不需要path 配置,加上也没什么用)1③、在浏览器输入路径:localhost:8080/xml文件名/访问的文件名总结:①、第一种方法比较普通,但是我们需要将编译好的项目重新copy 到webapps 目录下,多出了两步操作②、第二种方法直接在server.xml 文件中配置,但是从tomcat5.0版本开始后,server.xml 文件作为tomcat 启动的主要配置文件,一旦tomcat 启动后,便不会再读取这个文件,因此无法再tomcat 服务启动后发布web 项目③、第三种方法是最好的,每个项目分开配置,tomcat 将以\conf\Catalina\localhost 目录下的xml 文件的文件名作为web 应用的上下文路径,而不再理会中配置的path 路径,因此在配置的时候,可以不写path。
Tomcat集群及负载均衡配置

Tomcat集群及负载均衡配置在单一的服务器上执行Web应用程序有一些重大问题,当网站的请求量越来越大,单一服务器终究无法满足需要处理的负荷量,所以就显得有点力不从心;而且还存在的问题是会产生单点故障,如果该服务器宕掉,那么网站就无法运作。
不论是因为要有较佳的扩充性还是容错能力,我们都会想在一台以上的服务器上执行Web应用程序。
所以,这时候我们就需要用到集群这一门技术。
1术语介绍1.1 集群集群是一组协同工作的服务实体,用以提供比单一服务实体更具扩展性与可用性的服务平台。
在客户端看来,一个集群就像是一个服务实体,但事实上集群由一组服务实体组成。
与单一服务实体相比较,集群提供了以下两个关键特性: 可扩展性--集群的性能不限于单一的服务实体,新的服务实体可以动态地加入到集群,从而增强集群的性能。
高可用性--集群通过服务实体冗余使客户端免于轻易遇到out of service 的警告。
在集群中,同样的服务可以由多个服务实体提供。
如果一个服务实体失败了,另一个服务实体会接管失败的服务实体。
集群提供的从一个出错的服务实体恢复到另一个服务实体的功能增强了应用的可用性。
1.2 负载均衡负载的基础是集群,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同的硬件构成的计算机。
如一个提供Web 服务的集群,对外界看来是一个大Web服务器。
负载均即把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
2常用负载均衡技术常用手负载均衡技术有以下几种HTTP重定向DNS负载均衡反向代理负载均衡IP负载均衡(NAT)直接路由IP隧道本文介绍的是第三种使用apahce+tomcat的反向代理的负载均衡,使用代理服务器可以将请求转发全内部的Web服务器,让代理服务器均匀地转发给多台内部web服务器之一上,从而达到负载均衡目的。
这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。
tomcat部署(配置文件)

tomcat部署(配置⽂件)⼀、启动tomcat服务器的⽅式1. 直接到tomcat服务器的bin⽬录下双击startup.bat2. 通过cmd进⼊bin⽬录,输⼊命令startup.bat1. 但这时会出现的问题是,服务器启动程序只是⼀闪⽽过,为什么呢?其实问题就是,没有Java的JDK,我们需要到环境变量配置系统变量JAVA_HOME。
我们都知道,1.5 以上的版本的JDK只需要配置path变量就可以了。
但是如果你想在机器上使⽤tomcat的话,你就必须配置JAVA_HOME,指向JDK的安装位置。
配置好之后我们就可以正常打开tomcat了,双击startup.bat,tomcat正常启动。
启动完成后,我们在浏览器地址栏上输⼊:http://localhost:8080,会得到以下的界⾯⼆、配置环境变量我们需要配置系统变量:ATALINA_BASE:指向tomcat的安装位置CATALINE_HOME:指向tomcat的安装位置Path:%CATALINA_HOME%\lib;%CATALINA_HOME%\bin三、配置tomcat的端⼝号tomcat的默认服务端⼝是8080。
可以通过配置⽂件来改变该服务端⼝,甚⾄通过修改配置⽂件让tomcat同时在多个端⼝提供服务tomcat的配置⽂件都放在conf⽬录下。
使⽤⽆格式⽂本编辑器打开该⽬录下的server.xml⽂件,定位到68⾏处<Connector port="8080" protocol="HTTP/1.1"connectionTimeout="20000"redirectPort="8443" />其中,port="8080"就是web应⽤的服务端⼝,将8080改为任意端⼝,建议使⽤1024以上的端⼝,避免与公⽤端⼝冲突。
集群部署方案

集群部署方案引言随着互联网的快速发展,越来越多的企业或组织需要构建大规模的系统来应对高并发和大数据量的处理需求。
集群部署方案作为一种解决方案,可以有效地提高系统的可靠性、扩展性和性能。
本文将介绍什么是集群部署方案以及如何选择合适的集群部署方案进行应用。
什么是集群部署方案集群部署是一种将多个计算机组成一个逻辑上相互独立但可以互相通信和协作的集合体的方法。
集群部署可以提供高可用性、高性能和可扩展性,从而提高系统的稳定性和性能。
在集群部署方案中,通常会有一个主节点和多个工作节点。
主节点负责整个集群的管理和协调工作,而工作节点负责执行具体的任务。
通过将任务分散到多个工作节点上进行并行处理,可以提高系统的处理能力和响应速度。
选择集群部署方案的考虑因素在选择集群部署方案时,需要考虑以下几个因素:1. 可用性可用性是指系统在遇到故障或异常情况时能够继续提供服务的能力。
要保证集群的高可用性,需要选择具备故障转移、自动重启和负载均衡等功能的集群部署方案。
2. 性能性能是衡量系统处理能力的指标,对于需要处理大数据量或高并发请求的系统尤为重要。
选择高性能的集群部署方案可以提高系统的响应速度和吞吐量,提升用户体验。
3. 可扩展性可扩展性是指系统能够在需要增加处理能力时进行水平或垂直扩展的能力。
选择具备良好可扩展性的集群部署方案可以使系统更容易进行扩展和升级,以满足不断增长的需求。
4. 系统复杂性部署和管理一个集群系统可能会涉及到复杂的配置和操作,因此选择一个易于使用和管理的集群部署方案非常重要。
简化的部署流程和可视化的管理界面可以降低系统管理的复杂性。
常用的集群部署方案下面介绍几种常用的集群部署方案:1. KubernetesKubernetes是一个开源的容器编排工具,可以自动化地部署、扩展和管理容器化应用程序。
Kubernetes提供了高可用性、负载均衡和自动伸缩等功能,使得应用程序可以在集群环境中弹性地运行。
2. Apache MesosApache Mesos是一个分布式系统内核,可以提供跨集群资源管理和任务调度的功能。
TOMCAT5.5集群与负载均衡部署配置文档

TOMCAT5.5集群与负载均衡部署配置文档版本V1.0目录1 负载均衡原理和基本特点 (2)1.1 负载技术 (2)1.2 技术特点简介 (2)1.2.1 集群原理 (2)1.2.2 负载均衡与故障复原 (3)1.2.3 SESSION复制方式 (3)2 集群操作说明 (4)2.1 环境说明 (4)2.2 安装tomcat (4)2.3 负载均衡配置 (6)2.4 集群配置 (9)2.5 应用配置 (12)2.6测试结果 (13)2.6.1 负载均衡测试 (13)2.6.2 集群容错测试 (16)2.7 备注 (17)2.7.1 1同台部署 (17)2.7.2 开放相关端口 (18)1负载均衡原理和基本特点1.1 负载技术本方案采用反向代理负载均衡(如Apache+JK2+Tomcat这种组合),就是使用代理服务器可以将请求转发给内部的Web服务器,让代理服务器将请求均匀地转发给多台内部Web 服务器之一上,从而达到负载均衡的目的。
这种代理方式与普通的代理方式有所不同,标准代理方式是客户使用代理访问多个外部Web服务器,而这种代理方式是多个客户使用它访问内部Web服务器,因此也被称为反向代理模式。
1.2 技术特点简介1.2.1集群原理Tomcat中的集群原理是通过组播的方式进行节点的查找并使用TCP连接进行会话的复制。
1、集群地址:集群由多个服务实体组成,集群客户端通过访问集群的集群地址获取集群内部各服务实体的功能。
具有单一集群地址(也叫单一影像)是集群的一个基本特征。
维护集群地址的设置被称为负载均衡器。
负载均衡器内部负责管理各个服务实体的加入和退出,外部负责集群地址向内部服务实体地址的转换。
有的负载均衡器实现真正的负载均衡算法,有的只支持任务的转换。
只实现任务转换的负载均衡器适用于支持ACTIVE-STANDBY的集群环境,在那里,集群中只有一个服务实体工作,当正在工作的服务实体发生故障时,负载均衡器把后来的任务转向另外一个服务实体。
达梦数据库和Tomcat组合一键自动部署方法

达梦数据库和Tomcat组合一键自动部署方法在现代的应用开发中,数据库和Web服务器的组合是非常常见的。
而达梦数据库和Tomcat组合使用的情况也越来越多。
本文将介绍达梦数据库和Tomcat组合的一键自动部署方法,以帮助开发人员快速搭建开发环境。
一、简介达梦数据库是一种国产的关系型数据库管理系统,具有高性能、高安全性、高扩展性等特点。
Tomcat则是一款开源的Web服务器,用于运行Java Web应用。
达梦数据库和Tomcat的组合可以提供稳定可靠的数据库支持和高效的Web应用部署。
二、准备工作在开始一键自动部署之前,我们需要完成以下准备工作:1. 安装达梦数据库:根据自己的操作系统下载并安装达梦数据库。
2. 安装Tomcat:根据自己的操作系统下载并安装Tomcat。
3. 配置数据库:在达梦数据库中创建自己需要使用的数据库,并设置好用户名和密码。
三、配置Tomcat1. 打开Tomcat的安装目录,在conf文件夹中找到server.xml文件。
2. 打开server.xml文件,找到以下代码块:<Host name="localhost" appBase="webapps"unpackWARs="true" autoDeploy="true">3. 在该代码块的标签内增加以下内容,用于配置达梦数据库的数据源:<Resource name="jdbc/dameng"auth="Container"type="javax.sql.DataSource"username="yourusername"password="yourpassword"driverClassName="com.dameng.jdbc.Driver"url="jdbc:dameng://localhost:5236/yourdatabase"maxActive="20"maxIdle="10"maxWait="-1"/>注意替换yourusername、yourpassword和yourdatabase为你自己的用户名、密码和数据库名。
Apache2.2+tomcat-6.0.18集群部署手册

一、软件准备Apache 2.2Tomcat-6.0.18:mod_jk-1.2.31-httpd-2.2.3.sojdk-1_5_0_06-windows-i586-p.exe注意:由于Apache和Tomcat项目与集群相关的模块均处于持续发展和优化过程中,因此笔者不保证本文配置方法对所有Apache和Tomcat版本均适用。
二、Apache安装1、先准备好软件:2、安装Apache,配置成功一个普通网站服务器3、运行下载好的“httpd-2.2.19-win32-x86-openssl-0.9.8r.msi”,出现如下界面:4、出现Apache HTTP Server 2.0.55的安装向导界面,点“Next”继续5、确认同意软件安装使用许可条例,选择“I accept the terms in the license agreement”,点“Next”继续6、将Apache安装到Windows上的使用须知,请阅读完毕后,按“Next”继续7、设置系统信息,在Network Domain下填入您的域名(比如:),在Server Name下填入您的服务器名称(比如:,也就是主机名加上域名),在Administrator's Email Address下填入系统管理员的联系电子邮件地址(比如:yinpeng@),上述三条信息仅供参考,其中联系电子邮件地址会在当系统故障时提供给访问者,三条信息均可任意填写,无效的也行。
下面有两个选择,图片上选择的是为系统所有用户安装,使用默认的80端口,并作为系统服务自动启动;另外一个是仅为当前用户安装,使用端口8080,手动启动。
一般选择如图所示。
按“Next”继续。
]8、选择安装类型,Typical为默认安装,Custom为用户自定义安装,我们这里选择Custom,有更多可选项。
按“Next”继续9、出现选择安装选项界面,如图所示,左键点选“Apache HTTP Server 2.0.55”,选择“This feature, and all subfeatures, will be installed on local hard drive.”,即“此部分,及下属子部分内容,全部安装在本地硬盘上”。
【Tomcat】web应用的部署以及发布

【Tomcat】web应⽤的部署以及发布⼀、web项⽬⽂件的⽬录结构在tomcat中所有的应⽤都是放置在CATALINA_HOME/webapps下。
由于Servlet2.2之后的版本规范规定,tomcat中应⽤的⽬录结构需要满⾜固定的格式,这样便于规范⼀致性。
放置在webapps下的⽂件通常是两种格式:⼀种压缩好的项⽬⽂件,⽐如war包!⼀种是正常的⽂件夹。
如果是war包项⽬⽂件,tomcat会在启动后⾃动的把它解压缩到当前⽬录,变成可访问的⽂件夹。
项⽬⽂件的⽬录结构如下:/apps|------/WEB-INF|------/classes 编译的字节码⽂件|------/lib 需要的类库,jar包------web.xml|------/META-INF------context.xml------普通前端页⾯,jsp等等1. web.xml ⽂件:这个⽂件⽐较重要,也叫做部署描述符,⽤于配置web应⽤的相关信息。
⽐较常⽤的是监听器,过滤器,servlet,session管理,初始化参数等。
需要注意的是:注意相同项的配置顺序,tomcat会按照配置顺序进⾏执⾏或者加载。
需要注意的地⽅⽐如过滤器,还有⼀些页⾯的加载。
2. classes⽂件夹:放置编译出的.class⽂件,⽐如你定义的某个包:com.test.hello.java 经过tomcat的启动发布后,就会在响应的应⽤下的classes⽂件夹下找到com/test/hello.class⽂件。
类似的servlet, bean, 普通的java类都会编译到此处。
3. lib ⽂件夹:放置项⽬应⽤的jar包。
⽐如使⽤了SSH,在项⽬引⽤了jar包,最后都会放在这⾥。
这个⽂件夹下的jar⽂件是不会编译到classes⽂件夹下的。
详细信息参考tomcat的类加载机制。
这个⽂件夹下的jar包是属于应⽤⾃⼰使⽤的。
tomcat根⽬录下还有⼀个lib⽂件夹,这⾥⾯存放着基本的servlet和jsp需要的jar包。
部署高可用 Tomcat 集群

部署高可用 Tomcat 集群随着互联网应用的不断增多,单个服务器往往难以承受高并发访问的压力,因此采用集群的方式进行部署成为一种常见的解决方案。
Tomcat作为JAVA的应用服务器,也适用于集群的部署。
本文将介绍如何部署高可用Tomcat集群。
一、负载均衡器的选择在部署Tomcat集群之前,我们需要选择一款负载均衡器。
负载均衡器可以将客户端的请求分发到不同的服务器上,从而实现负载均衡。
目前比较常见的负载均衡器有Nginx、HAProxy和Apache等。
在选择负载均衡器时,需要考虑以下因素:1. 功能和性能:负载均衡器需要支持HTTP和HTTPS协议,并能够处理高并发请求。
2. 配置的难易程度:负载均衡器的配置文件需要考虑到性能和使用方便之间的平衡。
3. 社区支持和文档资料:负载均衡器的使用需要有足够的社区支持和文档资料。
综合考虑,我们选择Nginx作为负载均衡器。
二、Tomcat集群节点的设置在设置Tomcat集群节点之前,需要先确定采用的集群方式。
Tomcat集群可以采用共享存储方式或互相同步的方式。
共享存储方式:采用共享存储方式的Tomcat集群将共享同一份资源,包括代码、配置文件和缓存等。
当其中一个节点收到请求时,它将先查询本地缓存,如果不存在则从共享文件系统中读取数据。
互相同步的方式:采用互相同步的方式的Tomcat集群则每个节点都保留一份相同的资源,当其中一个节点更新相应的资源时,其他节点也会同步更新。
在本文中,我们将采用互相同步的方式。
为了实现互相同步,我们需要进行如下配置:1. 安装rsync在每个节点上都需要安装rsync,可以使用yum或apt-get等包管理器安装。
2. 创建Tomcat用户创建一个以Tomcat命名的用户,并赋予其Tomcat所在目录的读写执行权限。
3. 配置rsync在每个节点上都需要配置rsync,使其能够同步Tomcat的配置文件、程序文件和文件夹等。
nginx_+tomcat集群配置

Nginx+Tomcat 集群配置Nginx对处理静态文件(如html、jpg等)的性能十分优异,具有高并发、占用资源低、扩展性强的特点。
Nginx的这个特点,对于专注于处理java的tomcat来说,可以说是个完美的搭档。
生产环境下,已经取代早期的apache+tomcat,并且还可以使用Nginx结合jvm_router这个国人开发的扩展,做下tomcat的集群。
配置环境两台服务器:192.168.0.239 192.168.0.240操作系统:CentOS 6.3Jdk:jdk-6u35-linux-x64.binTomcat :6.0.35Nginx :nginx-1.2.4安装jdk在第一台机器,192.168.0.239(以后称为A)安装JDK1.使用命令chmod +x jdk-6u35-linux-x64.bin 赋予jdk执行权限。
2.安装jdk,使用命令:./jdk-6u35-linux-x64.bin3.配置环境变量,拷贝jdk的目录到/usr下,/etc/profile文件的末尾添加如下:export JAVA_HOME=/usr/jdkexport PATH=$PATH:$JAVA_HOME/binexportCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/ tools.jar4.使用命令:source /etc/profile ,使配置即刻生效。
然后测试jdk是否成功:java -version5.第二台服务器同上安装jdk安装Tomcat1.下载apache-tomcat-6.0.35.tar.gz,解压到/usr目录下,并重命名为tomcat2.进入/usr/tomcat的bin目录下,使用命令chmod +x ./* 给bin目录下的文件,赋予可执行权利。
3.进入/usr/tomcat/conf目录下,编辑tomcat-users.xml文件,增加admin管理员,并加入manager组。
集群部署方案

集群部署方案集群部署方案摘要本文介绍了集群部署的概念以及其在现代计算和网络领域的重要性。
我们将讨论集群部署的优势,并提供了一个基本的集群部署方案的概述。
引言随着计算和网络技术的不断发展,集群部署成为了现代计算和网络环境中的一个关键概念。
集群部署能够提供高性能、高可用性和可扩展性,使得应用程序能够处理大量的并发请求和数据处理任务。
集群部署的优势集群部署具有以下几个重要优势:1. 高可用性使用集群部署方案,可以使应用程序在集群中的多个节点上运行,从而实现高可用性。
当一个节点发生故障时,其他节点可以接管其工作,确保应用程序的持续运行。
2. 负载均衡集群部署方案可以通过将负载平均分配到集群中的多个节点上,从而实现负载均衡。
这样可以提高应用程序的性能和吞吐量,并减轻单个节点的负载压力。
3. 扩展性通过向集群中添加新的节点,可以轻松地扩展集群的容量和计算资源。
这样可以满足日益增长的用户需求,并提供更好的性能和响应时间。
4. 故障容忍集群部署方案可以自动检测节点故障,并在故障发生时进行故障转移。
这样可以实现故障容忍,确保应用程序不会因为节点故障而中断或丢失数据。
集群部署方案概述一个基本的集群部署方案包括以下几个步骤:1. 环境准备在部署集群之前,需要准备好适当的硬件和软件环境。
硬件方面,需要选择适合的服务器和存储设备。
软件方面,需要选择适当的操作系统、容器管理工具和应用程序框架。
2. 集群配置在环境准备完成后,需要配置集群的网络、存储和安全设置。
网络配置包括为集群节点分配IP地址、设置网络连接和配置防火墙规则。
存储配置包括设置集群节点之间的共享存储和备份策略。
安全设置包括设置访问控制和认证机制,以保护集群的安全。
3. 应用部署在集群配置完成后,可以开始部署应用程序。
应用程序可以以容器的形式部署在集群节点上,也可以以虚拟机的形式部署在集群节点上。
在部署应用程序之前,需要创建应用程序的镜像或虚拟机模板,并配置应用程序的运行参数和依赖项。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
T omcat集群部署1 部署准备 (1)1.1所需软件介绍 (1)1.2windows平台 (2)1.3Unix平台 (2)2 部署步骤 (2)2.1 坏境说明 (3)2.2 安装过程 (3)2.3 负载均衡过程 (4)2.4 Tomcat集群配置 (6)2.5 应用配置 (8)2.6 关于会话复制 (9)3.效果演示 (9)3.1 成功后的效果 (9)3.2 效果演示录像 (10)4.相关说明 (10)4.1 目录说明 (10)4.2 其他说明 (10)4.3 作者说明 (10)1 部署准备1.1所需软件介绍✧Apache HTTP Server该软件是Apache开源软件,主要用于HTTP请求服务,在加载一些插件后,也可实现一些其他的功能,如在加载JK插件后,其能实现集群以及负载平衡的功能.其详细的介绍可参考Apache官方网站中关于Apache HTTP Server的介绍,其网址为: /。
在本次部署中,采用的是Apache HTTP Server2.0版本.✧Tomcat本次测试中采用的Tomcat5.0.28版本Jk2插件Apache的一个开源插件,主要用于实现集群,以及负载平衡。
在本次部署中主要采用的JK2版本,这个插件比较难找,在Apache的官方网站上没有作为一个单独项目列出来,而是放在与Tomcat相关的一个工具包中,下载地址为:/dist/tomcat/tomcat-connectors/1.2windows平台windows 平台下的集群部署相对简单,其所需的软件均已编译好,下载后安装即可,其相关的软件已经下载,按照其后面讲解的部署步骤部署即可,其在网上的下载地址分别为:/download.cgi/download-55.cgi#5.0.28/dist/tomcat/tomcat-connectors/jk2/binaries/win32/1.3Unix平台Unix平台上部署相对复杂,所需的Apache HTTP Server2.0下载下来后,还需先经过编译后方可使用,考虑到在不同的unix系统上,尚有一些差异,编译这一步各位在部署时进行,本次部署时就不提供编译好的Apache HTTP Server 2.0,其所需的软件下载地址分别为:/download.cgi/download-55.cgi#5.0.28/dist/tomcat/tomcat-connectors/jk2/binaries/solaris/2 部署步骤以下部署步骤为引用自互联网上的原文2.1 坏境说明(1)服务器有4台,一台安装apache,三台安装tomcat(2)apache2.0.55、tomcat5.5.15、jk2.0.4、jdk1.5.6或jdk1.4.2(3)IP配置,一台安装apache的IP为192.168.0.88,三台安装tomcat的服务器IP分别为192.168.0.1/2/42.2 安装过程(1)在三台要安装tomcat的服务器上先安装jdk(2)配置jdk的安装路径,在环境变量path中加入jdk的bin路径,新建环境变量JA V A_HOME指向jdk的安装路径(3)在三台要安装tomcat的服务器上分别安装tomcat,调试三个tomcat到能够正常启动(4)tomcat的默认WEB服务端口是8080,默认的模式是单独服务,我的三个tomcat的WEB服务端口修改为7080/8888/9999修改位置为tomcat的安装目录下的conf/server.xml修改前的配置为<Connector port="8080" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" />修改后的配置为<Connector port="7080" maxHttpHeaderSize="8192"maxThreads="150" minSpareThreads="25" maxSpareThreads="75"enableLookups="false" redirectPort="8443" acceptCount="100"connectionTimeout="20000" disableUploadTimeout="true" />依次修改每个tomcat的监听端口(7080/8888/9999)(5)分别测试每个tomcat的启动是否正常http://192.168.0.1:7080http://192.168.0.2:8888http://192.168.0.4:99992.3 负载均衡过程(1)在那台要安装apache的服务器上安装apache2.0.55,我的安装路径为默认C:\ProgramFiles\Apache Group\Apache2(2)安装后测试apache能否正常启动,调试到能够正常启动http://192.168.0.88(3)下载jk2.0.4后解压缩文件(4)将解压缩后的目录中的modules目录中的mod_jk2.so文件复制到apache的安装目录下的modules目录中,我的为C:\Program Files\Apache Group\Apache2\modules(5)修改apache的安装目录中的conf目录的配置文件httpd.conf,在文件中加LoadModule模块配置信息的最后加上一句LoadModule jk2_module modules/mod_jk2.so(6)分别修改三个tomcat的配置文件conf/server.xml,修改内容如下修改前<!-- An Engine represents the entry point (within Catalina) that processesevery request. The Engine implementation for Tomcat stand aloneanalyzes the HTTP headers included with the request, and passes themon to the appropriate Host (virtual host). --><!-- Y ou should set jvmRoute to support load-balancing via AJP ie :<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">--><!-- Define the top level container in our container hierarchy --><Engine name="Catalina" defaultHost="localhost">修改后<!-- An Engine represents the entry point (within Catalina) that processesevery request. The Engine implementation for Tomcat stand aloneanalyzes the HTTP headers included with the request, and passes themon to the appropriate Host (virtual host). --><!-- Y ou should set jvmRoute to support load-balancing via AJP ie :--><Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1"><!-- Define the top level container in our container hierarchy<Engine name="Catalina" defaultHost="localhost">-->将其中的jvmRoute="jvm1"分别修改为jvmRoute="tomcat1"和jvmRoute="tomcat2"和jvmRoute="tomcat3"(7)然后重启三个tomcat,调试能够正常启动。
(8)在apache的安装目录中的conf目录下创建文件workers2.properties,写入文件内容如下# fine the communication channel[channel.socket:192.168.0.1:8009]info=Ajp13 forwarding over socket#配置第一个服务器tomcatId=tomcat1 #要和tomcat的配置文件server.xml中的jvmRoute="tomcat1"名称一致debug=0lb_factor=1 #负载平衡因子,数字越大请求被分配的几率越高# Define the communication channel[channel.socket:192.168.0.2:8009]info=Ajp13 forwarding over sockettomcatId=tomcat2debug=0lb_factor=1# Define the communication channel[channel.socket:192.168.0.4:8009]info=Ajp13 forwarding over sockettomcatId=tomcat3debug=0lb_factor=1[status:]info=Status worker, displays runtime information.[uri:/jkstatus.jsp]info=Display status information and checks the config file for changes.group=status:[uri:/*]info=Map the whole webappdebug=0(9)在三个tomcat的安装目录中的webapps建立相同的应用,我和应用目录名为TomcatDemo,在三个应用目录中建立相同WEB-INF目录和页面index.jsp,index.jsp的页面内容如下<%@ page contentType="text/html; charset=GBK" %><%@ page import="java.util.*" %><html><head><title>Cluster App Test</title></head><body>Server Info:<%out.println(request.getLocalAddr() + " : " + request.getLocalPort()+"<br>");%><%out.println("<br> ID " + session.getId()+"<br>");// 如果有新的Session 属性设置String dataName = request.getParameter("dataName");if (dataName != null && dataName.length() > 0) {String dataV alue = request.getParameter("dataV alue");session.setAttribute(dataName, dataV alue);}out.print("<b>Session 列表</b>");Enumeration e = session.getAttributeNames();while (e.hasMoreElements()) {String name = (String)e.nextElement();String value = session.getAttribute(name).toString();out.println( name + " = " + value+"<br>");System.out.println( name + " = " + value);}%><form action="index.jsp" method="POST">名称:<input type=text size=20 name="dataName"><br>值:<input type=text size=20 name="dataV alue"><br><input type=submit></form></body></html>(10)重启apache服务器和三个tomcat服务器,到此负载均衡已配置完成。