`
smarttony2013
  • 浏览: 45942 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Nginx+keepalived+tomcat实现tomcat高可用性负载均衡

 
阅读更多
Nginx+keepalived+tomcat实现tomcat高可用性负载均衡试验环境:
CentOS5.4、pcre-8.12、nginx-upstream-jvm-route-0.1、nginx-1.0.10、apache-tomcat-7.0.23 、keepalived-1.1.17.tar.gz、jdk-7u2-linux-x64.tar.gz
主nginx服务器地址:10.29.9.200
辅nginx服务器地址:10.29.9.201
tomcat1: 10.29.9.202
tomcat2: 10.29.9.203
VIP: 10.29.9.188拓扑如下:绘图1 1.分别在10.29.9.200和10.29.9.201上面安装nginxtar zxf pcre-8.12.tar.gz
cd pcre-8.12
./configure
make;make install

下载下面的插件安装,否则nginx无法识别tomcat中jvmRoute,从而无法达到session复制的效果。wget http://friendly.sinaapp.com/LinuxSoft/nginx-upstream-jvm-route-0.1.tar.gz
tar xzf nginx-upstream-jvm-route-0.1.tar.gz
tar xzf nginx-1.0.10.tar.gz
cd nginx-1.0.10
patch -p0 <../nginx_upstream_jvm_route/jvm_route.patch
./configure --prefix=/usr/local/nginx --with-http_stub_status_module \ --with-pcre=/root/pcre-8.12 --add-module=../nginx_upstream_jvm_route/
#--with-pcre=指向的是pcre的源码包
make;make install
2.配置nginxvim /usr/local/nginx/conf/nginx.conf
user www www; worker_processes 4; error_log /home/wwwlogs/nginx_error.log crit; pid /usr/local/nginx/logs/nginx.pid; #Specifies the value for maximum file descriptors that can be opened by this process. worker_rlimit_nofile 51200; events { use epoll; worker_connections 51200; } http { upstream backend { server 10.29.9.202:8080 srun_id=tomcat1; server 10.29.9.203:8080 srun_id=tomcat2; jvm_route $cookie_JSESSIONID|sessionid reverse; }include mime.types;default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; 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 256k; gzip on;gzip_min_length 1k; gzip_buffers 4 16k;charset UTF-8 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; server { listen 80; server_name www.8090u.com; index index.jsp index.htm index.html; root /home/wwwroot/;location / { proxy_pass http://backend; proxy_redirect off; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $http_host; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 1h; } location /Nginxstatus { stub_status on; access_log off; } 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 /home/wwwlogs/access.log access; } include vhost/*.conf; } 3. 分别在两台nginx服务器上安装keepalivedtar zxvf keepalived-1.1.17.tar.gz cd keepalived-1.1.17 ./configure --prefix=/usr/local/keepalived make && make install cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/mkdir /etc/keepalived cd /etc/keepalived/ 主keepalived配置vim keepalived.conf vrrp_script chk_http_port { script "/opt/nginx_pid.sh" interval 2 weight 2} vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 mcast_src_ip 10.29.9.200 priority 150 authentication { auth_type PASS auth_pass 1111 } track_script { chk_http_port } virtual_ipaddress { 10.29.9.188 }

辅keepalived 配置
vrrp_script chk_http_port { script "/opt/nginx_pid.sh" interval 2 weight 2} vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 mcast_src_ip 10.29.9.201 priority 100 authentication { auth_type PASS auth_pass 1111 } track_script { chk_http_port } virtual_ipaddress { 10.29.9.188 }}启动keepalived,检查虚拟IP是否邦定,在主keepalived[root@xenvps0 ~]# /etc/init.d/keepalived start启动 keepalived: [确定][root@xenvps0 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 00:16:36:68:a4:fc brd ff:ff:ff:ff:ff:ff inet 10.29.9.200/24 brd 10.29.9.255 scope global eth0inet 10.29.9.188/32 scope global eth0在eth0上面我们已经看到虚拟IP 10.29.9.188已经邦定成功 4.安装tomcat
1)安装tomcat_1
tar zxvf apache-tomcat-7.0.23.tar.gz
mv apache-tomcat-7.0.23 /usr/local/tomcat
2)安装tomcat_2,步骤同1)
5.分别在tomcat服务器安装jdktar zxvf jdk-7u2-linux-x64.tar.gz mv jdk1.7.0_02 /usr/local/jdk1.7.0_02
cat >>/etc/profile <<EOF
export JAVA_HOME=/usr/local/jdk1.7.0_02
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin EOF; source /etc/profile //使环境变量立即生效5.tomcat集群配置
tomcat1配置:
修改conf/server.xml配置文件
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
< 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="224.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
< Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="10.29.9.202" //tomcat1 所在服务器的IP地址
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"/>
< Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
< /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>

<host>…</host>添加下面这句:<Context path="" docBase="/opt/project " reloadable="false" crossContext="true" /> tomcat2配置:
修改conf/server.xml配置文件
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat2">
< 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="224.0.0.4"
port="45564"
frequency="500"
dropTime="3000"/>
< Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
address="10.29.9.203" //tomcat2所在服务器IP
port="4001" //端口号不能和tomcat1重复
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"/>
< Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
< /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>在<host>…</host>添加下面这句:<Context path="" docBase="/opt/project " reloadable="false" crossContext="true" /> 6.session配置 修改web应用里面WEB-INF目录下的web.xml文件,加入标签
<distributable/>
直接加在</web-app>之前
开启网卡组播功能:
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
7.创建jsp测试页面
mkdir /opt/project
cd /opt/project
vi index.jsp
< html>
< title>
tomcat1 jsp
< /title>
< %
String showMessage="Hello,This is 10.29.9.202 server";
out.print(showMessage);
%>
< /html>
----------------------------
mkdir /opt/project cd /opt/project
vi index.jsp
< html>
< title>
tomcat2 jsp
< /title>
< %
String showMessage=" Hello,This is 10.29.9.203 server";
out.print(showMessage);
%>
分享到:
评论

相关推荐

    Nginx++Keepalived+Tomcat负载均衡&动静分离

    * Keepalived是一个高可用性解决方案,支持双机热备和负载均衡。 * Keepalived可以与Nginx集成,提供高可用性的Web应用系统。 八、Tomcat知识点 * Tomcat是一个轻量级的Servlet容器,支持Java Web应用程序。 * ...

    Nginx+keepalived+tomcat实现性负载均衡(包含需要的包)

    在构建高性能、高可用性的Web服务时,使用Nginx+keepalived+tomcat的组合可以实现强大的负载均衡和故障转移功能。这个方案的核心思想是利用Nginx作为前端反向代理服务器,通过keepalived来确保服务的高可用性,并将...

    Nginx+KeepAlived+Tomcat负载架构

    - **Tomcat**:作为后端应用服务器,通常部署多个实例以实现负载均衡。 ##### 2. 实现步骤 ###### 2.1 安装依赖库 - **步骤**:使用`yum`命令安装必要的依赖库和开发工具,例如`gcc`、`libjpeg`等。 ```bash ...

    Nginx+keepalived+tomcat集群搭建过程.doc

    【Nginx+Keepalived+Tomcat集群搭建】是一个实现服务器高可用和负载均衡的常见方案,旨在解决单点故障问题,防止服务因一台服务器宕机而导致整个系统的崩溃,即所谓的雪崩效应。 首先,我们需要四台服务器,两台...

    linux安装nginx+keepalived,和tomcat负载均衡配置,动静分离配置,主备和双主模式

    Keepalived是一款用于实现高可用性的工具,它可以监控并管理服务,当主服务器失效时,能将流量切换到备用服务器。安装过程如下: ```bash # 对于Debian/Ubuntu sudo apt-get update sudo apt-get install ...

    Nginx+keepalived+tomcat实现性负载均衡

    Nginx 是一个轻量级的Web服务器,keepalived 是一个高可用性解决方案,tomcat 是一个java应用服务器,三者结合可以实现高可用性和负载均衡。 负载均衡 负载均衡(Load Balancing)是指将网络流量分配到多个服务器...

    nginx+keepalived+tomcat+redis文档

    ### Nginx+Keepalived+Tomcat+Redis 高可用与负载均衡架构解析 #### 架构概览 为了确保Web服务器的稳定运行及高效处理能力,采用Nginx+Keepalived+Tomcat+Redis的技术组合进行系统构建。这一架构通过多个组件的...

    第三十三章:Lvs+Keepalived+Nginx+Tomcat高可用集群1

    本文主要讲述了如何构建一个高可用集群项目,使用 LVS、Keepalived、Nginx 和 Tomcat 实现高可用性和负载均衡。该项目的架构中,Keepalived 负责对 LVS 架构中的调度器进行热备份,至少包含两台热备的负载调度器,两...

    Nginx+Keepalived+Redis+Tomcat

    根据提供的文件信息,本文将详细解析如何在Linux环境下构建Nginx+Keepalived+Redis+Tomcat集群,实现session共享、负载均衡以及高可用性。以下内容将围绕集群规划与具体实施步骤展开。 ### 一、集群规划 在进行...

    4 lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.docx

    【知识点详解】 在构建高性能负载均衡集群时,通常...通过这种架构,可以实现高可用性和负载均衡,有效提高Web服务的稳定性和性能。在实际操作中,还需要考虑监控、日志、安全等多方面因素,以确保整个集群的健壮性。

    keepalived+nginx+tomcat+redis+mysql所需的jdk包

    在构建高性能、高可用性的Web服务环境中,Java开发和运行环境、数据库系统、负载均衡以及缓存服务都是不可或缺的关键组件。这个压缩包包含了"keepalived+nginx+tomcat+redis+mysql"所需的基础组件,特别是Java ...

    Keepalived+Nginx+Tomcat 高可用集群搭建实战记录

    Keepalived 是一种高可用性解决方案,可以与 Nginx 和 Tomcat 配合使用来实现高可用集群。下面是 Keepalived+Nginx+Tomcat 高可用集群搭建的实战记录。 Keepalived 简介 Keepalived 是一种基于 Linux 的高可用性...

    Nginx+Tomcat+Keepalived 负载均衡配置文档(生产原文档)

    在构建高可用性 web 应用服务时,通常会...Nginx 负责将客户端请求分发到多个 Tomcat 实例,而 Keepalived 确保 Nginx 的高可用性,即使某一节点故障,服务也能自动切换到备用节点,从而提高整个系统的可靠性和稳定性。

    lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.rar

    这个文档"lvs+keepalived+nginx+tomcat实现高性能负载均衡集群.docx"将详细解释每个组件的配置细节、集群的架构图以及可能出现的问题及解决方案,帮助你更好地理解和实施这个高性能的负载均衡集群。

    lvs+keepalived+nginx+tomcat+memcached实现服务负载均衡及session共享

    接着,keepalived是用于配合lvs进行高可用性设置的工具,它可以监控lvs节点的状态,并在主节点故障时自动切换到备用节点,确保服务的不间断运行。keepalived主要包括VRRP(Virtual Router Redundancy Protocol)和...

    Nginx+Keepalived+Tomcat+Memcached 实现双VIP负载均衡及Session会话保持.txt

    内置内存存储,并且他的分布式算法是在客户端完成的,不需要服务器端进行通信,我们当时在做项目的时候因为考虑到项目的高可用性高扩展性,因此在服务器部署方面采用了apache+jk+tomcat这种负载均衡的方式,...

    nginx+keepalived实现高可用负载均衡方案.pdf

    在此方案中,Nginx扮演Web服务器和负载均衡器的角色,而Keepalived则用于提供高可用性支持。以下是相关知识点的详细说明: 1. Nginx简介: Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器...

    高可用的并发解决方案nginx+keepalived资料

    **负载均衡**:Nginx可以配置为负载均衡器,根据预设策略(如轮询、权重、最少连接等)将请求分发到多个后端服务器,保证服务的可用性和响应速度。 **Keepalived** Keepalived的主要任务是在主服务器故障时自动切换...

    Nginx+Tomcat+Keepalived实现高可用Web集群.docx

    而Keepalived则是用来实现服务的高可用性,通过VRRP协议确保在主服务器故障时能快速切换到备份服务器。 **Tomcat的安装与配置** 1. **下载Tomcat**:从官方网站获取最新版本的Tomcat(如9.0.20),并将tar.gz包...

    keepalived+Nginx+tomcat 搭建集群

    【Nginx 介绍】 ...同时,Nginx 作为反向代理,可以将请求分发到多台 Tomcat 应用服务器,以实现负载均衡。 通过这种方式,可以构建一个健壮的、能够处理高并发请求的系统架构,同时具备良好的容错性和伸缩性。

Global site tag (gtag.js) - Google Analytics