`
varsoft
  • 浏览: 2509783 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

[转]利用LVS+Keepalived 实现高性能高可用负载均衡服务器

阅读更多


作者:NetSeek http://www.linuxtone.org(IT运维专家网|集群架构|性能调优)
更新时间:2008-10-27

文章来源:http://bbs.linuxtone.org/thread-1077-1-1.html

背景:
随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。

LVS+Keepalived 介绍
LVS
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR);
十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

Keepalvied
Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现
二. 网站负载均衡拓朴图


IP信息列表:
名称 IP

LVS-DR-Master 61.164.122.6
LVS-DR-BACKUP 61.164.122.7
LVS-DR-VIP 61.164.122.8
WEB1-Realserver 61.164.122.9
WEB2-Realserver 61.164.122.10
GateWay 61.164.122.1
复制代码

三. 安装LVS和Keepalvied软件包
1. 下载相关软件包

#mkdir /usr/local/src/lvs
#cd /usr/local/src/lvs
#wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
#wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz
复制代码

2. 安装LVS和Keepalived

#lsmod |grep ip_vs
#uname -r
2.6.18-53.el5PAE
#ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686//usr/src/linux

#tar zxvf ipvsadm-1.24.tar.gz
#cd ipvsadm-1.24
#make && make install
#find / -name ipvsadm# 查看ipvsadm的位置

#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure&& make && make install
#find / -name keepalived# 查看keepalived位置

#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/sbin/keepalived /usr/sbin/
#service keepalived start|stop #做成系统启动服务方便管理.
复制代码

四. 配置LVS实现负载均衡
1. LVS-DR,配置LVS脚本实现负载均衡
注: 此脚本在于演示方便大家理解lvs,在keepalived方案中不要启动此脚本,所以看后面有注掉,很多朋友对此有问题。关于LVS的keepalvied的HA方案,完全由keepalived.conf一个文件搞定,特此声明!

#vi /usr/local/sbin/lvs-dr.sh
#!/bin/bash
# description: start LVS of DirectorServer
#Written by :NetSeek http://www.linuxtone.org

GW=61.164.122.1
# website director vip.
SNS_VIP=61.164.122.8
SNS_RIP1=61.164.122.9
SNS_RIP2=61.164.122.10

./etc/rc.d/init.d/functions

logger $0 called with $1

case "$1" in

start)
# set squid vip
/sbin/ipvsadm --set 30 5 60
/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up
/sbin/route add -host $SNS_VIP dev eth0:0
/sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr -p 3
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 1
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 1
touch /var/lock/subsys/ipvsadm >/dev/null 2>&1

;;
stop)
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
ifconfig eth0:0 down
route del $SNS_VIP
rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
echo "ipvsadm stoped"
;;

status)

if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped"
exit 1
else
echo "ipvsadm OK"
fi
;;

*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac

exit 0
复制代码

2. 配置Realserver脚本.

#vi /usr/local/sbin/realserver.sh
#!/bin/bash
# description: Config realserver lo and apply noarp
#Written by :NetSeek http://www.linuxtone.org

SNS_VIP=61.164.122.8

. /etc/rc.d/init.d/functions

case "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"

;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

exit 0
复制代码

或者采用secondary ip address方式配置
# vi /etc/sysctl.conf

net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
[code]
#sysctl ?p
#ip addr add 61.164.122.8/32 dev lo
#ip add list 查看是否绑定
3. 启动lvs-dr脚本和realserver启本,在DR上可以查看LVS当前状态:
#watch ipvsadm ?ln
复制代码

五.利用Keepalvied实现负载均衡和和高可用性
1.配置在主负载均衡服务器上配置keepalived.conf
#vi /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {
notification_email {
cnseek@gmail.com
}
notification_email_from sns-lvs@gmail.com
smtp_server 127.0.0.1
# smtp_connect_timeout 30
router_id LVS_DEVEL
}

# 20081013 written by :netseek
# VIP1
vrrp_instance VI_1 {
state MASTER #备份服务器上将MASTER改为BACKUP
interface eth0
virtual_router_id 51
priority 100 # 备份服务上将100改为99
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
61.164.122.8
#(如果有多个VIP,继续换行填写.)
}
}

virtual_server 61.164.122.8 80 {
delay_loop 6 #(每隔10秒查询realserver状态)
lb_algo wrr #(lvs 算法)
lb_kind DR #(Direct Route)
persistence_timeout 60 #(同一IP的连接60秒内被分配到同一台realserver)
protocol TCP #(用TCP协议检查realserver状态)

real_server 61.164.122.9 80 {
weight 3 #(权重)
TCP_CHECK {
connect_timeout 10 #(10秒无响应超时)
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 61.164.122.10 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
复制代码

2. BACKUP服务器同上配置,先安装lvs再按装keepalived,仍后配置/etc/keepalived/keepalived.conf,只需将红色标示的部分改一下即可.

3. 停掉lvs_dr.sh演示脚本
vi /etc/rc.local
#/usr/local/sbin/lvs-dr.sh将lvs-dr.sh这个脚本注释掉。
#/usr/local/sbin/lvs-dr.sh stop 停止lvs-dr脚本

#/etc/init.d/keepalived start启动keepalived 服务,keepalived就能利用keepalived.conf 配置文件,实现负载均衡和高可用.
整个LVS负均衡HA方案,由keepalived.conf一个文件即可搞定!

4. 查看lvs服务是否正常
#watch ipvsadm ?ln

IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddressort Scheduler Flags
-> RemoteAddressort Forward Weight ActiveConn InActConn
TCP61.164.122.8:80 wrr persistent 60
-> 61.164.122.10:80 Route 3 0 0
-> 61.164.122.9:80 Route 3 0 0
复制代码

#tail ?f /var/log/message监听日志,查看状态,测试LVS负载均衡及高可用性是否有效。

5.停Master服务器的keepalived服务,查看BAKCUP服务器是否能正常接管服务。


四.相关参考
1.LVS 基础知识汇总
LVS的算法介绍 http://bbs.linuxtone.org/viewthread.php?tid=69
学习LVS的三种转发模式 http://bbs.linuxtone.org/viewthread.php?tid=77
LVS中的IP负载均衡技术 http://bbs.linuxtone.org/viewthread.php?tid=68
更多的请到http://www.linuxtone.org 负载均衡版查看

Keepalived 相关参考资料。
http://www.keepalived.org/documentation.html


提供DOC文档下载:
PDF下载: http://docs.linuxtone.org/ebooks/load%20balance/lvs/

分享到:
评论

相关推荐

    利用LVS+Keepalived 实现高性能高可用负载均衡服务器

    【LVS+Keepalived 实现高性能高可用负载均衡服务器】 在互联网行业中,随着网站业务量的不断增长,服务器承受的压力日益增大。为了确保服务的稳定性和可用性,需要采用负载均衡策略。LVS(Linux Virtual Server)和...

    LVS+Keepalived实现高可用负载均衡

    ### LVS+Keepalived 实现高可用负载均衡 #### 一、原理 **1、概要介绍** 在现代互联网架构中,为了提高系统的稳定性和可靠性,常常采用高可用(High Availability, HA)架构设计。其中,LVS(Linux Virtual ...

    MySQL+lvs+keepalived+mha架构配置实战演练

    MySQL+lvs+keepalived+mha架构是一种高可用性、负载均衡的数据库集群解决方案,用于构建强大且可靠的数据库服务。这种架构充分利用了各组件的优势,确保数据的安全性和系统的稳定性。 MySQL是世界上最流行的开源...

    用Keepalived与HAProxy实现高可用负载均衡的配置方法.docx

    这种组合架构,既利用了HAProxy的高性能负载均衡和反向代理能力,又借助Keepalived实现整体架构的高可用性。 4. Keepalived功能与安装配置 - 管理LVS:Keepalived可以与LVS紧密配合,实现高效的负载分发。 - 健康...

    nginx+lvs+keepalived安装文档

    通过上述步骤,我们可以成功地搭建基于 Nginx + LVS + Keepalived 的高可用负载均衡集群。这不仅能够显著提升服务的可靠性和性能,还能够轻松应对大规模并发请求。同时,通过合理的配置,可以实现服务的平滑切换和...

    linux运维学习笔记:lvs+keepalived集群部分Shell企业案例.pdf

    LVS(Linux Virtual Server)是一个负载均衡软件,它将来自客户端的请求分发到一组服务器,这些服务器在技术上被称为真实服务器(real server),目的是分摊网络流量,提供高性能和高可用的服务。LVS支持多种调度...

    生产环境之负债均衡LVS+keepalived方案(5)-关键知识点.pdf

    LVS(Linux Virtual Server)结合keepalived是一种常见的高可用负载均衡解决方案。本篇将详细阐述LVS+keepalived的关键知识点,帮助读者理解其核心原理和配置要点。 首先,我们要了解LVS的工作模式。LVS分为三种...

    LVS+Keepalived构建高可用负载均衡(测试篇)

    **LVS(Linux Virtual Server)** 是一个开源的负载均衡解决方案,它利用 Linux 内核实现了一个高性能且可扩展的服务器集群系统。**Keepalived** 则是一个提供高可用性的解决方案,它可以用来监测服务器的状态并在...

    mysql主从复制+lvs与keepalived实现负载高可用.pdf

    LVS(Linux Virtual Server)是一种高性能的负载均衡解决方案,它将流量分发到多个后端服务器,提高系统的处理能力和可用性。在这个配置中,W-VIP(192.168.5.173)用于写操作,R-VIP(192.168.5.174)用于读操作,...

    lvs+keepalived搭建手册1

    【LVS 简介】 LVS,全称为 Linux Virtual Server,中文名为 Linux 虚拟服务器,...总之,LVS 结合 Keepalived 是一种强大的高可用负载均衡解决方案,广泛应用于大型网站和企业级数据中心,确保服务的稳定性和扩展性。

    Keepalived + LVS(DR) 高可用负载均衡集群

    总的来说,“Keepalived + LVS(DR)”方案是构建高可用负载均衡集群的一种有效方法,它结合了Keepalived的高可用性和LVS的高效负载均衡能力,为大型网站和企业级应用提供了稳定、可靠的服务器架构。

    LVS和keepalived详细

    LVS和keepalived详细 LVS(Linux Virtual Server)是...LVS和keepalived是实现高可用负载均衡系统的不二之选,它们可以根据不同的网络服务需求和服务器配置来选择合适的负载均衡算法,使得系统具有高可用性和高性能。

    LVS+Keepalived构建高可用负载均衡配置方法(配置篇)

    LVS作为一个虚拟服务器集群系统,它提供了高性能、高可用性的网络服务,通过负载均衡技术实现对多台服务器的流量分发,以确保服务的稳定性和优化资源利用率。自Linux 2.4内核开始,LVS已经被纳入标准内核,用户无需...

    mysql主从复制+lvs与keepalived实现负载高可用.docx

    MySQL主从复制与LVS(Linux Virtual Server)和Keepalived结合使用,是构建高可用性和负载均衡数据库架构的一种常见方案。以下将详细介绍这个过程。 首先,MySQL的主从复制是通过binlog(二进制日志)实现的。主...

    搭建MySQL高可用+负载均衡集群(haproxy+keepalived).docx

    【MySQL高可用+负载均衡集群】的搭建方案通常涉及到多个组件,如haproxy和keepalived,旨在提升系统的稳定性和处理能力。MySQL在面对大量用户和数据增长时,单个实例可能会达到性能瓶颈,此时就需要引入高可用和负载...

    keepalived+lvs集群负载均衡配置

    本文将详细介绍如何在 Red Hat 6.5 操作系统下利用 VMware Workstation 构建基于 Keepalived 和 LVS-DR 的高可用负载均衡集群,并深入探讨其工作原理和配置步骤。 #### 二、Keepalived 原理与配置 ##### 1. ...

Global site tag (gtag.js) - Google Analytics