分类: 架构设计与优化
2014-06-17 15:14:53
原文地址:Nginx双主负载均衡架构 作者:vincent2010_
Nginx双主负载均衡架构
Nginx+keepalived单主环境下,其中一台slave机器处于备份状态,有些浪费,其实可以利用DNS轮询来实现双机负载均衡。
具体架构图如下
操作系统:CentOS 6.4
WEB1服务器 IP:192.168.100.60
WEB2服务器 IP:192.168.100.61
VIP1: 192.168.100.62
VIP2: 192.168.100.63
安装keepalived(两台机器相同)
wget
tar xzvf keepalived-1.2.12.tar.gz
cd keepalived-1.2.12
./configure
make
make install
if [ 0 = $? ];then
echo "keepalived installed"
else
echo "keepalived not installed"
fi
cp /usr/local/sbin/keepalived /usr/sbin
cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
~
安装nginx(两台机器相同)
yum -y install openssl openssl-devel pcre pcre-devel gcc gcc-c++ make wget zlib-static zlib zlib-devel
groupadd nginx
useradd -g nginx nginx
wget
tar xzvf nginx-1.6.0.tar.gz
cd nginx-1.6.0
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_gzip_static_module --with-http_stub_status_module --user=nginx --group=nginx
make && make install
if [ $? = 0 ];then
echo "nginx installed"
fi
配置nginx(从略,相关配置看官方文档)
WEB1服务器keepalived.conf配置
[root@test60 root]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from
smtp_server 192.168.100.252
smtp_connect_timeout 30
router_id NGINX_1
}
vrrp_script chk_nginx {
script "/tmp/check_http.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.100.62 dev eth0 label eth0:1
}
}
vrrp_instance VI_2 {
state MASTER
interface eth0
virtual_router_id 52
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.100.63 dev eth0 label eth0:2
}
}
WEB2服务器keepalived.conf配置
[root@test61 root]# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
test@test.com
}
notification_email_from test@test.com
smtp_server 192.168.100.252
smtp_connect_timeout 30
router_id NGINX_2
}
vrrp_script chk_nginx {
script "/tmp/check_http.sh"
interval 2
weight 2
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.100.62 dev eth0 label eth0:1
}
}
vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 52
priority 99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_nginx
}
virtual_ipaddress {
192.168.100.63 dev eth0 label eth0:2
}
}
Nginx状态检查(两台机器相同)
vim /tmp/check_http.sh
#!/bin/bash
url="" # WEB2机器填192.168.100.61
status=$(/usr/bin/curl -s --head "$url" | awk '/HTTP/ {print $2}')
if [ "$status" != "200" ]; then
/etc/init.d/keepalived stop
fi
WEB1服务器增加如下:
echo “192.168.100.62” >> /var/www/html/index.html
WEB2服务器增加如下:
echo “192.168.100.63” >> /var/www/html/index.html