lvs+keepAlived 高效率负载均衡

2024-04-23 03:18

本文主要是介绍lvs+keepAlived 高效率负载均衡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、 简介 

1. 负载均衡的类型 

  • 负载均衡可以采用硬件设备(例如常常听见的 F5),也可以采用软件负载
  • 商用硬件负载设备成本通常较高(一台几十万甚至上百万),所以一般 情况下会采用软件负载
  • 软件负载解决的两个核心问题是:选谁、转发,其中最著名的是 lvs 

2. lvs 是什么? 

  • 英文全称是 Linux Virtual Server,即 Linux 虚拟服务器
  • 由 章 文 嵩 博 士 发 起 的 自 由 软 件 项 目 , 它 的 官 方 站 点 是 www.linuxvirtualserver.org
  • Linux2.4 内核以后,LVS 已经是 Linux 标准内核的一部分
  • 可以将请求分发给后端真实服务器处理
  • 有许多比较著名网站和组织都在使用 LVS 架设的集群系统,例如:Linux 的门户网站(www.linux.com)、向 RealPlayer 提供音频视频服务而闻 名的 Real 公司(www.real.com )、全球最大的开源网站 (sourceforge.net)等
  • 提供了多种调度算法
  1. 轮询调度(Round-Robin Scheduling)
  2. 加权轮询调度(Weighted Round-Robin Scheduling)
  3. 最小连接调度(Least-Connection Scheduling)
  4. 加权最小连接调度(Weighted Least-Connection Scheduling)
  5. 基于局部性的最少链接(Locality-Based Least Connections  Scheduling)
  6. 带 复 制 的 基 于 局 部 性 最 少 链 接 ( Locality-Based Least  Connections with Replication Scheduling)
  7. 目标地址散列调度(Destination Hashing Scheduling)
  8. 源地址散列调度(Source Hashing Scheduling)
  9. 最短预期延时调度(Shortest Expected Delay Scheduling)
  10. 不 排 队 调 度 ( Never Queue Scheduling )对应: rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq
  • 有三种转发规则
  1. NAT:简单理解,就是数据进出都通过 LVS,性能不是很好。
  2. TUNL:简单理解:隧道 
  3. DR:最高效的负载均衡规则 

3. lvs 的体系结构 

  • 最前端的负载均衡层,用 Load Balancer 表示
  • 中间的服务器集群层,用 Server Array 表示
  • 最底端的数据共享存储层,用 Shared Storage 表示
  • 在用户看来,所有的内部应用都是透明的,用户只是在使用一个虚拟服 务器提供的高性能服务 

4. keepAlived 是什么? 

  • 因为所有的请求都要经过负载均衡,所以负载均衡必然是非常重要,不 能挂掉,说白了就是要 keep the lvs alived。
  • 提供的功能就是可以配置 2 台 LVS,一台主机,一台备机。并且检测任 何一个节点是否还活着。 

5. lvs 的优点? 

  • 抗负载能力强,因为 lvs 工作方式的逻辑是非常之简单,而且工作在网络 4 层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。
  • 有完整的双机热备方案,当节点出现故障时,lvs 会自动判别,所以系统整体是非常稳定的。
  • 基本上能支持所有应用,因为 lvs 工作在 4 层,所以它可以对几乎所有应用做负载均衡,包括 http、数据库、聊天室等等。 

6. lvs 负载均衡机制 

  • lvs 是四层负载均衡,也就是说建立在 OSI 模型的第四层——传输层之 上
  • 传输层上有 TCP/UDP,lvs 支持 TCP/UDP 的负载均衡
  • 因为 LVS 是四层负载均衡,因此它相对于其它高层负载均衡的解决办法, 比如 DNS 域名轮流解析、应用层负载的调度、客户端的调度等,它的效 率是非常高的
  • lvs 的转发可以通过修改 IP 地址实现(NAT 模式)
  • lvs 的转发还可以通过修改直接路由实现(DR 模式) 

7. lvs 与 nginx 对比? 

  • 负载度    lvs 优于 nginx 
  • 稳定度    lvs 优于 nginx
  • 服务器性能要求 lvs 优于 nginx
  • 网络层数的效率 lvs 优于 nginx  网络七层:应用层、会话层、表示层、传输层、网络层、链路层、 物理层
  • 功能多少   nginx 优于 lvs 

8. lvs+keepAlived 的应用场景? 

  • 大型网站负载均衡

二.lvs搭建

1.规划

2台webserver

1台主lvs

1台备lvs

2.两台webServer的配置

(1)在线安装httpd,第一台和第二台都执行

(2)设置开机自启动

(3)开启http服务器

(4)通过浏览器访问http服务器,默认端口是80

(5)创建html文件,写入内容,区分两个节点

 

(6)创建文件并写入如下内容

#!/bin/bash  
#description : start realserver  
SNS_VIP=192.168.20.50 #定义了一个VIP变量,必须跟真是服务在一个网段
/etc/rc.d/init.d/functions  
case "$1" in  
start)  
echo " start LVS of REALServer"  
/sbin/ifconfig lo:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up  #增加一个本地路由 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  
;;  
stop)  
/sbin/ifconfig lo:0 down  
echo "close LVS Directorserver"  
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 "Usage: $0 {start|stop}"  
exit 1  
esac

(7)给脚本赋权限

(8)启动脚本

(9)用ifconfig查看效果

(10)第二台http也同样做上面步骤,增加路由,SNS_VIP要跟第一台一样

 

(11)查看系统内核版本,2.4以后就有lvs,不用安装

(12)lvs的机器安装keepalived,做心跳检查用的

(13)查看配置文件安装位置

(14)创建并覆盖上面的配置文件

(15)编辑刚创建的文件,加入以下内容

global_defs {                       
#   notification_email {             
#   }
#   smtp_connect_timeout 30router_id LVS_DEVEL             
}
vrrp_instance VI_1 {            state MASTER     #配置LVS是主机的状态        interface eno16777736     #配置LVS机器对外开放的IP       virtual_router_id 51        priority 100                  advert_int 1           authentication {        auth_type PASSauth_pass 1111}virtual_ipaddress {         192.168.20.50    #LVS的对内IP}
}
virtual_server 192.168.20.50 80 {delay_loop 6           lb_algo wrr            lb_kind DR         #使用LVSDR模式                 nat_mask 255.255.255.0   persistence_timeout 0    protocol TCP                          real_server 192.168.20.233 80 {    #真实服务的IP weight 1        #配置加权轮询的权重             TCP_CHECK {                     connect_timeout 10   nb_get_retry 3delay_before_retry 3connect_port 80}}real_server 192.168.20.203 80 {weight 2TCP_CHECK {connect_timeout 10nb_get_retry 3delay_before_retry 3connect_port 80}}
}

(16)开启LVS机器的keepalived

3.LVS测试

(1)转发,访问虚拟IP,真是服务器提供服务,为了解决浏览器缓存看不到效果的问题,访问的URL后加 a=Math.random() 随机数

(2)故障移除,停其中一个服务,认为down掉了

 

(3)故障恢复自动添加

4.LVS备机搭建

(1)步骤同主机搭建,一直到配置文件,如下

global_defs {                       

#   notification_email {             

#   }

#   smtp_connect_timeout 30

        router_id LVS_DEVEL             

}

vrrp_instance VI_1 {            

        state BACKUP     #配置LVS是主机的状态        

        interface eno16777736     #配置LVS机器对外开放的IP       

        virtual_router_id 51        

        priority 100                  

        advert_int 1           

        authentication {        

                auth_type PASS

                auth_pass 1111

        }

        virtual_ipaddress {         

                192.168.20.50    #LVS的对内IP

        }

}

virtual_server 192.168.20.50 80 {

        delay_loop 6           

        lb_algo wrr            

        lb_kind DR         #使用LVSDR模式                 

        nat_mask 255.255.255.0   

        persistence_timeout 0    

        protocol TCP                          

        real_server 192.168.20.233 80 {    #真实服务的IP

                weight 1        #配置加权轮询的权重             

                TCP_CHECK {                     

                        connect_timeout 10   

                        nb_get_retry 3

                        delay_before_retry 3

                        connect_port 80

                }

        }

        real_server 192.168.20.203 80 {

                weight 2

                TCP_CHECK {

                        connect_timeout 10

                        nb_get_retry 3

                        delay_before_retry 3

                        connect_port 80

                }

        }

}

5.LVS主备测试

(1)主LVS模拟挂掉

(2)测试后,证明主备自动切换,LVS高可用

(3)主LVS启动,自动上位

这篇关于lvs+keepAlived 高效率负载均衡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/927638

相关文章

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww

【微服务】Ribbon(负载均衡,服务调用)+ OpenFeign(服务发现,远程调用)【详解】

文章目录 1.Ribbon(负载均衡,服务调用)1.1问题引出1.2 Ribbon负载均衡1.3 RestTemplate整合Ribbon1.4 指定Ribbon负载均衡策略1.4.1 配置文件1.4.2 配置类1.4.3 定义Ribbon客户端配置1.4.4 自定义负载均衡策略 2.OpenFeign面向接口的服务调用(服务发现,远程调用)2.1 OpenFeign的使用2.1 .1创建

LVS学习入门

1.LVS DR模式负载均衡配置详解(配置篇一) http://www.07net01.com/storage_networking/LVS_DRmoshifuzaijunhengpeizhixiangjie_peizhipianyi__56840_1358680093.html 2.LVS负载均衡DR模式部署 http://www.cnblogs.com/xdpxyxy/

MySQL数据库负载均衡

数据库负载均衡是通过将数据库请求分散到多个数据库服务器上,以提高数据库的处理能力和可用性。在高并发的场景下,使用数据库负载均衡器可以有效避免单点故障,提高系统的整体性能和可靠性。 数据库负载均衡器 数据库负载均衡器可以是硬件设备或软件解决方案。在MySQL环境中,一些流行的数据库负载均衡器包括: MySQL Proxy:MySQL Proxy是一个简单的中间件,用于监控、分析或增强对MySQ

828华为云征文|基于华为云Flexus X实例搭建Nginx集群负载均衡

目录 前言 一、Flexus云服务器X介绍 1.1 Flexus云服务器X实例简介 1.2 Flexus X实例购买 1.3 登录服务器 三、Springboot集群服务 3.1 部署9901节点服务 3.2 部署9902节点服务 四、Nginx负载均衡配置 五、集群负载调用测试 5.1 负载调用9901端口 5.2 负载调用9901端口 总结 前言 华为云Flexus X实例凭借其

# 高可用的并发解决方案nginx+keepalived(一)

高可用的并发解决方案nginx+keepalived(一) 段子手 一、课程计划介绍 1、课程标题 为并发量高的优质网站量身定制高可用的并发解决方案 nginx+keepalived。 2、引导语 在这个互联网飞速发展的时代,人们已经离不开网络,其中网购最为常见。在家网购,上班路上网购,吃饭也购物,下班还网购,2017年双十一天猫支付峰值达到了25.6万笔/秒。热点网站中频繁出现的大量

CUDA:用并行计算的方法对图像进行直方图均衡处理

(一)目的 将所学算法运用于图像处理中。 (二)内容 用并行计算的方法对图像进行直方图均衡处理。 要求: 利用直方图均衡算法处理lena_salt图像 版本1:CPU实现 版本2:GPU实现  实验步骤一 软件设计分析: 数据类型: 根据实验要求,本实验的数据类型为一个256*256*8的整型矩阵,其中元素的值为256*256个0-255的灰度值。 存储方式: 图像在内存中

图像处理:基于直方图矫正的图像色彩均衡

from itertools import chainimport cv2import osimport numpy as npimport datetimeclass BrightnessBalance:def __init__(self):passdef arrayToHist(self,gray):'''计算灰度直方图,并归一化:param gray_path::return:'''

《Nginx 负载均衡详解》

一、引言 在当今互联网时代,随着业务的不断发展和用户量的持续增长,单一服务器往往难以满足高并发的访问需求。为了提高系统的可用性、可靠性和性能,负载均衡技术应运而生。Nginx 作为一款高性能的 Web 服务器和反向代理服务器,提供了强大的负载均衡功能。本文将深入探讨 Nginx 负载均衡的原理、配置方法、算法以及实际应用中的注意事项,帮助读者更好地理解和运用 Nginx 负载均衡技术。