CDN架构实践:LVS 和keepalived 配置实例

来源:互联网 发布:唐氏筛查自动计算软件 编辑:程序博客网 时间:2024/06/08 12:40

0x01 初衷

最近在研究分布式的东西,就拿CDN来练手了(基于《CDN技术详解》),所以就萌生了自己建个CDN集群的想法,当然都是开源的内容,只是个人实践,高手请指教。后续还会增加GSLB、分布式文件系统和网络存储。 下面是我实践的一些记录及过程。


0x02 配置

实际中,我同时开了4个虚拟机运行,其中两个是LVS+Keepalived,两个是server,下面是借鉴的拓扑图

至于如何安装LVS和keepalivde,此文就略过了。

下面是LVS master的 keepalived配置

!Configuration File for keepalivedglobal_defs {notification_email {xxxxxx@qq.com}notification_email_from xxxxxx@qq.comsmtp_server smtp.qq.com#smtp_connect_timeout 30#router_id LVS_DEVELrouter_id LVS_DEVEL_MASTER}#VIP1vrrp_instance VI_1 {state MASTERinterface eth0lvs_sync_daemon_interface eth0virtual_router_id 51priority 200advert_int 5authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {10.10.10.200}}virtual_server 10.10.10.200 80 {delay_loop 6lb_algo wlclb_kind DRpersistence_timeout 60protocol TCPreal_server 10.10.10.103 80 {weight 100TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 10.10.10.104 80 {weight 100TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}}

这是相关的启动脚本

#!/bin/bashecho "1" > /proc/sys/net/ipv4/ip_forwardIPVSADM='/sbin/ipvsadm'VIP=10.10.10.200RS1=10.10.10.103RS2=10.10.10.104ifconfig eth0:1 $VIP broadcast $VIP netmask 255.255.255.255 uproute add -host $VIP dev eth0:1$IPVSADM -C$IPVSADM -A -t $VIP:80 -s rr$IPVSADM -a -t $VIP:80 -r $RS1:80 -g -w 1$IPVSADM -a -t $VIP:80 -r $RS2:80 -g -w 1$IPVSADM -L -n
它们都是开机启动的。

LVS backup的配置文件就不写了,主要它们的不同点就是router_id 和 priority 一定要不同。

对于RS的配置如下:

#!/bin/bash #description: Config realserverSNS_VIP=10.10.10.200#/etc/rc.d/init.d/functionscase "$1" instart)/sbin/ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP/sbin/route add -host $SNS_VIP dev lo:0echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/lo/arp_announceecho "1" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "2" > /proc/sys/net/ipv4/conf/all/arp_announcesysctl -p > /dev/null 2>&1echo "RealServer Start OK";;stop)/sbin/ifconfig lo:0 down/sbin/route del $SNS_VIP > /dev/null 2>&1echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/lo/arp_announceecho "0" > /proc/sys/net/ipv4/conf/all/arp_ignoreecho "0" > /proc/sys/net/ipv4/conf/all/arp_announcesysctl -p > /dev/null 2>&1echo "RealServer Start OK";;*)echo "Usage: $0 {start|stop}"exit 1esacexit 0


0x03 问题

在这个解决的过程中,遇到了一个问题就是脑裂, LVS backup进入master状态后,不能切回backup(master起来之后),后来才发现是centos默认启用了iptables规则,导致master和backup"心跳“检测失败。其余的小问题,略过......

另外,抓包解决的过程中,发现master和backup一直都在给后端服务器端口80发送报文,给分析解决问题加了个”窗户纸“,其实这是后端服务器健康检测的报文,分析问题的时候不要被误导了。

0 0