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

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

2015-01-21 19:01 716 查看
搭建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分发服务器上安装软件(两台服务器上都要安装)[root@10-60-77-150-LVS1~]# yum -y install epel-release[root@10-60-77-150-LVS1~]# yum -y install ipvsadm keepalived三、配置LVS-Master服务器修改keepalived配置文件[root@10-60-77-150-LVS1 ~]# 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 } }}准备虚拟网卡配置文件[root@10-60-77-150-LVS1 ~]# cd /etc/sysconfig/network-scripts/[root@10-60-77-150-LVS1 ~]# cp ifcfg-eth0 ifcfg-eth0:0[root@10-60-77-150-LVS1 ~]# vim ifcfg-eth0:0DEVICE=eth0:0TYPE=EthernetONBOOT=yesBOOTPROTO=noneIPADDR=10.60.77.152PREFIX=24四、配置LVS-Backup服务器修改keepalived配置文件,只需修改以下几条即可:[root@10-60-77-151-LVS2 ~]# 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服务[root@10-60-77-150-LVS1 ~]# service keepalived start[root@10-60-77-150-LVS1 ~]# chkconfig keepalived on[root@10-60-77-151-LVS2 ~]# service keepalived start[root@10-60-77-151-LVS2 ~]# chkconfig keepalived on五、配置realserver(所有web服务器配置全部相同)1、拒绝ARP响应[root@10-60-77-153-web1 ~]# 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[root@10-60-77-153-web1 ~]# sysctl -p2、准备虚拟回环接口配置文件[root@10-60-77-153-web1 ~]# cd /etc/sysconfig/network-scripts/[root@10-60-77-153-web1 network-scripts]# cp ifcfg-lo ifcfg-lo:0[root@10-60-77-153-web1 network-scripts]# vim ifcfg-lo:0DEVICE=lo:0IPADDR=10.60.77.152NETMASK=255.255.255.255BROADCAST=10.60.77.152ONBOOT=yes[root@10-60-77-153-web1 network-scripts]# service network restart六、测试
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息