热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Keepalived+LVS实现负载均衡

一、Keepalived与LVS简单工作原理了解1、Keepalived管理LVS负载均衡软件,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)

[root@web01 ~]# 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
[root@web01 ~]# chmod +x /etc/init.d/realserver
[root@web01 ~]# chkconfig --add /etc/init.d/realserver
[root@web01 ~]# chkconfig realserver on
[root@web01 ~]# /etc/init.d/realserver start

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

[root@web01 ~]# 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 {
   345619885@qq.com
}
   notification_email_from Alexandre.Cassen@firewall.loc
   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服务

[root@lb01 keepalived]# service keepalived start

在主机-负载均衡器上,查看是否获取了VIP(10.3.150.200)
[root@lb01 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的内容。

Keepalived + LVS 实现负载均衡


推荐阅读
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 在project.properties添加#Projecttarget.targetandroid-19android.library.reference.1..Sliding ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
author-avatar
syingjin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有