利用Nginx+Keepalived实现web负载均衡
时间:2011-01-09 来源:saville
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服务自动启动