您的位置:首页 > 运维架构 > 网站架构

lvs+keepalived实现高可用的负载均衡

2015-11-22 23:28 525 查看
实验环境:ubuntu14.10, 

准备4台服务器(互相可以访问)
lvs_master 192.168.142.145
lvs_slave 192.168.142.137
real_server_1 192.168.142.143
real_server_2 192.168.142.146
(下面配置过程中会将VIP设为192.168.142.144)

配置4台服务器

修改当前会话中的主机名
hostname lvs-master
永久修改主机名
vi /etc/hostname(ubuntu)
vi /etc/sysconfig/network(其他)
IP地址与主机名的绑定
vi /etc/hosts
添加一行
192.168.142.145 lvs-master
重启网络
/etc/init.d/networking restart(ubuntu)
service network restart(其他)
验证
ping lvs-master(未通过)
关闭防火墙
ufw disable(ubuntus)
service iptables stop(其他)
执行关闭防火墙自动运行命令
(ubuntu不用,上一步已关闭)
chkconfig iptables off(其他)
chkconfig –list | grep iptables(其他)

配置2台realserver

装上nginx,访问80端口返回不同内容
进入指定文件夹
cd /etc/init.d/
编辑脚本文件:vim realserver
SNS_VIP=192.168.142.144
/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
保存脚本文件后更改该文件权限
chmod 755 realserver
开启realserver服务
service realserver start

配置主lvs

安装keepalived
apt-get install keepalived
进入keepalived.conf所在目录
cd /etc/keepalived
首先清除掉keepalived原有配置
> keepalived.conf
重新编辑keepalived配置文件
vi keepalived.conf

global_defs {  
   notification_email {  
         edisonchou@hotmail.com  
   }  
   notification_email_from sns-lvs@gmail.com  
   smtp_server 192.168.80.1 
   smtp_connection_timeout 30
   router_id LVS_DEVEL  # 设置lvs的id,在一个网络内应该是唯一的
}  
vrrp_instance VI_1 {  
    state MASTER   #指定Keepalived的角色,MASTER为主,BACKUP为备          
    interface eth0  #指定Keepalived的角色,MASTER为主,BACKUP为备
    virtual_router_id 51  #虚拟路由编号,主备要一致
    priority 100  #定义优先级,数字越大,优先级越高,主DR必须大于备用DR    
    advert_int 1  #检查间隔,默认为1s
    authentication {  
        auth_type PASS  
        auth_pass 1111 
    }  
    virtual_ipaddress {  
        192.168.142.144  #定义虚拟IP(VIP)为192.168.2.33,可多设,每行一个
    }  
}  
# 定义对外提供服务的LVS的VIP以及port
virtual_server 192.168.142.144 80 {  
    delay_loop 6 # 设置健康检查时间,单位是秒                    
    lb_algo wrr # 设置负载调度的算法为wlc                   
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式   
    nat_mask 255.255.255.0               
    persistence_timeout 0         
    protocol TCP                  
    real_server 192.168.142.143 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高              
        TCP_CHECK {  
        connect_timeout 10        
        nb_get_retry 3 
        delay_before_retry 3 
        connect_port 80 
        }  
    }  
    real_server 192.168.142.146 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高  
        TCP_CHECK {  
        connect_timeout 10 
        nb_get_retry 3 
        delay_before_retry 3 
        connect_port 80 
        }  
     }  
}
开启keepalived服务
service keepalived start

配置从lvs

配置文件只需修改2两处
将state由MASTER改为BACKUP
将priority由100改为99

验证性测试

1.指定请求的均衡转发:因为两个Web服务器的权重都一样,所以会依次转发给两个Web服务器;
2.Web服务器发生故障时:再来看看这时从外部访问VIP时是否可以获得另一个realserver返回的内容;
3.主负载均衡服务器发生故障时,备机立即充当主机角色提供请求转发服务;(暂停其keepalived服务:service keepalived stop)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: