第一章:nginx负载均衡实验

1.  Nginx安装

1.1.     安装编译环境

yum groupinstall Development Tools和DevelopmentLibraries

 

注:该安装包包含大多数的编译工具。例如c++、c等等

 

1.2.     安装依赖包

安装:yum install gcc openssl-devel pcre-devel zlib-devel pcre-devel.x86_64

 

1.3.     创建用户和用户组

为了方便nginx运行而不影响linux安全

         创建组:groupadd-r nginx

         创建用户:useradd-r -g nginx  -M nginx

                  -M表示不创建用户的家目录。

 

 

1.4.     编译安装nginx

#./configure \

 --prefix=/usr \

 --sbin-path=/usr/sbin/nginx \

 --conf-path=/etc/nginx/nginx.conf \

 --error-log-path=/var/log/nginx/error.log \

 --http-log-path=/var/log/nginx/access.log \

 --pid-path=/var/run/nginx/nginx.pid \

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

 --user=nginx \

 --group=nginx \

 --with-http_ssl_module \

 --with-http_flv_module \

 --with-http_stub_status_module \

 --with-http_gzip_static_module \

 --http-client-body-temp-path=/var/tmp/nginx/client/ \

 --http-proxy-temp-path=/var/tmp/nginx/proxy/ \

 --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ \

 --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \

 --http-scgi-temp-path=/var/tmp/nginx/scgi \

 --with-pcre

# make && make install

 

 

1.5.     配置Nginx为系统服务,以方便管理

  1、在/etc/rc.d/init.d/目录中建立文本文件nginx

  2、在文件中粘贴下面的内容:

#!/bin/sh

#

# nginx - this script starts and stops thenginx daemon

#

# chkconfig:   - 85 15

# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \

#               proxy and IMAP/POP3 proxy server

# processname: nginx

# config:      /etc/nginx/nginx.conf

# config:      /etc/sysconfig/nginx

# pidfile:     /var/run/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 0

 

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() {

   #make required directories

  user=`nginx -V 2>&1 | grep "configure arguments:" | sed's/[^*]*--user=\([^ ]*\).*/\1/g' -`

  options=`$nginx -V 2>&1 | grep 'configure arguments:'`

  for opt in $options; do

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

          value=`echo $opt | cut -d "=" -f 2`

          if [ ! -d "$value" ]; then

               # echo "creating"$value

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

          fi

      fi

  done

}

 

start() {

    [-x $nginx ] || exit 5

    [-f $NGINX_CONF_FILE ] || exit 6

   make_dirs

   echo -n $"Starting $prog: "

   daemon $nginx -c $NGINX_CONF_FILE

   retval=$?

   echo

    [$retval -eq 0 ] && touch $lockfile

   return $retval

}

 

stop() {

   echo -n $"Stopping $prog: "

   killproc $prog -QUIT

   retval=$?

   echo

    [$retval -eq 0 ] && rm -f $lockfile

   return $retval

}

 

restart() {

   configtest || return $?

   stop

   sleep 1

   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/null 2>&1

}

 

case "$1" in

   start)

       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 2

esac

 

3、修改nginx文件的执行权限

         chmod+x nginx

4、添加该文件到系统服务中去

         chkconfig--add nginx

         查看是否添加成功

         chkconfig--list nginx

 

启动,停止,重新装载

service nginx start|stop

 

2.  Nginx集群(轮训权重)

配置nginx.conf文件

upstream cluster {

   server 192.168.118.135:8080 weight=2;

   server 192.168.118.137:8080;

}

 

location / {

  proxy_pass http://cluster;

}

 

3.  Memcache实现会话一致

1、安装libevent

          2、安装memcached

          3、启动memcached

                   memcached-d -m 128m -p 11211 -l 192.168.197.128 -u root -P /temp/

                  

                            -d:后台启动服务

                            -m:缓存大小

                            -p:端口

                            -l:IP

                            -P:服务器启动后的系统进程ID,存储的文件

                            -u:服务器启动是以哪个用户名作为管理用户

                           

3、拷贝jar到tomcat的lib下

4、配置tomcat,每个tomcat里面的context.xml中加入:

<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager"

    memcachedNodes="n1:192.168.197.128:11211"

    sticky="false"

    lockingMode="auto"

    sessionBackupAsync="false"

    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

    sessionBackupTimeout="1000"transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

/>

 

<ManagerclassName="de.javakaffee.web.msm.MemcachedBackupSessionManager" 

   memcachedNodes="n1:host1.yourdomain.com:11211,n2:host2.yourdomain.com:11211" 

   sticky="false" 

   sessionBackupAsync="false" 

   lockingMode="uriPattern:/path1|/path2" 

   requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$" 

   transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory" 

   />

 

 

错误:

如果启动时出现“memcached: error while loading shared libraries:libevent-2.0.so.5:cannot open shared object file: No such file or directory”之类的信息,表示memcached找不到

libevent 的位置

所以,请先使用whereislibevent 得到位置,然后连接到memcached 所寻找的路径

首先查看,libevent 在哪里

# whereislibevent

libevent:/usr/local/lib/libevent.la /usr/local/lib/libevent.so /usr/local/lib/libevent.a

然后,再看memcached 从哪里找它

#LD_DEBUG=libs memcached -v 2>&1 > /dev/null | less

可以看到:是/usr/lib/libevent-2.0.so.5,所以,创建软链

[root@localhost tools]# ln -s/usr/local/lib/libevent-2.0.so.5 /usr/lib/libevent-2.0.so.5

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值