LVS+Keepalived实现高可用负载均衡(转)
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地址。 如果这些你都搞定了,恭喜你,你已经拥有高可用服务了关键词:web服务器 解决方案 应用程序 release 工作原理
http://www.07net01.com/linux/2016/04/1434779.html
LVS+Keepalived实现高可用负载均衡(转)的更多相关文章
- 【架构师之路】 LVS+Keepalived实现高可用负载均衡
一.原理 1.概要介绍 如果将TCP/IP划分为5层,则Keepalived就是一个类似于3~5层交换机制的软件,具有3~5层交换功能,其主要作用是检测web服务器的状态, ...
- LVS+Keepalived 实现高可用负载均衡集群
LVS+Keepalived 实现高可用负载均衡集群 随着网站业务量的增长,网站的服务器压力越来越大?需要负载均衡方案!商业的硬件如 F5 ,Array又太贵,你们又是创业型互联公司如何有效 ...
- LVS+Keepalived 实现高可用负载均衡
前言 在业务量达到一定量的时候,往往单机的服务是会出现瓶颈的.此时最常见的方式就是通过负载均衡来进行横向扩展.其中我们最常用的软件就是 Nginx.通过其反向代理的能力能够轻松实现负载均衡,当有服务出 ...
- LVS+Keepalived搭建高可用负载均衡
应用环境: LVS负责多台WEB端的负载均衡(LB):Keepalived负责LVS的高可用(HA),这里介绍主备模型. 测试环境: 配置步骤: 1. 安装软件 在LVS-1和LVS-2两台主机上安装 ...
- haproxy+keepalived实现高可用负载均衡
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. HA ...
- haproxy+keepalived实现高可用负载均衡(转)
软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载. ...
- HAProxy & Keepalived L4-L7 高可用负载均衡解决方案
目录 文章目录 目录 HAProxy 负载均衡器 应用特性 性能优势 会话保持 健康检查 配置文件 负载均衡策略 ACL 规则 Web 监控平台 Keepalived 虚拟路由器 核心组件 VRRP ...
- Nginx keepalived实现高可用负载均衡详细配置步骤
Keepalived是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层.第4层和第7层交换机的功能.主要提供loadbalancing(负载均衡) ...
- Centos7.2下基于Nginx+Keepalived搭建高可用负载均衡(一.基于Keepalived搭建HA体系)
说明 本文只为方便日后查阅,不对一些概念再做赘述,网上都有很多明确的解释,也请大家先了解相关概念. 两台搭建HA的服务器是华为云上的ECS(不要忘记开通VPC,保证我们的服务器都处在一个内网环境),由 ...
随机推荐
- 改变Emacs下的注释代码方式以支持当前行(未选中情况下)的注释/反注释
Emacs下支持多行代码的注释/反注释,命令是comment-or-uncomment-region. 我喜欢把它绑定在快捷键C-c C-/上,如下: (global-set-key [?\C-c ? ...
- Storm流计算从入门到精通之技术篇(高并发策略、批处理事务、Trident精解、运维监控、企业场景)
1.Storm全面.系统.深入讲解,采用最新的稳定版本Storm 0.9.0.1 : 2.注重实践,对较抽象难懂的技术点如Grouping策略.并发度及线程安全.批处理事务.DRPC.Storm ...
- 基于visual Studio2013解决C语言竞赛题之1066进制转化
题目 解决代码及点评 /************************************************************************/ /* ...
- Android中吐司当前电池电量
/** * * @author chrp * *土司当当电池电量 */ public class MainActivity extends Activity { class BtteryReceive ...
- 如果一个Object对象可能是集合或者数组那么如何对其进行迭代
需求:一个方法传入的参数是Object类型(假设对象为“items”,使用Object类型也是为了使用多态而增加方法复用性),但已知这个Object对象可能是集合,包括Collection和Map,也 ...
- delphi删除只读文件
只读文件就是不能删除的文件,用DeleteFile函数对它来说是毫无意义的,要删除只读文件,只有先改变它的属性.如果你要删除一个文件,最好先作两个方面的考虑: (1)判断该文件的属性.可以用上面提到的 ...
- CentOS6.4 安装Mysql
虽说,新版的数据包可能会带上一些新特性,但是数据库对我而言,还是稳定版优先.因为新特性不一定我会用到.. 下载安装: yum list | grep mysql 因为是准备搞开发用的,所以只要安装my ...
- uva 699
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #i ...
- C++ 虚函数表解析(比较清楚,还可打印虚函数地址)
C++ 虚函数表解析 陈皓 http://blog.csdn.net/haoel 前言 C++中的虚函数的作用主要是实现了多态的机制.关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父 ...
- Photon的使用
这几个月给公司一个正在做的半吊子游戏加pvp功能,一个人居然要2个多月弄个 PVP 类似 Dota 对战的游戏.我手里有套现成搭建服务端架构都没敢用起来,这服务器还是太初步了,只是验证了 Boost ...