您的位置:首页 > 运维架构 > Nginx

利用Nginx+Keepalived实现web负载均衡

2011-01-09 20:18 302 查看
去年,尝试使用了Nginx和Keepalived实现web负载均衡,现将部署心得总结一下

1.安装Linux

2. 为了确保能在Nginx 中使用正则表达式进行更灵活的配置,需要先安装Pcre。依次执行下列命令完成安装

# tar zxvf pcre-8.10.tar.gz

# cd pcre-8.10

#./configure

# make

# make install

需要将libpcre.a和libpcre.la拷到.lib目录下

# mkdir /usr/local/lib/.libs

# cp /usr/local/lib/libpcre.a /usr/local/lib/.libs/libpcre.a

# cp /usr/local/lib/libpcre.la /usr/local/lib/.libs/libpcre.la

4.安装配置Nginx

(1)安装Nginx。依次执行下列命令

# tar zxvf nginx-0.7.67.tar.gz

# cd nginx-0.7.67

# ./configure --with-pcre=/usr/local/lib/ --with-http_stub_status_module

打开/root/nginx-0.7.67/objs/makefile,删除./configure --disable-shared行

# make

# make install

(2)修改Nginx配置文件

worker_processes配置为cpu核数

events节点修改如下:

events {

use epoll;

worker_connections 20480;

}

upstream节点修改如下,其中192.168.1.1和192.168.1.2为2台web服务器:

upstream 192.168.0.1 {

ip_hash;

server 192.168.1.1:80 max_fails=2 fail_timeout=60s;

server 192.168.1.2:80 max_fails=2 fail_timeout=60s;

}

server节点修改如下:

server {

listen 80;

server_name 192.168.0.1;

access_log logs/web.log; #main;

location / {

proxy_pass http://192.168.0.1;# 反向代理

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

location /nginxstatus {

stub_status on; #Nginx 状态监控配置

access_log off;

}

}

(3)执行/usr/local/nginx/sbin/nginx –t验证配置文件是否正确

(4)执行/usr/local/nginx/sbin/nginx启动Nginx,此时可通过执行

ps –ef | grep nginx 命令查看Nginx进程,在浏览器输入
http://192.168.0.1/nginxstatus,可以查看Nginx活动状态,其中nginxstatus必须与配置文件中配置的完全一致(包括大小写)。
(5)将Nginx安装成Linux服务

1.将nginx文件拷到/etc/init.d目录中

2.为该脚本增加启动权限

# chmod 755 /etc/init.d/nginx

3.加为系统服务,自动启动

# chkconfig --level 2345 nginx on

4.手动启动

# service nginx start

(6)切割Nginx日志,避免日志文件过大

创建切割Nginx日志的shell脚本 ,修改logs_path和logs_names两段

# !/bin/bash
# by heui
# Nginx logs path
logs_path="/usr/local/nginx/logs/"
# Nginx logs names here
logs_names=(web)

mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/
num=${#logs_names[@]}
for((i=0;i<num;i++));do
mv ${logs_path}${logs_names[i]}.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/${logs_names[i]}_$(date -d "yesterday" +"%Y%m%d").log
done

kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`

执行crontab -e

输入以下内容并保存

00 00 * * * /bin/bash /usr/local/nginx/cut_nginx_log.sh

5. 安装配置Keepalived消除Nginx单点故障

(1)安装Keepalived。依次执行下列命令完成安装

# tar zxvf keepalived-1.1.20.tar.gz

# cd keepalived-1.1.20

#./configure --prefix=/usr/local/keepalived

# make

# make install

(2)修改Keepalived配置文件,其中192.168.1.1为Nginx服务器

! Configuration File for keepalived

vrrp_sync_group VGB {

group {

VI_1

}

}

vrrp_instance VI_1 {

state MASTER #后备机改为BACKUP

interface eth0

virtual_router_id 51

mcast_src_ip 192.168.2.1 priority 100 #后备机该值要小于主机,如50

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.0.1

}

}

(3)将Keepalived安装成Linux服务。依次执行下列命令

#cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/

#cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

#mkdir /etc/keepalived

#cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/

#cp /usr/local/keepalived/sbin/keepalived /usr/sbin/

# chkconfig --level 2345 keepalived on

#service keepalived start

(4)禁用iptables,否则Keepalived故障转移会失效

执行service iptables stop关闭iptables服务

执行chkconfig iptables off取消iptables服务自动启动
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: