nginx+ keepalived+proxy_cache实现nginx高可用及高速缓存


环境:

master: 10.10.0.224

slave: 10.10.0.225

real server 1: 10.10.0.221

real server 2: 10.10.0.226

vip: 10.10.0.220


real server 事先安装好web服务

# yum install httpd -y

# cd /var/www/html

# touch test.html

# echo "10.10.0.221" > test.html    # real server1

# echo "10.10.0.226" > test.html    # real server2

Master/slave:

一、安装nginx

安装依赖

# yum install -y pcre pcre-devel gd gd-devel

# tar zcvf nginx-1.9.1.tar.gz

# cd nginx-1.9.1

# ./configure --prefix=/etc/nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre

# make

# make install

二、配置文件修改

# cd /etc/nginx/conf

# vim nginx

#负载均衡

    upstream webs {

        server 10.10.0.221      weight=2;

        server 10.10.0.226      weight=1 max_fails=2 fail_timeout=2;

}

#设置缓存

proxy_cache_path /data/cache levels=1:2 keys_zone=one:20m max_size=1g;

    server {

        listen  80;

        server_name     www.a.com;

        location / {

          proxy_set_header Host $host;

          proxy_set_header X-Real-IP $remote_addr;

          proxy_pass    http://webs;


          add_header X-Via-IP $server_addr;

          add_header X-Cache-Status $upstream_cache_status;

          proxy_cache   one;

          proxy_cache_valid 200 302 301 304 10m;

        }

}


启动脚本

# vim /etc/init.d/nginx

#!/bin/bash

# it is nginx

# chkconfig: - 85 15

# description: nginx is a high-performance web and proxy server

# date: 2015-6-2


nginxd=/etc/nginx/sbin/nginx

nginx_config=/etc/nginx/conf/nginx.conf

nginx_pid=/var/run/nginx.pid


RETVAL=0

prog="nginx"

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

. /etc/sysconfig/network


[ ${NETWORKING} = no ] && exit 0

[ -x $ngind ] || exit 0


start() {

if [ -e $nginx_pid ]

then

  echo "nginx already running..."

  exit 1

fi


echo -n $"staring $prog: "

daemon $nginxd -c ${nginx_config}

RETVAL=$?

echo 

[ $RETVAL = 0 ] && touch /var/lock/subsys/nginx

return $RETVAL

}


stop() {

echo -n $"stopping $prog: "

killproc $nginxd

RETVAL=$?

echo

[ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid

}


reload() {

echo -n $"reloading $prog: "

killproc $nginxd -HUP

RETVAL=$?

echo

}


case "$1" in

start)

  start;;

stop)

  stop;;

reload)

  reload;;

restart)

  stop

  start

  ;;

status)

  status $prog

  RETVAL=$?;;

*)

  echo $"Usage:$prog{start|stop|status|reload|restart|help}"

  exit 1;;

esac

exit $RETVAL

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

# service nginx restart


三、测试

wKiom1Vwc8jgVajvAABadu9AL98683.jpg

wKioL1VwdeLTReS1AABO08gusps156.jpg

wKiom1VwdIeg42DIAAJ-S1_baG4233.jpg


四、安装配置keepalived(这里采用yum安装)

# yum install -y keepalived

# vim /etc/keepalived/keepalived.conf

! Configuration File for keepalived


global_defs {

   notification_email {

    # acassen@firewall.loc

   137290071@qq.com

   }

   notification_email_from Alexandre.Cassen@firewall.loc

   smtp_server 127.0.0.1

   smtp_connect_timeout 30

   router_id LVS_DEVEL1    #全局唯一,slave上需修改

}


vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100    #slave需修改

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        10.10.0.220/12 dev eth0 label eth0:0

    }

}


五、开启服务,并开机启动

# service keepalived start

# chkconfig keepalived on

# chkconfig nginx on


六、测试