一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

企业级WEB负载均衡高可用之Nginx+Keepalived

时间:2013-11-14 编辑:简简单单 来源:一聚教程网

这个架构极其适合灵活稳定的环境。

Nginx负载均衡作为服务器遇到的可能故障:

1、服务器网线松动等网络故障

2、服务器硬件故障

3、Nginx服务死掉

遇到前面两种情况,Keepalived可以起到HA的作用;然而遇到第三种情况时就没有办法了,但是可以通过SHELL监控来解决。

一、环境说明CentOS-5.9 32位

IP分配表

二、安装Nginx负载均衡器1、添加运行Nginx的用户和组www及Nginx存放日志的位置,并安装gcc等基础库,以免发生libtool报错现象

 代码如下 复制代码

yum -y install gcc gcc+ gcc-c++ openssl openssl-devel
groupadd www

useradd -g www www

mkdir -p /data/logs/

chown -R www:www /data/logs/

2、安装Nginx

 代码如下 复制代码

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz

tar zxvf pcre-8.21.tar.gz

cd pcre-8.21.tar.gz

./configure

make && make install

cd ../

wget http://nginx.org/download/nginx-1.4.1.tar.gz

tar zxvf nginx-1.4.1.tar.gz

cd nginx-1.4.1.tar.gz

./configure –user=www –group=www –prefix=/usr/local/nginx –with-http_stub_status_module –with-http_ssl_module

make && make install

配置Nginx:

 代码如下 复制代码

vim /usr/local/nginx/conf/nginx.conf

添加以下内容

 代码如下 复制代码

upstream backend{
# ip_hash;  Nginx负载均衡器采用ip_hash模块,让访问的客户端始终与后端的某台Web服务期建立永久性的连接关系(保持会话)我们这里使用默认的RR,方便测试
server 192.168.222.132;
server 192.168.222.133; #两台WEB服务器
}

server {
listen 80;
server_name www.mylb.com;
location /{
root /var/www/html;
index index.php index.htm index.html;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For proxy_add_x_forwarded_for;
proxy_pass http://backend;
}
}

 

分别在两台Nginx负载均衡器上执行/usr/local/nginx/sbin/nginx

三、安装Keeplived,让其分别作WEB及Nginx的HAwget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz

 代码如下 复制代码

tar zxvf keepalived-1.2.7.tar.gz

cd keepalived-1.2.7.tar.gz

./configure –prefix=/usr/local/keepalived

make && make install

安装成功后做成服务模式,方便启动和关闭:

 代码如下 复制代码

cp /usr/local/keepalived/sbin/keepalived /usr/bin/

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

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

分别设置主备Nginx上的Keepalived配置文件。我们先配置主Nginx上的keepalived.conf文件

 代码如下 复制代码

mkdir /etc/keepalived

cd /etc/keepalived

vim keepalived.conf

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass mylb
}
virtual_ipaddress {
192.168.222.131

}

}

 

以下是备用Nginx上的keepalived.conf配置文件:

 代码如下 复制代码

vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass mylb
}
virtual_ipaddress {
192.168.222.131

}

}

在两台负载均衡器上分别启动Keepalived:

 代码如下 复制代码

service keepalived start

 
四、配置Web服务器在两台WEB服务器上分别安装APACHE

 代码如下 复制代码

yum install httpd

为测试方便将WEB1中 /var/www/error/noindex.html 内容修改成WEB1

启动APACHE服务器

 代码如下 复制代码

service httpd start

五、测试打开http://www.111com.net 不停的按F5,页面会在以下两张页面不停切换

 

 run1

run2

 

备注:附Nginx监控脚本

 代码如下 复制代码

#!/bin/bash
while :
do
nginxpid=`ps -C nginx --no-heading |wc -l`
if [ $nginxpid -eq 0 ]; then
nginx
sleep 5
nginxpid=`ps -C nginx --no-heading |wc -l`
echo $nginxpid
if [ $nginxpid -eq 0 ]; then
/etc/init.d/keepalived stop
fi
fi
sleep 5
done

热门栏目