LVS+Keepalived实现高可用负载均衡(转)

简介: LVS+Keepalived实现高可用负载均衡   一、原理         1、概要介绍         如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态,如果某台web服务器故障,Keepalived将检测到并将其从系统中剔除,当该web服务器工作正常后Keepalived自动将其加入到服务器群中,这些工作全部自动完成,而不需要人工干预,只需要人工修复故障的web服务器即可。

LVS+Keepalived实现高可用负载均衡   一、原理         1、概要介绍         如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态,如果某台web服务器故障,Keepalived将检测到并将其从系统中剔除,当该web服务器工作正常后Keepalived自动将其加入到服务器群中,这些工作全部自动完成,而不需要人工干预,只需要人工修复故障的web服务器即可。 2、工作原理         Keepalived基于VRRP协议来实现高可用解决方案,利用其避免单点故障,通常这个解决方案中,至少有2台服务器运行Keepalived,即一台为MASTER,另一台为BACKUP,但对外表现为一个虚拟IP,MASTER会发送特定消息给BACKUP,当BACKUP收不到该消息时,则认为MASTER故障了,BACKUP会接管虚拟IP,继续提供服务,从而保证了高可用性,具体如下图:    图1 Keepalived原理图         3层机理是发送ICMP数据包即PING给某台服务器,如果不痛,则认为其故障,并从服务器群中剔除。         4层机理是检测TCP端口号状态来判断某台服务器是否故障,如果故障,则从服务器群中剔除。         5层机理是根据用户的设定检查某个服务器应用程序是否正常运行,如果不正常,则从服务器群中剔除。 3、实际作用         主要用作RealServer的健康检查,以及负载均衡设备MASTER和BACKUP之间failover的实现。   二、架构         本系列文章以CentOS linux release 6.0 (Final)为例,介绍用LVS+Keepalived实现高可用负载均衡。具体业务需求是用虚拟IP转发8080、25、21端口请求到后端的真实服务器来处业务逻辑,系统拓扑如下图所示:    图2 系统拓扑图         客户端通过VIP(Virtual IP)(172.28.14.227/228/229)来访问负载均衡服务器,负载均衡服务器通过MASTER/172.28.19.92或BACKUP/172.28.19.93将请求分别转发给真实服务器(Web服务器/172.28.19.100/101/102、邮件服务器/172.28.19.103/104/105、文件服务器/172.28.19.106/107/108)。         负载均衡服务器的MASTER和BACKUP上都必须安装LVS+Keepalived,下面开始安装和配置之旅。   三、LVS安装         Master和Backup都必须安装LVS,安装ipvsadm步骤如下:         (1)依赖包安装         执行如下命令查看依赖包是否安装:                 (A)#rpm -qa|grep popt                 popt-static-1.13-7.el6.x86_64                 popt-devel-1.13-7.el6.x86_64                 popt-1.13-7.el6.x86_64                 如果没有上述包,则需要依次安装,具体如下:                 #yum install popt                 #yum install popt-devel                 #yum install popt-static                 (B)rpm -qa|grep libnl                 libnl-1.1-14.el6.x86_64                 libnl-devel-1.1-14.el6.x86_64                 如果没有上述包,则需要依次安装,具体如下:                 #yum install libnl                 #yum install libnl-devel         (2)ipvsadm安装         #wget  http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz         #tar zxvf ipvsadm-1.26.tar.gz         #ln -s /usr/src/kernels/2.6.32-71.el6.x86_64 /usr/src/linux         //注意:每个系统这个路径可能会不一样         #cd ipvsadm-1.26         #make         #make install         OK,LVS就这么安装好了。   四、Keepalived安装        Master和Backup都必须安装Keepalive,安装步骤如下:         #wget http://www.keepalived.org/software/keepalived-1.2.7.tar.gz         #tar zxvf keepalived-1.2.7.tar.gz         #cd keepalived-1.2.7          #./configure          #make          #make install         OK,Keepalived安装好了。         如果#./configure时出现下面错误:         configure: error:            !!! OpenSSL is not properly installed on your system. !!!           !!! Can not include OpenSSL headers files.            !!!          则需要安装OpenSSL相关包:         #yum install openssl         #yum install openssl-devel         然后从#./configure步骤开始执行以下后续步骤就行。   五、配置 1、服务脚本         将Keepalived做成服务启动(MASTER和BACKUP都是必须的),具体步骤如下:         (1)拷贝服务启动脚本         #cp ./keepalived/etc/init.d /etc/init.d            (2)拷贝配置文件         #mkdir /etc/keepalived         #cp ./keepalived/etc/keepalived/keepalived.conf /etc/keepalived         (3)拷贝可执行文件         #cp ./bin/keepalived /usr/bin         (4)启动/停止服务         #service keepalived start         #service keepalived stop 2、配置MASTER         备份并打开配置文件修改部分内容,尤其注意红色部分,具体如下:         #cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak         #vi /etc/keepalived/keepalived.conf         vrrp_instance VI_1 {             state MASTER            # 状态实际MASTER             interface eth0            # 监听网卡切换             virtual_router_id 51             priority 100                # 优先级(越大优先级越高)             advert_int 1             authentication {                 auth_type PASS                 auth_pass 1111             }             virtual_ipaddress {        # 虚拟IP地址列表,即VIP                 172.28.14.227                 172.28.14.228                 172.28.14.229             }         }         virtual_server 172.28.14.227 8080 {             delay_loop 6             lb_algo wlc             lb_kind DR                    # DR模式             persistence_timeout 50             protocol TCP             real_server 172.28.19.100 8080 {                 weight 1                  # 权重(权重越高处理的请求越多)                 TCP_CHECK {                     connect_timeout 3                     nb_get_retry 3                     delay_before_retry 3                     connect_port 8080                 }             }             real_server 172.28.19.101 8080 {                 weight 1                  # 权重(权重越高处理的请求越多)                 TCP_CHECK {                     connect_timeout 3                     nb_get_retry 3                     delay_before_retry 3                     connect_port 8080                 }             }             real_server 172.28.19.102 8080 {                 weight 1                  # 权重(权重越高处理的请求越多)                 TCP_CHECK {                     connect_timeout 3                     nb_get_retry 3                     delay_before_retry 3                     connect_port 8080                 }             }         }         virtual_server 172.28.14.228 25 {             delay_loop 6             lb_algo wlc             lb_kind DR                    # DR模式             persistence_timeout 50             protocol TCP             real_server 172.28.19.103 25 {                 weight 1                  # 权重(权重越高处理的请求越多)                 TCP_CHECK {                     connect_timeout 3                     nb_get_retry 3                     delay_before_retry 3                     connect_port 25                 }             }             real_server 172.28.19.104 25 {                 weight 1                  # 权重(权重越高处理的请求越多)                 TCP_CHECK {                     connect_timeout 3                     nb_get_retry 3                     delay_before_retry 3                     connect_port 25                 }             }             real_server 172.28.19.105 25 {                 weight 1                  # 权重(权重越高处理的请求越多)                 TCP_CHECK {                     connect_timeout 3                     nb_get_retry 3                     delay_before_retry 3                     connect_port 25                 }             }         }         virtual_server 172.28.14.229 21 {             delay_loop 6             lb_algo wlc             lb_kind DR                    # DR模式             persistence_timeout 50             protocol TCP             real_server 172.28.19.106 21 {                 weight 1                  # 权重(权重越高处理的请求越多)                 TCP_CHECK {                     connect_timeout 3                     nb_get_retry 3                     delay_before_retry 3                     connect_port 21                 }             }             real_server 172.28.19.107 21 {                 weight 1                  # 权重(权重越高处理的请求越多)                 TCP_CHECK {                     connect_timeout 3                     nb_get_retry 3                     delay_before_retry 3                     connect_port 21                 }             }             real_server 172.28.19.108 21 {                 weight 1                  # 权重(权重越高处理的请求越多)                 TCP_CHECK {                     connect_timeout 3                     nb_get_retry 3                     delay_before_retry 3                     connect_port 21                 }             }         } 3、配置BACKUP         BACKUP配置与MASTER基本一致,除了红色部分外,具体如下:         #cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak         #vi /etc/keepalived/keepalived.conf         vrrp_instance VI_1 {             state BACKP            # 状态实际BACKUP             ...             priority 99                # 优先级99(比MASTER优先级100低)             ...         }   4、配置Realserver         为Realserver的某块网卡创建启动脚本,脚本内容如下:         #vi realserverd         #!/bin/bash         VIP=172.28.14.227         . /etc/rc.d/init.d/functions         case "$1" in         start)             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             ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up             /sbin/route add -host $VIP dev lo:0             sysctl -p > /dev/null 2>&1             echo "realserver start OK"             ;;         stop)             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             ifconfig lo:0 down             /sbin/route del $VIP > /dev/null 2>&1             echo "realserver stoped"             ;;         *)             echo "Usage:$0 {start|stop}"             exit 1         esac         exit 0         注意脚本中红色部分,每块网卡绑定一个虚拟IP地址,如果绑定多个虚拟IP,则需要为每块网卡创建一个脚本,并且指定lo:X(比如:lo:0,lo:1等),另外,.和/etc/rc.d/funtions之间有空格。         启动keepalived服务,并执行上述脚本,然后用ip a能确认是否有VIP地址。         输入ipvsadm -Ln查看LVS工作状态。         停止MASTER的keepalived服务,BACKUP能接管VIP地址,再次启动MASTER的keepalived服务,MASTER又能再一次接管VIP地址。         如果这些你都搞定了,恭喜你,你已经拥有高可用服务了

http://www.07net01.com/linux/2016/04/1434779.html

 

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
存储 缓存 运维
解密一致性哈希算法:实现高可用和负载均衡的秘诀
解密一致性哈希算法:实现高可用和负载均衡的秘诀
134 0
|
3月前
|
Kubernetes 负载均衡 监控
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
Kubernetes高可用集群二进制部署(一)主机准备和负载均衡器安装
|
3月前
|
缓存 负载均衡 应用服务中间件
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
在本章内容中,我们将深入探讨 Tomcat 服务器的运行架构、LVS 负载均衡的运行机制以及 Cache 缓存机制,并提供相应的解决方案和指导。通过理解这些关键概念和机制,您将能够优化您的系统架构,提高性能和可扩展性。
205 4
【分布式技术专题】「分析Web服务器架构」Tomcat服务器的运行架构和LVS负载均衡的运行机制(修订版)
|
4月前
|
tengine Kubernetes Cloud Native
Tengine-Ingress 高性能高可用的云原生网关
Tengine-Ingress 高性能高可用的云原生网关
|
4月前
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
95 2
|
4月前
|
负载均衡 网络协议 Linux
小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)
小白带你学习linux的keepalived+lvs和keepalived双机热备(三十七)
75 0
|
5月前
|
负载均衡 算法 网络协议
Keepalived+LVS搭建高可用负载均衡
Keepalived+LVS搭建高可用负载均衡
180 1
|
5月前
|
负载均衡 关系型数据库 PostgreSQL
Pgpool-II实现高可用+读写分离+负载均衡(八)---- 维护工具
Pgpool提供了一些维护工具,用于日常观察Pgpool运行状态、上线、下线节点等操作。主要有:pcp_stop_pgpool,pcp_node_count,pcp_node_info,pcp_health_check_stats,pcp_proc_count,pcp_proc_info,pcp_detach_node,pcp_attach_node,pcp_recovery_node,pcp_promote_node,pcp_pool_status,pcp_watchdog_info,pcp_reload_config
182 0
|
5月前
|
负载均衡 前端开发 网络协议
Keepalived+HAProxy 搭建高可用负载均衡(二)
Keepalived+HAProxy 搭建高可用负载均衡
|
6月前
|
负载均衡 应用服务中间件 Linux
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)
企业实战(13)LVS负载均衡NAT(网络地址转换)模式实战详解(一)