LVS-DR+Keepalived主从高可用负载均衡集群

简介:

一、背景

Keepalived详细介绍请点击        

    随着你的网站业务量的增长你网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如F5又太贵,你们又是创业型互联公司如何有效节约成本,节省不必要的浪费?同时实现商业硬件一样的高性能高可用的功能?有什么好的负载均衡可伸张可扩展的方案吗?答案是肯定的!有!我们利用LVS+Keepalived基于完整开源软件的架构可以为你提供一个负载均衡及高可用的服务器。
1、LVS+Keepalived          

    LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR),十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。
2、Keepalvied
    Keepalived主要使用vrrp协议,Keepalived在这里主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。

3、VRRP

    VRRP(VirtualRouterRedundancyProtocol,虚拟路由冗余协议)是一种容错协议。通常,一个网络内的所有主机都设置一条缺省路由,这样,主机发出的目的地址不在本网段的报文将被通过缺省路由发往路由器RouterA,从而实现了主机与外部网络的通信。当路由器RouterA坏掉时,本网段内所有以RouterA为缺省路由下一跳的主机将断掉与外部的通信产生单点故障。VRRP就是为解决上述问题而提出的,它为具有多播组播或广播能力的局域网(如:以太网)设计。

    VRRP将局域网的一组路由器(包括一个Master即活动路由器和若干个 Backup即备份路由器)组织成一个虚拟路由器,称之为一个备份组。这个虚拟的路由器拥有自己的IP地址10.100.10.1(这个IP地址可以和备份组内的某个路由器的接口地址相同,相同的则称为ip拥有者),备份组内的路由器也有自己的IP地址(如Master的IP地址为 10.100.10.2,Backup的IP地址为10.100.10.3)。局域网内的主机仅仅知道这个虚拟路由器的IP地址10.100.10.1, 而并不知道具体的Master路由器的IP地址10.100.10.2以及Backup路由器的IP地址10.100.10.3.[1]它们将自己的缺省路由下一跳地址设置为该虚拟路由器的IP地址10.100.10.1.于是,网络内的主机就通过这个虚拟的路由器来与其它网络进行通信。如果备份组内的 Master路由器坏掉,Backup路由器将会通过选举策略选出一个新的Master路由器,继续向网络内的主机提供路由服务。从而实现网络内的主机不间断地与外部网络进行通信。

wKiom1UqN0-yoWpfAADrlHD2jyE275.jpg wKioL1UqOMCD_0SGAADInvEl8oE613.jpg


二、安装与配置

1、注意事项

    大家在做下面的操作之前应该已经了解了LVS-DR模型负载均衡如何搭建,这里我就不在重述,大家可以参见我的博文http://wangzan18.blog.51cto.com/8021085/1631060,上面那篇博文大家只需查看realserver的配置及启动脚本,director不需要做任何配置,只需要按照下面的要求安装keepalived即可,因为LVS的高可用是由keepalived实现的,这里我们接着上章的内容进行高可用配置。

服务器 IP VIP
LVS-MASTER 192.168.0.21 192.168.0.8
LVS-SALVE 192.168.0.22 192.168.0.8
Realserver1 192.168.0.23 192.168.0.8
Realserver2 192.168.0.24 192.168.0.8

实现集群的前提:时间同步,这里采用cron任务计划实现;

2、keepalived的安装

    没有特殊需求的可以使用yum直接安装,我也是推荐大家直接用yum安装,我这里介绍一下通过源码安装最新版本,下载相关软件包,主备节点都要下载;

1
2
3
4
5
6
7
wget http: //www .keepalived.org /software/keepalived-1 .2.16. tar .gz
tar  xf keepalived-1.2.16. tar .gz 
cd  keepalived-1.2.16
. /configure  --prefix= /usr/local/keepalived  --sysconfdir= /etc
make
make  install
ln  -s  /usr/local/keepalived/sbin/keepalived  /usr/sbin/

3、在master上配置keepalived.conf

# cat /etc/keepalived/keepalived.conf     配置文件中,可分为三个部分:

1
2
3
4
global_defs             #全局配置部分
vrrp_instance VI_1      #vrrp实例,用来定义虚拟路由组
virtual_server 
192.168.200.100 443     #虚拟服务部分,用来定义LVS相关配置的
1
vim  /etc/keepalived/keepalived .conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
! Configuration File  for  keepalived
global_defs {
      notification_email {          
      root@localhost            #通知收件人邮箱
    }
    notification_email_from keepalived@localhost
    smtp_server 172.0.0.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL       
}  
vrrp_script chk_schedown {                        #定义该vrrp脚本,来实现手动转移IP地址,待会演示效果  
     script  "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0" #如果有这个文件,则返回1,否则返回0  
     interval 2 
     weight -2                #优先级减2  
}   
vrrp_instance VI_1 {
     state MASTER               #在备份服务器上面改为BACKUP
     interface eth0             #定义配置在哪个端口上 
     virtual_router_id 51       #虚拟路由组ID号
     priority 100               #优先级,备份服务上将100改为99
     advert_int 1               #每隔1秒进行通告
     authentication {           #实现认证
         auth_type PASS         #采用字符认证
         auth_pass 1111         #认证密钥
     }
     virtual_ipaddress {
         192.168.0.8            #如果有多个VIP,继续换行填写
         
     }
     track_script {             #健康检查脚本
     chk_schedown
     }
}
virtual_server 192.168.0.8 80 {
     delay_loop 6               #设置健康检查的时间间隔
     lb_algo rr                 #设置负载调度算法
     lb_kind DR                 #LVS-DR模型
#   persistence_timeout 50    #会话保持时间
     protocol TCP
 
     real_server 192.168.0.23 80 {
         weight 1
         HTTP_GET {
             url {
               path /
               status_code 200
             }
             }
             connect_timeout 3         #表示无响应超时时间
             nb_get_retry 3            #表示重试次数
             delay_before_retry 1      #表示重试间隔
         }
 
     real_server 192.168.0.24 80 {
         weight 1
         HTTP_GET {
             url {
               path /
               status_code 200
             }
             }
             connect_timeout 3     
             nb_get_retry 3  
             delay_before_retry 1
         }
     }

按照提示把BACKUP的keepalived配置好,重启keepalived即可。

1
2
service keepalived start
tail  -f  /var/log/messages       // 查看启动的日志

wKioL1UqNS-Cal-8ABIrd1oR8aE413.jpg

# PS:这里说的LVS.并不是用ipvsadm软件配置.而是直接用keepalived的virtual_server配置项控制的.
# 安装ipvsadm只是可以看到负载状况.其实只需要keepalived也可以实现负载均衡集群.

wKiom1UqM_WDBiBYAAEg5LXt6as526.jpg至此LVS的HA集群搭建完毕。






     本文转自 wzlinux 51CTO博客,原文链接:http://blog.51cto.com/wzlinux/1631519,如需转载请自行联系原作者



相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
8月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
338 11
|
11月前
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
1524 6
LVS,软负载均衡
|
存储 负载均衡 NoSQL
搭建高可用及负载均衡的Redis
通过本文介绍的高可用及负载均衡Redis架构,可以有效提升Redis服务的可靠性和性能。主从复制、哨兵模式、Redis集群以及负载均衡技术的结合,使得Redis系统在应对高并发和数据一致性方面表现出色。这些配置和技术不仅适用于小型应用,也能够支持大规模企业级应用的需求。希望本文能够为您的Redis部署提供实用指导和参考。
843 9
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
1768 4
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
275 5
|
8月前
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
259 21
|
缓存 负载均衡 算法
解读 Nginx:构建高效反向代理和负载均衡的秘密
解读 Nginx:构建高效反向代理和负载均衡的秘密
311 2
|
负载均衡 前端开发 应用服务中间件
负载均衡指南:Nginx与HAProxy的配置与优化
负载均衡指南:Nginx与HAProxy的配置与优化
766 3
|
负载均衡 算法 应用服务中间件
nginx自定义负载均衡及根据cpu运行自定义负载均衡
nginx自定义负载均衡及根据cpu运行自定义负载均衡
392 1
|
运维 负载均衡 算法
SLB与NGINX的异同是什么
SLB与NGINX的异同是什么
1954 2

相关实验场景

更多