为了实现服务器升级不影响用户使用,有必要配置两个tomcat在一个或多个服务器中。下面介绍在同一个服务器配置两个Tomcat的过程。
步骤如下:
1、拷贝原来的Tomcat到另外一个目录,如:tomcat-8090,清除logs目录
2、修改Tomcat中的server.xml文件,把shutdown和Connector端口修改成另外的数值,如8006/8090
3、修改startup.sh和shutdown.sh文件,在第一行加入:
export CATALINA_HOME=/opt/app/tomcat-8090
4、启动tomcat
5、Nginx中配置负载均衡:
Nginx配置文件,添加:
upstream tomcatCluster {
server
server
}
server
{
listen 80;
server_name
index ……;
root ……;
location / {
location ~* /<项目名>/ {
proxy_pass http://tomcatCluster;
}
}
}
重启Nginx:service nginx restart
6、测试请求是否被轮流转发到两个tomcat中
CentOS 6.5系统下Nginx反向代理实现Tomcat负载均衡
1.查看当前系统的内核和系统参数以及版本。
[root@node1 ~]# uname -a
Linux node1 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@node1 ~]# cat /etc/issue
CentOS release 6.5 (Final)
Kernel r on an m
2.安装nginx。
1)安装gcc编译器及相关工具和依赖库。
[root@node1 ~]# yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers pcre
2)编译安装pcre库。
PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正规表达式。Pcre的作用主要是使nginx支持HTTP rewrite模块。
创建一个指定放置压缩包的目录。
[root@node1 ~]# mkdir -p /linuxidc/tools
[root@node1 ~]# cd /linuxidc/tools/
[root@node1 tools]# tar -zxf pcre-8.33.tar.gz
[root@node1 pcre-8.33]# ./configure
[root@node1 pcre-8.33]# make && make install
[root@node1 nginx-1.5.8]# ./configure --with-http_stub_status_module --with-http_ssl_module --prefix=/data/nginx
[root@node1 nginx-1.5.8]# make && make install
注意:安装成功启动nginx,有可能会遇到下面错误,
[root@node1 nginx-1.5.8]# /data/nginx/sbin/nginx -t
/data/nginx/sbin/nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory
解决办法:
[root@node1 ~]# cd /lib64/
[root@node1 lib64]# ln -s libpcre.so.0.0.1 libpcre.so.1
3)此事再启动nginx,查看下进程和端口。
[root@node1 lib64]# /data/nginx/sbin/nginx -t
nginx: the configuration file /data/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /data/nginx/conf/nginx.conf test is successful
[root@node1 lib64]# /data/nginx/sbin/nginx
[root@node1 lib64]# ps -ef | grep nginx
root 8991 1 0 16:43 ? 00:00:00 nginx: master process /data/nginx/sbin/nginx
nobody 8992 8991 0 16:43 ? 00:00:00 nginx: worker process
root 8994 1907 0 16:44 pts/1 00:00:00 grep nginx
[root@node1 lib64]# netstat -anpt | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 8991/nginx
3.配置nginx web反向代理,实现两个tomcat负载均衡:
nginx配置文件如下:
[root@node1 ~]# cat /data/nginx/conf/nginx.conf
user root;
worker_processes 1;
#error_log logs/error.log info;
pid /data/nginx/logs/nginx.pid;
worker_rlimit_nofile 65535;
events {
use epoll;
worker_connections 65535;
multi_accept on;
}
http {
include mime.types;
default_type application/octet-stream;
charset utf-8;
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 logs/access.log main;
sendfile on;
tcp_nopush on;
keepalive_timeout 60;
server_tokens off;
limit_rate_after 3m;
limit_rate 512k;
tcp_nodelay on;
client_header_buffer_size 256k;
large_client_header_buffers 4 256k;
# Define nginx proxy module
proxy_http_version 1.1;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;
proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;
proxy_temp_file_write_size 128k;
proxy_headers_hash_max_size 51200;
proxy_headers_hash_bucket_size 6400;
# Define Gzip compression module
gzip on;
gzip_vary 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;
# Define realserver pool
upstream linuxidc.com {
ip_hash;
server 192.168.1.15:8080 max_fails=0 weight=5;
server 192.168.1.19:8080 max_fails=0 weight=5;
}
server {
listen 80;
server_name linuxidc.net www.linuxidc.net;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://linuxidc.com;
expires 1d;
access_log logs/host.access.log main;
}
# Define 404 502 503 504 error page
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
Linux下Apache与多个Tomcat 集群负载均衡
多台电脑默认tomcat端口都是8080
每个tomcat下完全相同的部署
在此前面apache 与 tomcat整合的基础之上
修改vi /etc/httpd/conf/httpd.conf
[java]
LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so
JkWorkersFile "conf/workers.properties"
JkLogFile "logs/mod_jk.log"
JkLogLevel debug
JkMount /*.jsp loadbalancer
conf 下的 worker.properties 修改如下
[java]
ps=/
worker.list=worker1,worker2,loadbalancer
worker.worker1.port=8009
worker.worker1.host=localhost #本机一台tomcat
worker.worker1.type=ajp13
worker.worker1.lbfactor=1
worker.worker2.port=8009
worker.worker2.host=10.228.56.80 #另外一台机器tomcat
worker.worker2.type=ajp13
worker.worker2.lbfactor=1
worker.loadbalancer.type=lb
worker.loadbalancer.balanced_workers=worker1, worker2
# 负载指向 的机器
配置成功 这样就实现了负载均衡的 配置
Nginx Tomcat 集群负载均衡解决笔记
1、Windows
下载nginx 地址:http://nginx.org/ 本文章使用的版本为1.5.1
下载完后解压,在conf目录修改nginx.conf我的配置如下:
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
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 logs/access.log main;
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;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
upstream localhost {
#根据ip计算将请求分配各那个后端tomcat,许多人误认为可以解决session问题,其实并不能。
#同一机器在多网情况下,路由切换,ip可能不同
#ip_hash;
server localhost:9097 weight=1;
server localhost:9098 weight=1;
server localhost:9097 backup;
server localhost:9098 backup;
#jvm_route $cookie_JSESSIONID|sessionid reverse; #session复制的配置
ip_hash;
}
upstream backend {
server localhost:9097;
server localhost:9098;
}
server {
listen 9096;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ ^/(WEB-INF)/ {
deny all;
}
###所以的静态文件人gif、jpg等都在本地打开,存放的目录为html,保存时间为30天
location ~ .*.(gif|jpg|jpeg|png|bmp|swf|css|js|htm|html)$ {
root html;
access_log off;
expires 30d;
}
location / {
root html;
index index.jsp;
#include proxy.conf; #这个文件是我们新建的,要导入
proxy_pass http://localhost;
proxy_redirect off;#default
proxy_set_header Host $host;
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 3; #90
proxy_send_timeout 3; #90
proxy_read_timeout 3; #90
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ .php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ .php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
#}
# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
# ssl_session_timeout 5m;
# ssl_protocols SSLv2 SSLv3 TLSv1;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
#}
}
下载Tomcat
修改端口为9097
另一个修改为9098
分别启动二个tomcat和nginx在地址栏中输入http://locahost/则可以看到tomcat欢迎界面了
Linux 和window配置基本一样,只有linux下tomcat的配置要注意,需要添加环境变量
Apache+Tomcat 环境搭建(JK部署过程)
Apache只是一个web服务器,并不能运行JSP程序。如果要运行JSP程序,还需要安装Tomcat服务器软件,通过连接器组件整合Tomcat与Apche。当用户请求访问*.jsp网页时,由Aapache自动调用tomcat服务进行解析,并将结果页面返回到客户端浏览器。
系统环境:
RHEL6.0,内核心版本号2.6.32-71.el6.x86_64
所需软件:
httpd-2.2.15.tar.gz
apache-tomcat-6.0.18.tar.gz
jdk-6u25-linux-x64.bin
mod_jk-1.2.28-httpd-2.2.X.so
下载mod_jk 各种版本,别下错了
http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/binaries/
下载jdk
http://www.Oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html
一、安装httpd 服务
[[email protected] ~]#tar xzvf httpd-2.2.15.tar.gz
[[email protected] ~]#cd httpd-2.2.15
[[email protected] ~]#./configure –prefix=/usr/local/apache2 –enable-so –enable-rewrite && make && make install
二、安装配置jdk开发环境
1、 安装jdk
[[email protected] ~]# mv jdk-6u25-linux-x64.bin /usr/bin/
[[email protected] ~]# cd /usr/local/
[[email protected] local]# chmod a+x jdk-6u25-linux-x64.bin
[[email protected] local]# ./ jdk-6u25-linux-x64.bin
执行jdk安装程序后将会显示软件许可协议,按回车或空格至末尾,按照提示输入“yes”回车确认,等待1~2分钟左右即可完成安装。
2、为jdk的安装目录及执行程序创建链接文件,以方便使用。
[[email protected] ~]# ln -sf /usr/local/jdk1.6.0_25 /usr/local/jdk6
[[email protected] ~]# ln -sf /usr/local/jdk6/bin/java /usr/bin/
[[email protected] ~]# ln -sf /usr/local/jdk6/bin/javac /usr/bin/
修改/etc/profile文件,添加JAVA开发环境需要的变量设置。
[[email protected] ~]# vi /etc/profile
JAVA_HOME=/usr/local/jdk6
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
[[email protected] ~]# source /etc/profile
3、测试java
查看安装的jdk 程序版本信息。
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode, sharing)
编写一个java测试小程序,并编译执行。
public class HelloWorld {
public static void main(String args[]) {
System.out.println("HelloWorld!!");
}
}
[[email protected] ~]# javac HelloWorld.java //编译程序
[[email protected] ~]# java HelloWorld //运行HelloWorld.class程序
HelloWorld!! //显示运行结果
三、安装配置Tomcat
1、安装tomcat
Tomcat的安装过程非常简单,只要将源码包解压至目的文件夹即可。
[[email protected] ~]# tar zxvf apache-tomcat-6.0.18.tar.gz
-C /usr/local/
2、配置。
① 为Tomcat的安装目录及启动、关闭服务的脚本创建链接文件,方便使用。
[[email protected] ~]# ln –sf /usr/local/apache-tomcat-6.0.18.tar.gz /usr/local/tomcat
[[email protected] ~]# ln -sf /usr/local/tomcat/bin/startup.sh /usr/bin/tomcat-up
[[email protected] ~]# ln -sf /usr/local/tomcat/bin/shutdown.sh /usr/bin/tomcat-down
② 修改/etc/profile文件,设置Tomcat服务需要使用的变量CATALINA_HOME。
[[email protected] ~]# vi /etc/profile //结合第一步,确认有如下内容:
JAVA_HOME=/usr/local/jdk6
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/servlet-api.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CACTALINA_HOME CLASSPATH PATH
[[email protected] ~]# source /etc/profile //执行profile文件使新配置生效
3、修改tomcat-users.xml文件,添加管理员账户“tomcat”设置。
[[email protected] ~]# vi /usr/local/tomcat/conf/tomcat-users.xml
(3) 测试。
① 启动Tomcat服务,并确认Tomcat服务的监听状态。
[[email protected] ~]# tomcat-up
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/jdk6
[[email protected] ~]# netstat -anpt | grep java
tcp 0 0 :::8009 :::* LISTEN 7399/java
tcp 0 0 :::8080 :::* LISTEN 7399/java
② 访问http://172.16.12.40:8080 ,可以看到Tomcat的web首页(如下图所示)
③ 通过单击“Tomacat Manager”链接可以登录后对Tomcat进行管理(如下图所示),如需停止Tomcat服务,可执行“tomcat-down”。
4、 将Tomcat服务与Aptech服务进行连接
虽然Tomcat可以独立作为Web服务器运行,但是Tomcat的Web功能远没有Apache强大。在实际应用中,通过mod_jdk连接器(Connectors)将Apache和Tomcat整合在一起。调用Tomcat服务的工作由Apache来完成,而用户只需要访问Apache服务。
(1) 安装mod_jdk模块。
[[email protected] ~]# cp mod_jk-1.2.28-httpd-2.2.X.so /usr/local/apache2/modules
(2) 调整Apache服务、Tomcat服务的相关配置,并重启tomcat、httpd服务。
① 修改http.conf配置文件,添加jdk调用配置。
[[email protected] ~]# vi /usr/local/apache2/conf/httpd.conf
...
ServerName l-www.linuxidc.com
DocumentRoot "/usr/local/apache2/htdocs"
...
LoadModule jk_module modules/mod_jk-1.2.28-httpd-2.2.X.so
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkShmFile logs/mod_jk.shm
JkLogLevel notice
JkMount /*/*.jsp work1
JkMountCopy All
AddType application/x-jsp .jsp
② 添加tomcat配置文件,并建立Web应用目录链接
[[email protected] ~]# vi /usr/local/apache2/conf/workers.properties
worker.list=work1
worker.work1.port=8009
worker.work1.host=l-www.linuxidc.com
worker.work1.type=ajp13
worker.work1.lbfactor=1
[[email protected] ~]# cd /usr/local/tomcat
[[email protected] tomcat]# mv webapps webapps.bak
[[email protected] tomcat]# ln -sf /usr/local/apache2/htdocs webapps
③ 重启 apache 和tomcat服务。
[[email protected] ~]# tomcat-down ; tomcat-up
[[email protected] ~]# /usr/local/apache2/bin/apachectl restart
(3) 测试
① 创建显示系统时间的JSP测试网页。
[[email protected] ~]# mkdir /usr/local/apache2/htdocs/apps/
[[email protected] ~]# vi /usr/local/apache2/htdocs/apps/showtime.jsp
<%@page language="java" import="java.util.*"%>
Now,the time&date is : <%out.println(new Date());%>
② http://192.168.0.10/apps/showtime.jsp , 应在网页中显示当前的系统时间
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整