LVS/DR+Keepalived负载均衡实战(一)

这篇具有很好参考价值的文章主要介绍了LVS/DR+Keepalived负载均衡实战(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

引言

负载均衡这个概念对于一个IT老鸟来说再也熟悉不过了,当听到此概念的第一反应是想到举世闻名的nginx,但殊不知还有一个大名鼎鼎的负载均衡方案可能被忽略了,因为对于一般系统来说,很多应用场合中采用nginx基本已经满足需求,但对于大型机高性能系统掌握lvs负载均衡是非常有必要的,接下来将小哥对lvs负载均衡进行初步探索。

lvs 简介

概念

LVS(Linux Virtual Server),顾名思义是linux 虚拟服务器的意思,一个虚拟的服务器集群系统,使用负载均衡技术将多台服务器组成一个虚拟服务器。

LVS的由来

由于互联网用户的急剧增长,用户对服务器的访问数量快速增加,这就要求广大的互联网服务器需要具备较大的并发服务能力,因此对于大负载的服务器来讲, CPU、I/O处理能力很快会成为瓶颈。由于单台服务器的性能总是有限的,简单的提高硬件性能并不能真正解决这个问题。为此,必须采用多服务器和负载均衡技术才能满足大量并发访问的需要。

LVS 的优势

1、LVS具有较高的带负载能力,理论上来说,首先LVS 工作在网络7层模型的第4层,一般情况下,越低的工作层次就代表其效率也会越高,工作在低4层模型也就意味着不用和客户端建立连接,不用握手,不用付出因为建立连接或者握手而开辟的资源开销;其次从操作系统层面来讲,LVS是内核级别的功能,对于有限核数的cpu来看,内核级别的功能优先级远远高于用户级别功能的优先级,其执行效率一般会计较高;最后从系统资源层面来看, LVS只对数据进行转发,不消耗操作系统的IO 资源,因此LVS对操作系统资源的依赖是大大降低。根据小哥我查到的数据,LVS 并发服务量大概在几十万这个级别。
2、LVS具有较高的可用,LVS适合对所有的应用层软件做负载均衡解决方案。
3、可靠性较高,LVS工作在7网络模型第四层,他的运行只和网络协议栈和操作系统有关系,因此和其他应用软件的冲突机率大大降低,此外
LVS自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat,这使得LVS的可靠性得到充分保障。

LVS 搭建高可靠负载均衡集群

集群负载均衡的三种模式

NAT

NAT(Network Address Translation)意即网络地址转换,允许一个整体机构以一个公用IP地址出现在Internet上,即把内部私有网络地址翻译成合法网络IP地址的技术。通过网络地址转换,调度器重写请求报文的目标地址,根据预设的调度算法,将请求分派给后端的真实服务器;真实服务器的响应报文通过调度器时,报文的源地址被重写,再返回给客户,完成整个负载调度过程。
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

IP Tunneling

采用NAT技术做负载均衡时,自身网络带宽和cpu算力变成瓶颈,为了解决这个问题,调度器把请求报 文通过IP隧道转发至真实服务器,而真实服务器将响应直接返回给客户,所以调度器只处理请求报文。
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

Direct Routing

Direct Routing 也就是常说的DR模式,此模式通过改写请求报文的MAC地址,将请求发送到真实服务器,而真实服务器将响应直接返回给客户。同TUN模式一样,DR模式可提高集群系统的扩展性。DR模式下没有IP隧道的开销,对集群中的真实服务器也没有必须支持IP隧道协议的要求,但是要求LVS服务器和其他应用服务必须在同一物理网段上。其模型图如下所示:

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

LVS 实战

LVS 高可靠负载均衡集群至少得准备四台虚拟机
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
按照本大猿的结构准备环境,架构框图如下所示:
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
从上图中可以看出,我们需要将node1和node2的两台机子作为LVS负载均衡的主机和从机,需要检查两台机器的环境。

所有节点关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

LVS 环境准备

从linux 2.4 开始已经自带LVS,我们只需要安装ipvsadm 工具包即可。node1 和node2 分别安装ipvsadm 工具。

yum install ipvsadm -y

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

LVS环境检查

查看LVS 环境配置是否污染,如果污染需要清空

# 查看配置
ipvsadm  -ln
#  清空配置
ipvsadm  -C

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
如果虚拟网卡(VIP)已经存在,则需要先卸载网卡,保持环境干净。

ifconfig  down  eth0:xxx down

本文中LVS 主副节点均为新建,无需其他清理操作。
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

keepalived环境准备

LVS 需要和keepalived结合,

什么是keepalived

Keepalived is a routing software written in C. The main goal of this project is to provide simple and robust facilities for loadbalancing and high-availability to Linux system and Linux based infrastructures. Loadbalancing framework relies on well-known and widely used Linux Virtual Server (IPVS) kernel module providing Layer4 loadbalancing. Keepalived implements a set of checkers to dynamically and adaptively maintain and manage loadbalanced server pool according their health. On the other hand high-availability is achieved by VRRP protocol. VRRP is a fundamental brick for router failover. In addition, Keepalived implements a set of hooks to the VRRP finite state machine providing low-level and high-speed protocol interactions. In order to offer fastest network failure detection, Keepalived implements BFD protocol. VRRP state transition can take into account BFD hint to drive fast state transition. Keepalived frameworks can be used independently or all together to provide resilient infrastructures.
下面开始配置keepalived环境

yum install keepalived  -y

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

keepalived配置文件设置
cp /etc/keepalived/keepalived.conf  /etc/keepalived/keepalived.conf.bak
vim /etc/keepalived/keepalived.conf
master
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.150.100/24 dev ens33 label  ens33:1
    }
}

virtual_server 192.168.159.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP

   real_server 192.168.159.32 80 {
        weight 1
        HTTP_GET {
              url {
                   path /
                   status_code 200
              }
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
       }
    }
    real_server 192.168.159.33 80 {
        weight 1
        HTTP_GET {
              url {
                   path /
                   status_code 200
              }
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
       }
    }
}

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

slave
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 500
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.150.100/24 dev ens33 label  ens33:1
    }
}

virtual_server 192.168.159.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
    protocol TCP

   real_server 192.168.159.32 80 {
        weight 1
        HTTP_GET {
              url {
                   path /
                   status_code 200
              }
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
       }
    }
    real_server 192.168.159.33 80 {
        weight 1
        HTTP_GET {
              url {
                   path /
                   status_code 200
              }
              connect_timeout 3
              nb_get_retry 3
              delay_before_retry 3
       }
    }
}

在从机上不显示虚拟网卡但显示路由配置
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
需要注意的是副节点上并没有看到虚拟网卡信息,因为这时候主节点无故障,副节点中的虚拟网卡基本

应用服务器配置

修改内核配置
echo 1  >  /proc/sys/net/ipv4/conf/ens33/arp_ignore 
echo 1  >  /proc/sys/net/ipv4/conf/all/arp_ignore 
echo 2 > /proc/sys/net/ipv4/conf/ens33/arp_announce 
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce 

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
其他方式修改,永久神效

vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

设置隐藏ip

node3和node4为应用服务器,我们需要在应用服务器上配置VIP

ifconfig  lo:1  192.168.159.100  netmask 255.255.255.255

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

安装httpd插件

node3和node4 首先安装httpd 插件

	yum install httpd -y
	systemctl start httpd 

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

修改首页,两个节点需要分别修改

	vi   /var/www/html/index.html
		from node3
	#重启
	systemctl restart httpd

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
如上图将两个应用服务器节点的httpd服务配置完成。

数据转发失效

这里数据转发失效的最大可能原因是没有注释掉vrrp_strict这条配置。

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发

测试负载均衡效果

LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
LVS/DR+Keepalived负载均衡实战(一),lvs,负载均衡,linux,arm开发
经过测试,本次探索的LVS负载均衡器基本达到试目标,后续文章会继续探索这块的知识。

参考文章:
https://blog.csdn.net/weixin_52813907/article/details/127074105
https://www.jianshu.com/p/a2190b6d4333文章来源地址https://www.toymoban.com/news/detail-641543.html

到了这里,关于LVS/DR+Keepalived负载均衡实战(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】LVS负载均衡群集 DR模式

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 (1)客户端发送请求到 Director Server(负载均衡器),请求的数据报文(源 IP 是 CIP,目标 IP 是 VIP)到达内核空间。 (2)Director Server 和 Real Server 在同一个网络中,数据通过二层数据链路层来传输。 (

    2024年02月12日
    浏览(43)
  • LVS负载均衡-DR

    1.DR模式中每台主机都有一个VIP地址 虚拟网址放在lo网卡上(回环网卡) arp_ignore=1 Arp_announce=2 系统不使用IP包的源地址来设置ARP请求的源地址,而选择发送接口的IP地址 2.内核参数修改   3.vim /etc/rc.conf   开机自启动   Chmod +x /etc/rc.d/rc.conf 4.实验 五台虚拟机(两台web服务虚拟

    2023年04月25日
    浏览(51)
  • LVS-DR+keepalived实现高可用负载群集

    VRRP 通信原理: VRRP就是虚拟路由冗余协议,它的出现就是为了解决静态路由的单点故障。 VRRP是通过一种竞选的一种协议机制,来将路由交给某台VRRP路由。 VRRP用IP多播的方式(多播地址224.0.0.18)来实现高可用的通信,工作时主节点发包,备节点接收包,当备节点接收不到主

    2024年02月12日
    浏览(42)
  • LVS负载均衡—DR模式

    目录 一、DR模式的特点 二、LVS-DR中的ARP问题 1)问题一:VIP地址相同导致响应冲突 问题原因: 解决方法:  2)问题二:返回报文时源地址使用VIP,导致网关设备的ARP缓存表紊乱 问题原因: 解决方法: 3)Linux部署NAT模式的应对方案 三、LVS单网段DR模式部署 实验准备 实验部

    2024年02月08日
    浏览(39)
  • LVS负载均衡集群(DR)

    目录 1.数据包流向 2.通信遇到的问题         1.ARP广播 导致所有节点服务器和调度器的VIP响应         2.VIP的调度器失效 3.案例        1. 配置负载调度器          2.部署共享存储         3. 配置节点服务器(这里是两台)         1.客户端发送请求到负载均衡器 请求的数

    2024年02月12日
    浏览(33)
  • LVS负载均衡集群之LVS-DR部署

    目录 一、lVS-DR集群概述  二、LVS-DR数据包流向分析 四、LVS-DR特性 五、DR模式 LVS负载均衡群集部 5.0配置虚拟 IP 地址(VIP 192.168.14.180) 5.1.配置负载调度器(192.168.14.101) 5.2部署共享存储(NFS服务器:192.168.14.104) 5.3配置节点服务器(192.168.14.102、192.168.14.103) 5.4.测试 LVS 群集

    2024年02月15日
    浏览(33)
  • LVS负载均衡群集部署(DR模式)

    ipvsadm 工具选项说明: 工具选项 作用 -A 添加虚拟服务器 -D 删除整个虚拟服务器 -s 指定负载调度算法(轮询:rr、加权轮询:wrr、最少连接:lc、加权最少连接:wlc) -a 表示添加真实服务器(节点服务器) -d 删除某一个节点 -t 指定 VIP地址及 TCP端口 -r 指定 RIP地址及 TCP端口

    2024年02月08日
    浏览(41)
  • LVS DR模式负载均衡群集部署

    目录 1 LVS-DR 模式的特点 1.1 数据包流向分析 1.2 DR 模式的特点 2 DR模式 LVS负载均衡群集部署 2.1 配置负载调度器 2.1.1 配置虚拟 IP 地址 2.1.2 调整 proc 响应参数 2.1.3 配置负载分配策略 2.2 部署共享存储 2.3 配置节点服务器 2.3.1 配置虚拟 IP 地址 2.3.2调整内核的 ARP 响应参数以阻

    2024年02月09日
    浏览(47)
  • NGINX负载均衡及LVS-DR负载均衡集群

    原理 : 1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间 2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链 3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群 服务进

    2024年02月13日
    浏览(49)
  • LVS+KeepAlived高可用负载均衡集群

    高可用集群只需要在调度器上多进行一台或两台(服务器本身的价格比较昂贵,一般备用的服务器的数量会和当前业务创造的价值对等)的设置,就可避免因调度器瘫痪业务中断的风险,所以实现了真正的高可用的效果。 1.普通群集 普通的群集的部署是通过一台度器控制调配

    2024年02月09日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包