were 发表于 2015-1-22 08:55:13

搭建LVS+Keepalived高可用负载均衡集群

最近,本屌接到公司的任务,公司新上20台服务器,需要搭建一整套架构来运行公司的业务,其中有应用服务器,认证服务器,数据库服务器等。服务器基础架构中的应用服务器集群要有高可用性,且需要负载均衡。当我接到这个任务的时候,脑子里第一个想法就是LVS+Keepalived。    由于公司资金有限,直接上硬件的负载均衡设备是不可能的了,所以只好使用软件来实现,LVS在负载均衡集群中无疑是一种很好的方案,使用LVS可以同时分发10台以下的设备,用在我们这个项目中是再合适不过的,而为了干掉LVS负载均衡集群中分发服务器这个单点故障,我又引入了Keepalived高可用技术。    LVS(Linux Virtual Server,Linux虚拟服务器)技术,由现任职淘宝的章文嵩博士创始,是一套开源的负载均衡软件,是中国国内最早出现的自由软件项目之一。    LVS架构由前端分发服务器,中间应用服务器,后端共享存储共同组成,分发服务器根绝其分发策略将用户请求分发到中间的应用服务器上,应用服务器根据LVS的模式来响应用户请求。LVS相关术语如下:    1、Director Server:调度服务器,将负载分发到Real Server的服务器    2、Real Server:真实服务器,真正提供应用服务的服务器    3、VIP:虚拟IP地址,公布给用户访问的IP地址    4、RIP:真实IP地址,集群节点上使用的IP地址    5、DIP:Director连到Real Server的IP地址    LVS负载均衡方式:    NAT:通过网络地址转换实现的虚拟服务器,Director server将用户请求报文的目的地址改成选定的Real Server地址后,转发给Real Server。    NAT模式下,所有请求全部要经过Director server的处理,所以,在并发量较大的时候,Director server就会成为系统的瓶颈。DR:直接使用路由技术实现虚拟服务器,通过改写请求报文的MAC地址,将请求发至Real Server,Real Server直接响应客户端。TUN:通过隧道方式实现虚拟服务器,Director采用隧道技术将请求发至Real Server后,Real Server直接响应客户端。为了避免系统瓶颈,所以采用DR方式来实现请求转发。LVS提供了10种调度算法,这些算法决定了以什么方式来转发请求,常用的调度算法有4种:轮询(Round Robin):将客户端请求平均分发到Real Server。加权轮询(Weighted Round Robin):根据Real Server的性能设置权重,再进行轮询调度。最少连接(Least Connections):根据Real Server的性能设置权重,再进行轮询调度。加权最少连接( Weighted Least Connections ):根据Real Server的性能设置权重,再将网络请求调度到已建立的连接数最少的服务器上。由于公司采购的服务器的配置完全相同,性能没有什么差异,所以在调度算法上采用RR轮询的方式。为了避免负载均衡分发器单点故障,所以再多加一台备用分发器,一旦当前的分发服务器发生故障,则启用备用服务器,保证业务不中断。使用keepalived技术,实现对分发器以及应用服务器的高可用,自动剔除故障服务器,自动转移lvs负载均衡分发服务器。当故障服务器回复后,keepalived服务会自动将恢复的服务器重新加入集群继续提供服务。以下为服务器配置过程:一、IP地址划分LVS-Master:10.60.77.150LVS-Backup:10.60.77.151VIP:10.60.77.152(此为对外提供服务的地址,本文中以私有IP代替)web1:10.60.77.153web2:10.60.77.154(web服务器即为应用服务器,本文以两台为例)二、在LVS分发服务器上安装软件(两台服务器上都要安装)# yum -y install epel-release# yum -y install ipvsadm keepalived三、配置LVS-Master服务器修改keepalived配置文件# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {   notification_email {   //设置报警邮件   zhanghy@zhy.com   }   notification_email_fromAlexandre.Cassen@firewall.loc   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id LVS1    //设置router_id,此值在该网络中需要具有唯一性}vrrp_instance VI_1 {    state MASTER   //当前服务器设置为主服务器    interface eth0    virtual_router_id 51    priority 100   //优先级,主服务器应该在网络中最高    advert_int 1    authentication {      auth_type PASS//设置认证方式      auth_pass password//设置认证密码    }    virtual_ipaddress {   //设置VIP,掩码需要我们自己设置   10.60.77.152/24    }}virtual_server 10.60.77.152 80 {   //VIP监听的端口    delay_loop 6    lb_algo rr   //调度算法,此处为轮询方式    lb_kind DR   //LVS负载均衡方式,此处为DR模式    persistence_timeout 50    protocol TCP    real_server 10.60.77.15380 {   //指定real-server      weight 1   //指定该服务器的权重      TCP_CHECK {            connect_timeout3            nb_get_retry 3         delay_before_retry 3      }    }    real_server 10.60.77.15480 {      weight 1      TCP_CHECK {             connect_timeout3            nb_get_retry 3         delay_before_retry 3      }    }}准备虚拟网卡配置文件# cd /etc/sysconfig/network-scripts/# cp ifcfg-eth0 ifcfg-eth0:0# vim ifcfg-eth0:0DEVICE=eth0:0TYPE=EthernetONBOOT=yesBOOTPROTO=noneIPADDR=10.60.77.152PREFIX=24四、配置LVS-Backup服务器修改keepalived配置文件,只需修改以下几条即可:# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {   notification_email {   zhanghy@zhy.com   }   notification_email_fromAlexandre.Cassen@firewall.loc   smtp_server 127.0.0.1   smtp_connect_timeout 30   router_id LVS2    //修改router_id}vrrp_instance VI_1 {    state BACKUP   //修改状态为BACKUP,该项配置必须为大写    interface eth0    virtual_router_id 51    priority 90      //修改优先级低于LVS-Master服务器    advert_int 1    authentication {      auth_type PASS      //此处配置必须与LVS-Master完全相同      auth_pass password    }其余配置与LVS-Master完全相同分别启动LVS-master和LVS-backup的keepalived服务# service keepalived start# chkconfig keepalived on# service keepalived start# chkconfig keepalived on五、配置realserver(所有web服务器配置全部相同)1、拒绝ARP响应# vim /etc/sysctl.conf在该文件末尾添加如下四行配置:net.ipv4.conf.all.arp_announce = 2net.ipv4.conf.lo.arp_announce = 2net.ipv4.conf.all.arp_ignore = 1net.ipv4.conf.lo.arp_ignore = 1# sysctl -p2、准备虚拟回环接口配置文件# cd /etc/sysconfig/network-scripts/# cp ifcfg-lo ifcfg-lo:0# vim ifcfg-lo:0DEVICE=lo:0IPADDR=10.60.77.152NETMASK=255.255.255.255BROADCAST=10.60.77.152ONBOOT=yes# service network restart六、测试
页: [1]
查看完整版本: 搭建LVS+Keepalived高可用负载均衡集群