职业IT人-IT人生活圈

 找回密码
 成为会员
搜索
查看: 858|回复: 1

LVS-DR安装配置(ipvsadm+keepalived)

[复制链接]
fl 发表于 2011-8-25 11:02 | 显示全部楼层 |阅读模式
看到标题,你就知道我......
推荐链接 见证又一个......


看到标题,你就知道我做什么,所以这里直接贴安装和配置步骤。
VIP: 192.168.1.98
LVS主:192.168.1.216 (redhat5-2.6.18-194.el5-x86_64)
LVS备:192.168.1.217 (redhat5-2.6.18-194.el5-x86_64)
real_server1:192.168.1.220 (suse11)
real_server2:192.168.1.226 (redhat5)

一、LVS主、备上都安装ipvsadm + keepalived
安装ipvsadm-1.24
1, wget http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
2,创建一个连接文件:ln -sv /usr/src/kernels/2.6.18-194.el5-x86_64/ /usr/src/linux
3,解压:tar zxvf ipvsadm-1.24.tar.gz
4,安装:cd ipvsadm-1.24; make;make install
5,执行ipvsadm,检验ipvsadm 是否被正确安装

安装keepalived-1.1.20 (当前最新是1.2.2,发现安装不上,就选了1.1.*的最新一个版本)
1,wget http://www.keepalived.org/software/keepalived-1.1.20.tar.gz
2,解压:tar zxvf keepalived-1.1.20.tar.gz
3,安装:cd keepalived-1.1.20; ./configure –prefix=/usr/local/keepalive; make;make install
安装完成生成目录:/usr/local/keepalived
4,配置keepalived.conf :
vi /usr/local/keepalive/etc/keepalived/keepalived.conf
LVS主:
Java代码  
! Configuration File for keepalived   
  
global_defs {   
   router_id LVS_DEVEL_1   
}   
vrrp_sync_group VGM {   
    group {   
        VI_CACHE   
    }   
}   
  
vrrp_instance VI_CACHE {   
    state MASTER   
    interface eth0   
    lvs_sync_daemon_inteface eth0   
    virtual_router_id 216  
    priority 150  
    advert_int 5  
    authentication {   
        auth_type PASS   
        auth_pass 1111  
    }   
    virtual_ipaddress {   
        192.168.1.98  
    }   
}   
virtual_server 192.168.1.98 80 {   
    delay_loop 6  
    lb_algo wlc   
    lb_kind DR   
#    persistence_timeout 50  (这里可以让访问的IP在一段时间转发到相同的real_server)   
    protocol TCP   
  
    real_server 192.168.1.226 80 {   
        weight 100  
        TCP_CHECK {   
            connect_timeout 5  
            nb_get_retry 3  
            delay_before_retry 3  
            connect_port 80  
        }   
    }   
  
    real_server 192.168.1.220 80 {   
        weight 100  
        TCP_CHECK {   
            connect_timeout 5  
            nb_get_retry 3  
            delay_before_retry 3  
            connect_port 80  
        }   
    }   
}  

! Configuration File for keepalived

global_defs {
   router_id LVS_DEVEL_1
}
vrrp_sync_group VGM {
    group {
        VI_CACHE
    }
}

vrrp_instance VI_CACHE {
    state MASTER
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 216
    priority 150
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.98
    }
}
virtual_server 192.168.1.98 80 {
    delay_loop 6
    lb_algo wlc
    lb_kind DR
#    persistence_timeout 50  (这里可以让访问的IP在一段时间转发到相同的real_server)
    protocol TCP

    real_server 192.168.1.226 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }

    real_server 192.168.1.220 80 {
        weight 100
        TCP_CHECK {
            connect_timeout 5
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
}

LVS备的配置多和LVS主的配置一致,需要修改以下几段:
Java代码  
global_defs {   
   router_id LVS_DEVEL_2 #随便取,不重复就行   
}  

global_defs {
   router_id LVS_DEVEL_2 #随便取,不重复就行
}

Java代码  
vrrp_instance VI_CACHE {   
    state BACKUP #   
    interface eth0   
    lvs_sync_daemon_inteface eth0   
    virtual_router_id 217  #随便取,不重复就行   
    priority 100   #备比主的值小就行   
    advert_int 5  
    authentication {   
        auth_type PASS   
        auth_pass 1111  
    }   
    virtual_ipaddress {   
        192.168.1.98  
    }   
}  

vrrp_instance VI_CACHE {
    state BACKUP #
    interface eth0
    lvs_sync_daemon_inteface eth0
    virtual_router_id 217  #随便取,不重复就行
    priority 100   #备比主的值小就行
    advert_int 5
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.98
    }
}
配置完成。
LVS主/备启动keepalived。因为我的配置文件的路径不是/etc/keepalived/keepalived.conf
所以必须带上-f或--use-file
Java代码  
/usr/local/keepalive/sbin/keepalived --use-file /usr/local/keepalive/etc/keepalived/keepalived.conf   

/usr/local/keepalive/sbin/keepalived --use-file /usr/local/keepalive/etc/keepalived/keepalived.conf
5,开启net.ipv4.ip_forward = 1 在 /etc/sysctl.conf 中,并使生效:sysctl -p

二、real_server都增加以下脚本并启动
Java代码  
#!/bin/bash   
#description : start realserver   
VIP=192.168.1.98  
/etc/rc.d/init.d/functions   
case "$1" in   
start)   
echo " start LVS of REALServer"  
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up   
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   
;;   
stop)   
/sbin/ifconfig lo:0 down   
echo "close LVS Directorserver"  
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 "Usage: $0 {start|stop}"  
exit 1  
esac  

#!/bin/bash
#description : start realserver
VIP=192.168.1.98
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
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
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
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 "Usage: $0 {start|stop}"
exit 1
esac
启动:/usr/local/bin/lvs_real start

在局域网中的其它电脑上ping 192.168.1.98 ,如果不通请先检查防火墙相关设置。
Java代码  
正在 Ping 192.168.1.98 具有 32 字节的数据:   
来自 192.168.1.98 的回复: 字节=32 时间=6ms TTL=64  
来自 192.168.1.98 的回复: 字节=32 时间=1ms TTL=64  
来自 192.168.1.98 的回复: 字节=32 时间=1ms TTL=64  
来自 192.168.1.98 的回复: 字节=32 时间=1ms TTL=64  

正在 Ping 192.168.1.98 具有 32 字节的数据:
来自 192.168.1.98 的回复: 字节=32 时间=6ms TTL=64
来自 192.168.1.98 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.1.98 的回复: 字节=32 时间=1ms TTL=64
来自 192.168.1.98 的回复: 字节=32 时间=1ms TTL=64

配置成功。


broken 发表于 2011-8-25 11:02 | 显示全部楼层
推荐链接
见证又一个准百万富翁的诞生!
20-30万急聘多名天才Java/MTA软件工程师
3G培训就业月薪平均7K+,不3K就业不花一分钱!


您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

QQ|手机版|小黑屋|网站帮助|职业IT人-IT人生活圈 ( 粤ICP备12053935号-1 )|网站地图
本站文章版权归原发布者及原出处所有。内容为作者个人观点,并不代表本站赞同其观点和对其真实性负责,本站只提供参考并不构成任何投资及应用建议。本站是信息平台,网站上部分文章为转载,并不用于任何商业目的,我们已经尽可能的对作者和来源进行了通告,但是能力有限或疏忽造成漏登,请及时联系我们,我们将根据著作权人的要求立即更正或者删除有关内容。

GMT+8, 2024-5-7 09:05 , Processed in 0.143761 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表