Nginx+Keepalived+Tomcat之动静分离的web集群.docx

上传人:b****6 文档编号:8175977 上传时间:2023-01-29 格式:DOCX 页数:21 大小:138.09KB
下载 相关 举报
Nginx+Keepalived+Tomcat之动静分离的web集群.docx_第1页
第1页 / 共21页
Nginx+Keepalived+Tomcat之动静分离的web集群.docx_第2页
第2页 / 共21页
Nginx+Keepalived+Tomcat之动静分离的web集群.docx_第3页
第3页 / 共21页
Nginx+Keepalived+Tomcat之动静分离的web集群.docx_第4页
第4页 / 共21页
Nginx+Keepalived+Tomcat之动静分离的web集群.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Nginx+Keepalived+Tomcat之动静分离的web集群.docx

《Nginx+Keepalived+Tomcat之动静分离的web集群.docx》由会员分享,可在线阅读,更多相关《Nginx+Keepalived+Tomcat之动静分离的web集群.docx(21页珍藏版)》请在冰豆网上搜索。

Nginx+Keepalived+Tomcat之动静分离的web集群.docx

Nginx+Keepalived+Tomcat之动静分离的web集群

为小公司提供大概一天持续在100万/日之间访问的高性能、高可用、高并发访问及动静分离的web集群方案

Nginx+Keepalived           高可用、反向代理

Nginx+PHP                  高并发、动态解析

Tomcat                     JSP动态解析

Apache                     稳定的HTML静态访问

一、整体介绍:

1.架构图

本文涉及的几个知识点:

 ①:

Nginx ②:

FastCGI③:

Keepalived④:

tomcat⑤:

LAMP⑥:

Squid⑦:

memcache//后两个目前不涉及

2.为什么要用nginx

    Nginx("enginex")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。

Nginx是由IgorSysoev为俄罗斯访问量第二的Rambler.ru站点开发的,它已经在该站点运行超过四年多了。

Igor将源代码以类BSD许可证的形式发布。

自Nginx发布四年来,Nginx已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。

目前国内各大门户网站已经部署了Nginx,如新浪、网易、腾讯等;国内几个重要的视频分享网站也部署了Nginx,如六房间、酷6等。

新近发现Nginx技术在国内日趋火热,越来越多的网站开始部署Nginx。

3.Nginx发布

当前开发版:

Nginx1.1.5|Nginx/windows1.1.5(更新记录)(2011年10月6日)

当前稳定版:

Nginx1.0.8|Nginx/windows1.0.8(更新记录)(2011年10月1日)

历史稳定版:

Nginx0.8.54|Nginx/windows0.8.55(更新记录)(2011年7月19日)

历史稳定版:

Nginx0.7.69|Nginx/windows0.7.69(更新记录)(2011年7月19日)

4.笔者谈Nginx

    Nginx有低内存占用,高性能高并发访问,使得很多新平台的搭建、旧应用的迁移开始应用nginx,话说nginx不得不说张宴,就像谈LVS不得不说章文嵩一样;

     张宴简历:

    张宴,就职于北京金山软件公司,金山游戏官方网站──逍遥网系统架构师,技术支持部平台组组长。

曾在新浪网、赶集网等公司任系统工程师、系统架构师,工作内容主要涉及:

服务器系统架构设计与部署、系统运维与调优、网络故障解决、网站后端以及接口类PHP程序开发、Unix开源软件二次开发、服务器监控系统开发、系统运维与平台研发团队管理。

 

5.学习Nginx用书

     一本《实战Nginx:

取代Apache的高性能Web服务器》通俗易懂,不过有些读者看到后,即说起此书无非就是配置文件的讲解,我到反驳,道:

nginx之所以这么强盛的应用,简单的配置文件和灵活的模块也是一大亮点,如果你能将部分模块应用好,那么你的web服务,将会在访问速度、服务器性能、硬件成本胜过了竞争对手;

二、Nginx软件应用部署

1.安装环境 

采用五台Centos5.4 kernel:

2.6.18-164.el5xenServer、一台XPsp3Client

IP地址分配:

提供域名        

解析地址        VIP:

172.17.80.10

front1          内网IP192.168.1.11

front2          内网IP192.168.1.12

WebServer集群:

tomcat192.168.1.17、20 nginx192.168.1.18 apache192.168.1.19

前端:

Nginx只做高可用和代理 

后端:

web集群有nginxPHP请求;tomcat动态jsp.do文件;apache静态html等

    析:

nginx静态访问比较好,apache+php作动态,此处只为说明LNMP架构的构建!

软件版本:

 nginx:

      nginx-1.1.6.tar.gz         //下载:

www.nginx.org

 tomcat:

     apache-tomcat-7.0.21.tar.gz

 JDK:

        jdk-1_5_0_16-linux-i586.bin

 PHP:

        php-5.3.8.tar.gz           //提供FastCGI

 apache:

     httpd-2.2.3-31.el5        //yuminstallhttpdphp  

2.安装部署系统环境:

Centos5.4制作本地yum源

#mkdir/mnt/cdrom{1,2}

#mount/dev/cdrom/mnt/cdrom1

#cp-r/mnt/cdrom1/*/mnt/cdrom2

#cd/mnt/cdrom2

#rpm-ivhcreaterepo-0.4.11-3.el5.noarch.rpm

#createrepo -g/mnt/cdrom/repodata/repomd.xml/mnt/cdrom/CentOS/

#vi/etc/yum.repos.d/server.repo

[CentOS]

name=CentOS

baseurl=file:

///mnt/cdrom/CentOS

gpgcheck=0

enable=1

#yum-yinstallgccopenssl-develzlib-develpcre-devel

#yum-yinstallgccgcc-c++autoconfautomake        //安装编译gcc环境

3.nginx的安装

#tarzxvf nginx-1.1.6.tar.gz

#cd nginx-1.1.6

#useradd-s/sbin/nologin-Mnginx                       //添加nginx用户,没有登录shell,没有家目录

#./configure\

 --prefix=/usr/local/nginx\                            //安装路径

 --sbin-path=/usr/sbin/nginx\                          //可执行文件路径

 --conf-path=/etc/nginx/nginx.conf\              //默认为/conf/nginx.conf最好定义到/etc下

 --pid-path=/var/run/nginx/nginx.pid \                 //pid文件存放位置,后面将会用到

 --error-log-path=/var/log/nginx/error.log\            //错误日志文件,默认为/logs/error.log

 --http-log-path=/var/log/nginx/access.log\            //访问日志,默认为/logs/access.log

 --lock-path=/var/lock/nginx.lock\          

 --user=nginx\

 --group=nginx\

 --with-http_stub_status_module\                       //以取得一些nginx的运行状态

 --with-http_ssl_module\                               //支持https加密连接

 --with-http_gzip_static_module\                       //静态缓存模块

 --with-http_realip_module \                           //让Nginx透明获取客户端IP

 --http-client-body-temp-path=/var/tmp/nginx/client/\  //指定http客户端请求缓存文件存放目录

 --http-proxy-temp-path=/var/tmp/nginx/proxy/\         //指定http反向代理缓存文件存放目录

 --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/          //指定FastCGI缓存文件存放目录

#make&&makeinstall                                    //安装nginx

4.编写SystemV风格的启动脚本

#vim/etc/init.d/nginxd

############################################

#!

/bin/bash

#BYhanfeng

#datetime20111031

./etc/rc.d/init.d/functions

#Sourcenetworkingconfiguration.

./etc/sysconfig/network

#Checkthatnetworkingisup.

["$NETWORKING"="no"]&&exit0

nginx="/usr/sbin/nginx"

prog=$(basename$nginx)

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[-f/etc/sysconfig/nginx]&&./etc/sysconfig/nginx

lockfile=/var/lock/subsys/nginx

make_dirs(){

  #makerequireddirectories

  user=`nginx-V2>&1|grep"configurearguments:

"|sed's/[^*]*--user=\([^]*\).*/\1/g'-`

  options=`$nginx-V2>&1|grep'configurearguments:

'`

  foroptin$options;do

      if[`echo$opt|grep'.*-temp-path'`];then

          value=`echo$opt|cut-d"="-f2`

          if[!

-d"$value"];then

              #echo"creating"$value

              mkdir-p$value&&chown-R$user$value

          fi

      fi

  done

}

start(){

   [-x$nginx]||exit5

   [-f$NGINX_CONF_FILE]||exit6

   make_dirs

   echo-n$"Starting$prog:

"

   daemon$nginx-c$NGINX_CONF_FILE

   retval=$?

   echo

   [$retval-eq0]&&touch$lockfile

   return$retval

}

stop(){

   echo-n$"Stopping$prog:

"

   killproc$prog-QUIT

   retval=$?

   echo

   [$retval-eq0]&&rm-f$lockfile

   return$retval

}

restart(){

   configtest||return$?

   stop

   sleep1

   start

}

reload(){

   configtest||return$?

   echo-n$"Reloading$prog:

"

   killproc$nginx-HUP

   RETVAL=$?

   echo

}

force_reload(){

   restart

}

configtest(){

 $nginx-t-c$NGINX_CONF_FILE

}

rh_status(){

   status$prog

}

rh_status_q(){

   rh_status>/dev/null2>&1

}

case"$1"in

   start)

       rh_status_q&&exit0

       $1

       ;;

   stop)

       rh_status_q||exit0

       $1

       ;;

   restart|configtest)

       $1

       ;;

   reload)

       rh_status_q||exit7

       $1

       ;;

   force-reload)

       force_reload

       ;;

   status)

       rh_status

       ;;

   condrestart|try-restart)

       rh_status_q||exit0

           ;;

   *)

       echo$"Usage:

$0{start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"

       exit2

esac

############################################

保存nginxd脚本,赋予执行权限,添加服务和开机启动

#chmod+x/etc/init.d/nginxd

#chkconfig--addnginxd

//如果不支持,则添加一下2行即可

//#chkconfig:

-8515               #为必须字符

//#description:

nginxisaWorldWideWebserver.Itisusedtoserve

#chkconfig--level2345nginxdon       

           

#servicenginxdstart              //先启动nginx看看,没问题的话就OK了

Startingnginx:

[ OK ]

5.在Client上访问front1上的nginx

http:

//172.17.80.11

6.将front1上的nginxscp到front2上,并同样部署并在安装后将nginx.conf文件对拷

#scpnginx-1.1.6.tar.gzroot@192.168.1.11:

/root

#scp/etc/nginx/nginx.confroot@192.168.1.11:

/etc/nginx/nginx.conf

三、nginx的动静分离和负载均衡

1.在front1、front2配置

A:

动静分离说明:

  有前置nginx做反向代理,采用nginx的location做动静分离,将静态HTML网页、图片、JS、CSS等使用后端nginx或apache处理,以便得到更快的速度;将.jsp、.jspx、.do等交给后端tomcat来处理,

从而实现动静分离的应用;

B:

负载均衡的说明:

  此处采用nginx的proxy_pass将location做动静分离后的jsp、do等jsp程序文件分发到后端upstreamd模块中tomcat集群上,rewrite做正则分发,此时也将应用到nginx经典之处的IP哈希(ip_hash)模块,这样每个访客固定访问一个后端web服务器,可以解决session的问题;

2.分别在front1和front2上配置nginx动静分离和负载均衡

#vi/etc/nginx/nginx.conf

############################################

user nginxnginx;

worker_processes 4;

events{

   worker_connections 1024;

}

http{

   include      mime.types;

   default_type application/octet-stream;

   sendfile       on;

   keepalive_timeout 65;

   gzip on;

upstreamtomcat_server{

#       ip_hash;

       server192.168.1.17weight=2;

       server192.168.1.20max_fails=2fail_timeout=30s;

   }

upstreamapache_server{

       ip_hash;

       server192.168.1.19;

   }

upstreamnginx_server{

       ip_hash;

      server192.168.1.18;

   }

    server

    {

       listen      80;

       server_name ;

       location/{

           index index.htmlindex.phpindex.htmindex.jspindex.dodefault.do;

           root  html;

       if(-d$request_filename)

###############################################

         {

            rewrite^/(.*)([^/])$http:

//$host/$1$2/permanent;

         }

      location~\.(jsp|jspx|do)?

${

          proxy_set_headerHost%host;

          proxy_set_headerX-Forwarded-For$remote_addr;

          proxy_passhttp:

//tomcat_server;

        }

###############################################

      location~\.(php|php5)?

${

          proxy_set_headerHost%host;

          proxy_set_headerX-Forwarded-For$remote_addr;

          proxy_pass  http:

//nginx_server;

        }

#############################################

      location~\.(html|htm)?

${

          proxy_set_headerHost%host;

          proxy_set_headerX-Forwarded-For$remote_addr;

          proxy_passhttp:

//apache_server;

        }

#############################################

      location~.*\.(gif|jpg|jpeg|png|bmp|swf)${

          expires     30d;

         }

       location~.*\.(js|css)?

${

           expires     1h;

         }

#############################################

        }

       error_page 404             /404.html;

       error_page  500502503504 /50x.html;

       location=/50x.html{

           root  html;

       }

   }

}

############################################

3.重启nginx服务

#servicenginxdrestart

Shuttingdowninterfaceeth0:

 [ OK ]

Shuttingdowninterfaceeth1:

 [ OK ]

Shuttingdownloopbackinterface:

 [ OK ]

Bringinguploopbackinterface:

 [ OK ]

Bringingupinterfaceeth0:

 [ OK ]

Bringingupinterfaceeth1:

 [ OK ]

四、接下来配置高可用组建keepalived

1.为什么使用keepalived

软件官网:

http:

//www.keepalived.org

软件获得:

#wgethttp:

//www.keepalived.org/software/keepalived-1.2.2.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1