nginx+tomcat+memcached部署过程记录

nginx+tomcat+memcached 部署过程
1.源码包下载
 官网:http://nginx.org
2.解压源码包
  tar -zxvf nginx-1.8.1.tar.gz
3.修改源码  
  cd nginx-1.8.1
  vim ./src/core/nginx.h 更改curl -I localhost显示的web服务器信息
  vim ./auto/cc/gcc line:178 更改debug,注释掉即可,使得nginx更轻
4.编译前准备
  yum install gcc -y
  yum install -y pcre-devel.x86_64
  yum install -y openssl-devel.x86_64
  groupadd -g 500 nginx
  mkdir -p /opt/lnmp/nginx  
  useradd -g 500 -u 500 -s /sbin/nologin -d /opt/lnmp/nginx nginx
 
5../configure --help 查看编译参数
  编译
  ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_ssl_module
    注:(1)若有第三方模块,--add-module=路径
        (2)编译时确定路径,要更换安装位置需重新编译
        (3)若编译时未指定用户和组,则需安装后修改nginx.conf文件
   make && make install
6.修改配置文件
  vim conf/nginx.conf
    user 未添加编译参数则设置
    work process 2 #双核cpu处理进程
    line:13 use epoll;
    cpu绑定
    worker_cpu_affinity 0001;这表示一共有4颗cpu(4位),只使用第一颗,其他三颗为0010,0100,1000.

  将nginx命令加入环境变量
  vim /etc/profile
    EndLine:export PATH=$PATH:/opt/lnmp/nginx/sbin
  source /etc/profile
  注:source:
      Usage: source FileName
      作用:在当前bash环境下读取并执行FileName中的命令。
           该命令通常用命令“.”来替代。
        source命令与shell scripts的区别是,
            source在当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。
7.nginx -t 查看有没有错误
  nginx 启动nginx
  nginx -s reload 重读配置文件
  卸载nginx之前,要先 nginx -s stop

8.通常,nginx处于前端接受请求,apache做后端处理请求,并以此实现负载均衡。
    nginx 负载均衡工作在OSI七层模型的七层。
http标签内:
    upstream hz {
        server 172.25.42.4;
        server 172.25.42.5;
    }
location {
    proxy_pass http://hz
}
9.
nginx sticky好于ip_hash,但nginx是静态编译,不支持动态模块加载,需重新编译加入sticky模块
先关闭nginx,nginx -s stop
tar -zxvf nginx-sticky-module-1.0.tar.gz -C nginx-1.8.1
cd nginx-1.8.1
make clean
./configure --prefix=/opt/lnmp/nginx/ --user=nginx --group=nginx --with-http_ssl_module --with-http_sub_module --add-module=nginx-sticky-module-1.0/
make && make install
sticky模块可以使用了
sticky 后可以添加参数
sticky [name=route] [domain=.foo.bar] [path=/] [expires=1h] [hash=index|md5|sha1] [no_fallback];
          - name:    the name of the cookies used to track the persistant upstream srv,cookies的名字
                     default: route

          - domain:  the domain in which the cookie will be valid
                     default: nothing. Let the browser handle this.

          - path:    the path in which the cookie will be valid
                     default: nothing. Let the browser handle this.

          - expires: the validity duration of the cookie
                     default: nothing. It's a session cookie.
                     restriction: must be a duration greater than one second

          - hash:    the hash mechanism to encode upstream server. It cant' be used
                     with hmac.


10.nginx 能够对后端健康检查,当一台不可用时自动切换,不会影响用户体验。lvs(4层)没有后端健康检查,但可以通过其他方法弥补

11.
负载均衡5种算法:weight(weight=num),ip_hash,rr,fair(按照响应时间来分配real server),url_hash(相同的url都交给同一台real server)
后两种是第三方,需要单独编译
backup:当所有real server都down掉了,这一台开启,通常用来告知用户服务不可用,以免用户刷新加大服务器压力
down:不可用


12.动态页面交给tomcat集群
http模块中添加
upstream tomcat {
    server 172.25.42.4:8080;
    server 172.25.42.5:8080;
}

server模块中添加
location ~ \.jsp$ {
    proxy_pass http://tomcat;
}
后端安装tomcat:
首先安装jdk,将java加入环境变量
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
tomcat解压即可,tomcat/bin/startup.sh启动tomcat
在两台机器的tomcat/webapps/ROOT/下写测试页面<%=new java.util.Date() %>
(注:安装jdk和tomcat后对原来的安装目录做一个软链接,方便之后程序升级
13.为避免单点故障,使用memcached对session备份在另一台机器,防止其中一台机器down掉,nginx切换后端机器时,会话丢失。
/usr/local/tomcat/bin/shutdown.sh关掉tomcat
把如下软件包放置到/usr/local/tomcat/lib 目录中
kryo-1.03.jar
kryo-serializers-0.8.jar
memcached-2.5.jar
memcached-session-manager-1.5.1.jarmemcached-session-manager-tc7-1.5.1.jar
minlog-1.2.jar
msm-kryo-serializer-1.5.1.jar
reflectasm-0.9.jar把如下软件包放置到/usr/local/tomcat/lib 目录中
    kryo-1.03.jar
    kryo-serializers-0.8.jar
    memcached-2.5.jar
    memcached-session-manager-1.5.1.jarmemcached-session-manager-tc7-1.5.1.jar
    minlog-1.2.jar
    msm-kryo-serializer-1.5.1.jar
    reflectasm-0.9.jar

vi /usr/local/tomcat/conf/context.xml
<Context>
......
<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:192.168.0.91:11211,n2:192.168.0.92:11211"
failoverNodes="n1"
#在 node2 上此项设置为“n2”
requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"
transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"
/>
</Context>
/usr/local/tomcat/bin/startup.sh
启动 tomcat
# /usr/local/tomcat/bin/shutdown.sh 关闭 tomcat
memcached 安装
yum install memcached -y
service memcached start

两台机器做同样操作,互为备份,将session会话除了保存在本地tomcat上之外,还保存在另一台机器的memcached上,当正在工作的机器down掉时,nginx将连接切到另一台机器,另一台机器接管连接,同时在本机memcached上找到session,保证用户体验。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值