Keepalived + LVS 实现负载均衡

一、Keepalived 与 LVS 简单工作原理了解

1、Keepalived 管理LVS负载均衡软件,Keepalived 可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动、停止等功能,这使用LVS的应用更加简单方便了。

2、Keepalived 实现对LVS集群节点健康检查功能,当LVS集群中的某一个甚至是几个节点服务器同时发生故障无法提供服务时,Keepalived 服务会自动将失效的节点服务器从LVS 的正常转发队列中清除出去,并将请求调度到别的正常节点服务器上,从而保证最终用户的访问不受影响,并且故障恢复时,又可以加到正常转发队列中。

3、Keepalived 作为系统网络服务的高可用功能,可以实现任意两台主机之间的故障转移和自动切换。

4、LVS 负责数据转发,基于第层网络传输层,使用ARP协议,修改目的地MAC地址,实现数据的高速转发,相对于NGINX的第七层转发,有一定的优势。

二、实现拓扑图

三、实验步骤

1、分别设置好各台主机的IP地址,如:

主机-负载均衡:10.3.150.196
备机-负载均衡:10.3.150.197
web01:10.3.150.198
web02:10.3.150.199

2、在两台web主机里,分别设置绑定 Local Loopback IP地址(VIP:10.3.150.200)

[[email protected] ~]# vi /etc/init.d/realserver
#!/bin/bash
#
# realserver
#
# chkconfig: 2345 24 76
# description: realserver ip

SNS_VIP=10.3.150.200
/etc/rc.d/init.d/functions
case "$1" in
start)
       ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
       /sbin/route add -host $SNS_VIP dev lo:0
       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
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"
       ;;
stop)
       ifconfig lo:0 down
       route del $SNS_VIP >/dev/null 2>&1
       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
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac
exit 0
[[email protected] ~]# chmod +x /etc/init.d/realserver
[[email protected] ~]# chkconfig --add /etc/init.d/realserver
[[email protected] ~]# chkconfig realserver on
[[email protected] ~]# /etc/init.d/realserver start

3、检查web服务器绑定local loopback ip 是否正常。

[[email protected] ~]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:50:56:AA:51:29
                    inet addr:10.3.150.198  Bcast:10.3.150.255  Mask:255.255.255.0
                    inet6 addr: fe80::250:56ff:feaa:5129/64 Scope:Link
                    UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                    RX packets:52847 errors:0 dropped:0 overruns:0 frame:0
                    TX packets:3322 errors:0 dropped:0 overruns:0 carrier:0
                    collisions:0 txqueuelen:1000
                    RX bytes:4160205 (3.9 MiB)  TX bytes:272504 (266.1 KiB)

lo        Link encap:Local Loopback
                    inet addr:127.0.0.1  Mask:255.0.0.0
                    inet6 addr: ::1/128 Scope:Host
                    UP LOOPBACK RUNNING  MTU:65536  Metric:1
                    RX packets:80 errors:0 dropped:0 overruns:0 frame:0
                    TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
                    collisions:0 txqueuelen:0
                    RX bytes:5200 (5.0 KiB)  TX bytes:5200 (5.0 KiB)

lo:0      Link encap:Local Loopback
                    inet addr:10.3.150.200  Mask:255.255.255.255
                    UP LOOPBACK RUNNING  MTU:65536  Metric:1

4、配置主机-负载均衡的keepalived.conf配置文件

! Configuration File for keepalived

global_defs {
   notification_email {
   [email protected]
}
   notification_email_from [email protected]
   smtp_server 192.168.200.1
   smtp_connect_timeout 30
   router_id lb01
}

vrrp_instance VI_1 {
    state MASTER       #指定Keepalived角色,MASTER为主
    interface eth1         #Keepalived 绑定的网络
    virtual_router_id 53    #虚拟路由编号,主备必须要一致
    priority 150      #定义优先级,数字越大,优先级越高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 3333
    }
    virtual_ipaddress {
        10.3.150.200/24 dev eth1 label eth1:1     #定义虚拟IP(VIP)为10.3.150.200
    }
}
# 定义对外提供服务的LVS的VIP以及port
virtual_server 10.3.150.200 80 {
    delay_loop 6 # 设置健康检查时间,单位是秒
    lb_algo wrr # 设置负载调度的算法为wlc
    lb_kind DR # 设置LVS实现负载的机制,有NAT、TUN、DR三个模式
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP
    real_server 10.3.150.198 80 {  # 指定real server1的IP地址
        weight 3   # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 10.3.150.199 80 {  # 指定real server2的IP地址
        weight 3  # 配置节点权值,数字越大权重越高
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }
} 

5、配置备机-负载均衡的keepalived.conf配置文件

与主机-负载均衡一致,只需修改以下两处:
1、state MASTER   改为 state BACKUP
2、priority 150    改为  priority 100

6、启动两台负载均衡的keepalived服务

[[email protected] keepalived]# service keepalived start

在主机-负载均衡器上,查看是否获取了VIP(10.3.150.200)
[[email protected] keepalived]# ifconfig
eth1      Link encap:Ethernet  HWaddr 00:50:56:AA:B1:25
                    inet addr:10.3.150.196  Bcast:10.3.150.255  Mask:255.255.255.0
                    inet6 addr: fe80::250:56ff:feaa:b125/64 Scope:Link
                    UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
                    RX packets:89077 errors:0 dropped:0 overruns:0 frame:0
                    TX packets:14028 errors:0 dropped:0 overruns:0 carrier:0
                    collisions:0 txqueuelen:1000
                    RX bytes:7242746 (6.9 MiB)  TX bytes:982746 (959.7 KiB)

eth1:1    Link encap:Ethernet  HWaddr 00:50:56:AA:B1:25
                    inet addr:10.3.150.200  Bcast:0.0.0.0  Mask:255.255.255.0
                    UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

lo        Link encap:Local Loopback
                    inet addr:127.0.0.1  Mask:255.0.0.0
                    inet6 addr: ::1/128 Scope:Host
                    UP LOOPBACK RUNNING  MTU:65536  Metric:1
                    RX packets:80 errors:0 dropped:0 overruns:0 frame:0
                    TX packets:80 errors:0 dropped:0 overruns:0 carrier:0
                    collisions:0 txqueuelen:0
                    RX bytes:5120 (5.0 KiB)  TX bytes:5120 (5.0 KiB)

四、验证故障切换是否成功

1、访问VIP,是否能正常访问得到web01和web02的内容(web01和web02为不一致的静态文件内容,以方便区别,检查是否生效)。

2、停止web01服务,访问VIP,看是否还能正常访问web02的内容,同时又不会提示web01无法访问的错误信息,因LVS能做端口健康检查。

3、启动web01,访问VIP,是否可以同时访问web01和web02的内容。

4、停止lb01主机-负载均衡的keepalived服务,检查VIP是否漂移到备机-负载负载器的主机上,同时访问VIP,是否正常访问web01与web02的内容。

5、启动lb01主机-负载均衡的keepalived服务,检查VIP是否漂移到主机-负载均衡器,同时访问VIP,是否能正常访问web01与web02的内容。

原文地址:http://blog.51cto.com/12965094/2157891

时间: 2024-11-11 15:56:39

Keepalived + LVS 实现负载均衡的相关文章

Keepalived+LVS+Nginx负载均衡之高可用

Keepalived+LVS+Nginx负载均衡之高可用 上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx负载均衡出现单机故障时,系统正常运行的需求.所以系统架构引入Keepalived组件,实现系统高可用. 一.Keepalived介绍 Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Serve

keepalived+LVS实现负载均衡集群

keepalived keepalived基于vrrp(虚拟路由冗余)协议,是vrrp协议在linux主机上的实现,早先是设计出来和LVS协同工作的,在配置文件中可以直接支持生成ipvs规则 vrrp协议: vrrp协议将route_id相同的主机或路由绑定在一起组成一个虚拟路由组,一个组内有一个master和多个backup,master每隔一段时间通过组播的方式向整个虚拟路由组发送一个数据包告诉所有backup在线信息. 当多个路由器组成了一个虚拟组,vrrp或给这个虚拟主生成一个虚拟ip和

Net分布式系统之三:Keepalived+LVS+Nginx负载均衡之高可用

上一篇写了nginx负载均衡,此篇实现高可用(HA).系统整体设计是采用Nginx做负载均衡,若出现Nginx单机故障,则导致整个系统无法正常运行.针对系统架构设计的高可用要求,我们需要解决Nginx负载均衡出现单机故障时,系统正常运行的需求.所以系统架构引入Keepalived组件,实现系统高可用. 一.Keepalived介绍 Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Server)使用,其功能类似于heartbeat,解决单机宕机的问

keepalived+lvs实现负责均衡群集

一,实验架构 本实验主要研究如何使用keepalived+lvs实现负载均衡群集,环境由一台keepalived和两台web服务器组成,keepalived的高可用群集不会在此实验中出现. keepalive 172.24.3.10 web1 172.24.3.11 web2 172.24.3.12 vip 172.24.3.20 二,实验过程 keepalived服务器 1,安装支持软件 kernel-devel, openssl-devel, popt-devel, ipvsadm 2,编译

虚拟机 搭建LVS + DR + keepalived 高可用负载均衡

一:环境说明:   LVS-DR-Master:    10.3.0.82   LVS-DR-Backup:    10.3.0.70   VIP:                10.3.0.60   RealServer1:    10.3.0.69   RealServer1:    10.3.0.83   Centos:5.7    二:安装LVS和Keepalvied软件包   1. 下载相关软件包    mkdir /usr/local/src/lvs    cd /usr/loca

Ubuntu构建LVS+Keepalived高可用负载均衡集群【生产环境】

1.环境说明: 系统版本:Ubuntu 14.04 LVS1物理IP:14.17.64.2   初始接管VIP:14.17.64.13 LVS2物理IP:14.17.64.3   初始接管VIP:14.17.64.14 真实web服务器IP:14.17.64.4-12 实现效果:去往14.17.64.13或14的报文,转发给14.17.64.4-12中的一台服务器处理,实现负载均衡. 要求1:当一台真实web服务器故障后,自动把该IP从负载均衡中踢除,恢复后自动加入集群. 要求2:当一台LVS服

LVS+Keepalived高可用负载均衡集群架构

实验环境: LVS和keepalived介绍: 1.keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用来做双机热备. 使用keepalived构建LVS群集更加简便易用,主要优势体现在: 对LVS负载调度器实现热备切换,提高可用性: 对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入. 2.在基于LVS+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,

(2)LVS+Keepalived高可用负载均衡架构原理及配置

1.keepalived 介绍2.keepalived 优缺点3.keepalived 应用场景4.keepalived 安装配置5.keepalived+lvs 高可用6.keepalived+nginx 高可用7.keepalived 切换原理8.性能优化9.常见故障 一.keepalived 介绍 1.keepalived 定义keepalived是一个基于VRRP(virtual route redundent protocol)协议来实现的LVS服务高可用方案,可以利用其来避免单点故障

lvs+keepalived+bind实现负载均衡高可用智能dns【转】

转:https://www.cnblogs.com/mikeluwen/p/7068356.html 整体架构: 1.IP地址规划: Dns1:172.28.0.54 Dns2:172.28.0.55 Dr服务器主:172.28.0.57 Dr服务器从:172.28.0.67 Vip:172.28.0.99 原理过程: Lvs+keepalived实现高性能高可靠性负载均衡,这里使用dr模式,客户机访问负载均衡服务器,会调度到后面的真实服务器上,真实服务器直接将结果返回,如果主调度服务器除了问题