7层负载均衡解决方案[1]

时间 : 14-06-14 栏目 : 虚拟化 作者 : 老薛 评论 : 1 点击 : 2,609 次

nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都由主进程发出,Slave(worker)进程所有的超时任务都会被Master中止,属于非阻塞式任务模型。

Keepalived是Linux下面实现VRRP 备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。二者结合,可以构架出比较稳定的软件lb方案。

现在有两台虚拟机ServerA和ServerB. 两个对外提供Web服务器的虚IP(VIP)192.168.200.100和192.168.200.200, 虚IP用在keepalived的配置中, 网卡接口配置有内网IP.

ServerA:
eth0: 10.0.0.21
VIP: 10.0.0.100 (www.srt.com.cn

ServerB:
eth0: 10.0.0.22
VIP: 10.0.0.200  (www.srtedu.com

 

如果两台服务器都正常地提供网络服务, 那么, 发往192.168.200.100的服务请求会被ServerA处理, 发往192.168.200.200的服务请求会被ServerB处理. 假设只有ServerB出现故障, 那么, 所有的请求都由ServerA进行处理. 当只有ServerA出现故障时, 也是同理.

软件环境:本文使用的Linux为RHEL 5.2、软件:keepalived-1.1.17、nginx-0.7.64

安装Keepalived

wget http://www.keepalived.org/software/keepalived-1.1.17.tar.gz
tar zxvf keepalived-1.1.17.tar.gz
cd keepalived-1.1.17
./configure --prefix=/usr/local/keepalived
make
make install
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
mkdir /etc/keepalived
cd /etc/keepalived/

配置Keepalived

接下来, 是最重要的修改配置文件/etc/keepalived/keepalived.conf

vi /etc/keepalived/keepalived.conf

global_defs {
notification_email {
baowei@srt.com.cn
}
notification_email_from baowei@srt.com.cn
smtp_server 211.155.225.210
smtp_connect_timeout 30
router_id srtweb

}

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
smtp_alert
authentication {
auth_type PASS
auth_pass srt_L7switch
}
virtual_ipaddress {
192.168.200.100
}
}

vrrp_instance VI_2 {
state BACKUP
interface eth0
virtual_router_id 52
priority 50
advert_int 1
smtp_alert
authentication {
auth_type PASS
auth_pass srt_L7switch
}
virtual_ipaddress {
192.168.200.200
}
}

 

执行 /etc/rc.d/init.d/keepalived start 启动keepalived后, 执行ip a, 你将看到类似的信息:

[root@node1 ~]# ip a
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:01:11:2a brd ff:ff:ff:ff:ff:ff
inet 10.0.0.21/24 brd 192.168.200.255 scope global eth0
inet 10.0.0.100/32 scope global eth0
inet 10.0.0.200/32 scope global eth0
inet6 fe80::20c:29ff:fe01:112a/64 scope link

可以看到, ServerA的网卡绑定了两个虚IP 192.168.200.100和192.168.200.200, 这时在第3台机器上ping这两个IP, 是可以通的.

然后, 按上面的方法安装ServerB. ServerB的keepalived.conf配置和ServerA基本相同, 但是, 把state MASTER和state BACKUP调换, priority 100和priority 50调换,router_id改为srtedu. 启动ServerB后, 再到ServerA上运行ip a, 你将看到

 

除非注明,文章均为( 老薛 )原创,转载请保留链接: http://www.bdkyr.com/uncategorized/132.html

7层负载均衡解决方案[1]:目前有1 条留言

  1. 沙发
    Disk
    Post: 2014-08-17 下午7:14

    我们公司也在用haproxy.

随便看看

1