本文共 4685 字,大约阅读时间需要 15 分钟。
随着互联网的发展,提供用户访问的web服务器,必须要保证每天24不间断服务,访问量不断增加,有什么好的web架构既能实现高可用性负载均衡,而且价格又是免费的呢?答案有木有?有!LVS+Keepalived 是不错的选择!
我们使用4台CentOS 5.4服务器,拓扑结构如下:
由于我们使用的是LVS+Keepalived,直接在keepalived.conf
中配置即可,不需要手动编写LVS-DR脚本。以下是安装脚本:
#!/bin/sh# 脚本编写目的:自动安装LVS+Keepalived# 编写时间:2011年7月6日17:25:39# 初稿人:wugk# 定义变量DIR1=/usr/srcDIR2=/usr/localcat << EOF++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++Welcome to use Linux installed a key LVS+KEEPALIVED shells scripts++++++++++++++++++++++++++*************************++++++++++++++++++++++++EOFif [ $UID -ne 0 ]; then echo "This script must use root user ,please exit……" sleep 2 exit 0fidownload(){ cd $DIR1 && \ wget -c http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz \ http://www.keepalived.org/software/keepalived-1.1.15.tar.gz}if [ $? -eq 0 ]; then echo "Download LVS Code is OK!"fi else echo "Download LVS Code is failed,Please check!" exit 1fiipvsadm_install(){ ln -s $DIR1/kernels/2.6.* $DIR1/linux cd $DIR1 && \ tar xzvf ipvsadm-1.24.tar.gz && \ cd ipvsadm-1.24 && \ make && make install}if [ $? -eq 0 ]; then echo "Install ipvsadm success,please waiting install keepalived ............."fi else echo "Install ipvsadm failed ,please check !" exit 1fikeepalived_install(){ cd $DIR1 && \ tar -xzvf keepalived-1.1.15.tar.gz && \ cd keepalived-1.1.15 && \ ./configure && make && make install}if [ $? -eq 0 ]; then echo "Install keepalived success,please waiting configure keepalived ............."fi else echo "Install keepalived failed ,please check install version !" exit 1fikeepalived_config(){ cp $DIR2/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ \ cp $DIR2/etc/sysconfig/keepalived /etc/sysconfig/ \ mkdir -p /etc/keepalived \ cp $DIR2/etc/keepalived/keepalived.conf /etc/keepalived/ \ cp $DIR2/sbin/keepalived /usr/sbin/}if [ $? -eq 0 ]; then echo "Keepalived system server config success!"fi else echo "Keepalived system server config failed ,please check keepalived!" exit 1fi# 以上脚本分别在LVS-Master和LVS-BACKUP上执行安装。
以下是LVS-Master的配置示例:
global_defs { notification_email { wgkgood@163.com } notification_email_from wgkgood@163.com smtp_server 127.0.0.1 smtp_connect_timeout 30 router_id LVS_DEVEL}vrrp_instance VI_1 { state MASTER interface eth0 lvs_sync_daemon_inteface eth0 virtual_router_id 51 priority 100 advert_int 5 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.2.100 }}virtual_server 192.168.2.100 80 { delay_loop 6 lb_algo wlc lb_kind DR persistence_timeout 60 protocol TCP real_server 192.168.2.79 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.2.80 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }}
state
为BACKUP
,priority
为90
即可。在WEB1、WEB2上分别配置Apache,并执行以下脚本:
#!/bin/shPS3="Please Choose whether or not to start a realserver VIP1 configuration:"select i in "start" "stop"docase "$i" instart) read -p "Please enter the virtual server IP address:" VIP1 ifconfig lo:0 $VIP1 netmask 255.255.255.255 broadcast $VIP1 /sbin/route add -host $VIP1 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" exit 0;;stop) ifconfig lo:0 down route del $VIP1 >> /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" exit 1;;*) echo "Usage: $0 {start|stop}" exit 2esacdone
脚本会提示是否启动,按1即启动,输入VIP地址192.168.2.100
,用ifconfig
你会看到:lo:0
的IP即表示配置IP成功。
在LVS-Master、LVS-BACKUP上执行:
/etc/init.d/keepalived restart
查看LVS-Master日志:
tail -f /var/log/keepalived.log
在浏览器中访问即可!当你宕掉LVS-Master后,LVS-BACKUP会接管变成LVS-Master提供服务,当LVS-Master故障恢复后,LVS-BACKUP又会变成原来的状态。
安装的脚本可以在这里下载:[下载链接](注意:请勿直接复制链接,确保遵守网络规定)。
转载地址:http://vtufk.baihongyu.com/