LVS负载均衡(load balance)

news2024/11/19 23:32:45

一 LVS

   LVS:Linux Virtaul Server,该软件的功能是实现 LB(load balance)

二LVS 的三种工作模式

1.NAT 模式(NAT)

LVS 服务器同时充当一台 NAT 网关,拥有公有 IP ,同时负责将针对此公共 IP 的请求依据算法将请求转发给 LAN 中的某台真实服务器(node) ,node 处理完成请求后将结果返回至 LVS Server, 在由 LVS Server 将结果返回给用户。可以将内部网络隐藏

2.IP 隧道模式(TUN)

 可以实现让集群中的节点处于不同网络段

3.直连路由模式(DR)

当参与集群的计算机和作为控制管理的计算机在同一个网段时可以使用此种方法。控制管理的计算机接收到请求包时直接送到参与集群的 node 上。当 node 处理完请求后将直接把结果返还至用户而不通过 LVS Server 返还。DR 的优势在于速度快、开销少。

三 、三种模式的对比

 NAT 方式适用于在同一个 LAN 中实现小型 LB

 TUN 方式适用于 node 部分在 Internet 上

 DR 方式使用与在同一个 LAN 中实现较为大型 LB

四 LVS 的八种算法

1.算法:将客户端的请求按照不同的算法转发给 web 服务器

2.算法的种类

 1)rr:轮询 rr 算法就是将外部请求顺序轮流分配到集群中的 node 上,但不考虑每台 node的负载情况。

 2)wrr:加权轮询 wrr 算法在 rr 算法的基础上会考察每台 node 的负载情况,并尝试让负较轻的 node 承担更多请求。

(权重为0表示不能接收,权重值越大越能接收)

 3)lc:最少连接 算法可以让 LVS 尝试把新的请求交给当前连接数最少的 node ,直到此node 连接数不再属于最少标准

 4)wlc:加权最少连接 wlc 算法也由权重的干预。LVS 会根据每台 node 的权重并综合连接数控制转发行为

 5)lblc:局部最少连接 算法会加上针对源请求 IP 地址的路由估算,并尝试把请求发送到源请求 IP 路由最近的 node 上。此种方法一般用于远程或者是大规模的集群组

 6)lblcr:带有复制的局部最少连接算法 lblcr 算法是在 lblc 算法的基础上增加了一个 node列表,先依据 lblc 算法计算出与源请求 IP 地址最近的一组 node ,然后在决定把请求发送

到最近一组中的最近的一台 node 。若此 node 没有超载则将请求转发给这台 node, 如果超载则依据”最少连接”原则找到最少连接的 node 并将此 node 加入集群组中。并将请求转

给此 node

 7)dh:目标地址散列算法 相当于随机

 8)sh:原地址散列算法 相当于随机

五 ipvsadm 语法格式

注:需安装 lvs 软件:yum install ipvsadm -y

1.ipvsadm -C:清空 kernel 中的 lvs 列表(清空虚拟主机及转发记录)

 ipvsadm -A -t 虚拟主机 IP:80 -s 算法 :声明一个虚拟主机

 ipvsadm -a -t 虚拟主机 IP:80 -r 接受连接的真实服务器 IP:80 lvs 的模式 -w 权重值 2.三种

模式

 -i TUN 模式

 -g DR 模式

 -m NAT 模式

六 NAT 模式

                                  <-->(192.168.1.2)web1

 client(172.16.0.2)<-->(172.16.0.1)lvs(192.168.1.1)

                                  <-->(192.168.1.3)web2

2.安装软件

 在 client:yum install elinks -y

 在 lvs 上:yum install ipvsadm iptables-services -y

 在 web1/web2 上:yum install httpd -y

3.在 web1/web2 上,配置好 httpd

 在 lvs 上,编辑脚本 vim lvs-nat.sh

#!/bin/bash

iptables -F

iptables -X

iptables -Z

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

ipvsadm -C

ipvsadm -A -t 172.16.0.1:80 -s wrr

ipvsadm -a -t 172.16.0.1:80 -r 192.168.1.2:80 -m -w 2

ipvsadm -a -t 172.16.0.1:80 -r 192.168.1.3:80 -m -w 3

注:该 iptables 语句实现了隐藏内网的功能(内网服务器返回给外网客户端信息时,将自己的源 IP 地址伪装为 lvs 服务器的外网 IP 地址)

4.在 web1/web2 上:systemctl restart httpd

 在 lvs 上:bash lvs-nat.sh

5.在 client 上测试:elinks http://172.16.0.1 可见 web1/web2 上的网页交替出现(因为采用了 wrr 算法,web2 出现的频率高一些)在 web1/web2 上测试:ssh root@172.16.0.2 连接成功后,在 client 端:netstat -lantu |grep 22,可以看到,web1/web2 的源地址被伪装成 lvs 服务器的公网 IP 地址(172.16.0.1)

七 DR 模式

1.搭建网络拓扑

 clinet(192.168.1.2)<--->(192.168.1.1)router(192.168.0.1)

<-------->(192.168.0.3)web1

<------->(192.168.0.2)lvs

                          <--------<(192.168.0.4)web2

2.安装软件

 在 client:elinks

 在 lvs 上:ipvsadm

 在 web1、web2 上:httpd

3.在 lvs 上,vim lvs-dr.sh

#!/bin/bash

VIP=192.168.0.254

RIP1=192.168.0.3

RIP2=192.168.0.4

ipvsadm -C

ifconfig eno16777736:0 $VIP broadcast $VIP netmask 255.255.255.255 up

route add -host : dev eno16777736:0

ipvsadm -A -t $VIP:80 -s wlc

ipvsadm -a -t $VIP:80 -r $RIP1:80 -g -w 1

ipvsadm -a -t $VIP:80 -r $RIP2:80 -g -w 1

 在 web1 和 web2 上,vim web.sh

#!/bin/bash

VIP=192.168.0.254

ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP

route add -host $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

4.在 lvs 上:bash lvs-dr.sh

  在 web1、web2 上:bash web.sh

  配置好 httpd

5.在客户端测试:elinks http:192.168.0.254,可见 web1 和 web2 上的网页交替出现

八 TUN 模式

执行原理:

①LVS接收到请求包(目标IP为VIP),进行IP Tunnel封装(在原有 的包头上加上IP Tunnel的包头),然后发送出去。

②节点(需配置VIP)收到数据包后,解开IP Tunnel包头信息(逻 辑上的隐形隧道,LB和RS之间传输),得到客户的请求进行响应处理。

③回复过程:RS使用自己的公网,将数据直接回复给客户端。

1.网络拓扑:

                             <---->(192.168.0.2)web1

 client(192.168.0.4)<--->(192.168.0.1)lvs

                             <---->(192.168.0.3)web2

2.安装软件

 client:elinks

 lvs:ipvsadm

 web1、web2:httpd

3.在 web1、web2 上:

 配置好 httpd

 编辑脚本:vim web.sh

#!/bin/bash

VIP=192.168.0.88

ifconfig tunl0 down

ifconfig tunl0 $VIP broadcast $VIP netmask 255.255.255.255 up

route add -host $VIP dev tunl0

echo 1 > /proc/sys/net/ipv4/conf/tunl0/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/tunl0/arp_announce

echo 0 > /proc/sys/net/ipv4/conf/tunl0/rp_filter

echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore

echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce

注:为了实现IP隧道,Linux定义了一种新的协议IPIP,产生一个成为tun10的网络设备用来封装数据。使用方式和普通网卡没有差异

4.在 lvs 上编辑脚本

 vim lvs-tun.sh

#!/bin/bash

VIP=192.168.0.88

RIP1=192.168.0.2

RIP2=192.168.0.3

ipvsadm -C

ifconfig eno16777736:0 $VIP broadcast $VIP netmask 255.255.255.255 up

route add -host $VIP dev eno16777736:0

ipvsadm -A -t $VIP:80 -s wlc

ipvsadm -a -t $VIP:80 -r $RIP1:80 -i -w 1

ipvsadm -a -t $VIP:80 -r $RIP2:80 -i -w 1

5.在 web1、web2 上:bash web.sh

 在 lvs 上:bash lvs-tun.sh

6.在 client:elinks http://192.168.0.88 可以看到 web1 和 web2 上的网页交替出现

九 检查 lvs 服务器的状态:ipvsadm

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1547597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apple Vision Pro应用合集

这里给大家分享一个网站&#xff0c;手机了最新的apple vision pro 上面运行的应用。 1、查找应用&#xff1a;用户可以浏览特色推荐的应用&#xff0c;或者通过随机挑选功能发现新的应用。 2、社区交流&#xff1a;提供社区功能&#xff0c;用户可以在这里交流使用体验、分享…

Chrome/Edge 使用 Markdown Viewer 查看 Markdown 格式文件

Chrome/Edge 使用 Markdown Viewer 查看 Markdown 格式文件 0. 引言1. 安装 Markdown Viewer 插件2. 使用 Markdown Viewer 阅读 Markdown 格式文件 0. 引言 大部分程序员都喜欢 Markdown 格式的文件&#xff0c;这时给一些没有在电脑上安装 Markdown 编辑器的同事分享资料时&…

SAP gui 组服务器 提示 Error service sapmsPRD unknown

/etc/hosts 追加IP地址和域名的配对关系 /etc/services 追加 sapms[sid] 3601/tcp

java数据结构与算法刷题-----LeetCode665. 非递减数列

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 文章目录 解题思路&#xff1a;时间复杂度O( n n n)&#xff0c;空间复杂度…

在vscode终端terminal加大栈空间How to increase max stack size in c++ using vscode

参考:https://devpress.csdn.net/cloud/63268204fd0b112779162383.html Answer a question In many dynamic programming and graph problems it is required to do long depth recursion. I am currently using vscode and mingw in windows for my c programs. But in defau…

计算机视觉之三维重建(4)---三维重建基础与极几何

文章目录 一、三维重建基础1.1 问题引入1.2 线性解法1.3 非线性解法1.4 多视图几何的关键问题 二、极几何与基础矩阵2.1 极几何2.2 极几何特例2.3 本质矩阵2.4 本质矩阵的性质2.5 基础矩阵2.6 基础矩阵的性质 三、基础矩阵估计 一、三维重建基础 1.1 问题引入 1. 从单张图像恢…

MySQL Explain 字段详解

Explain 工具介绍 Explain 一般被称为解释器&#xff0c;通过 Explain 工具&#xff0c;我们能分析我们使用的查询语句或是结构的性能瓶颈&#xff0c;它提供 MySQL 如何执行语句的信息。 使用语法&#xff1a; explain [extended|partition] select在 select 关键字前加 ex…

【多模态融合】SuperFusion 激光雷达与相机多层次融合 远距离高清地图预测 ICRA 2024

前言 本文介绍激光雷达与相机进行多层次融合&#xff0c;包括数据级融合、特征级融合和BEV级融合。 融合后的BEV特征可以支持不同的任务头&#xff0c;包括语义分割、实例编码和方向预测&#xff0c;最后进行后处理生成高清地图预测&#xff0c;它是来自ICRA 2024的。 会讲解…

【C++ leetcode】双指针(专题完结)

15. 三数之和 题目 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的…

3.26学习总结

java 实例变量和局部变量 实例变量是记录这个类中对象的特点的每一个对象的实例变量都可以不同(例如名字,性别等),其中一个对象的实例变量改变不会影响其他的变量. 类变量是一种特殊的实例变量,他的特殊在于所有的对象的类变量都是相同的,当一个对象改变了类变量那么所有对象…

0101支付安全-支付模块-项目实战

文章目录 一、信息安全的基础-机密性1 相关概念2 对称加密和非对称加密 二、身份认证三 摘要算法四、数字签名五、数字证书结语 在支付过程中&#xff0c;设计多方的敏感信息&#xff0c;那么安全尤为重要。下面先简单介绍下&#xff0c;相关概念。 一、信息安全的基础-机密性 …

Java项目:76 Springboot学生读书笔记共享

作者主页&#xff1a;源码空间codegym 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 本文从管理员、用户的功能要求出发&#xff0c; 读书笔记共享平台系统中的功能模块主要是实现管理员&#xff1b;首页、个人中心、用户管理、…

Intellij IDEA构建Android开发环境

Intellij IDEA创建项目时没有Android的选项 进设置&#xff08;Intellij IDEA - Settings - Plugins &#xff09; 再次创建项目可以看到Android的选项 解决Android导入项目时Gradle下载速度慢/超时/失败

Ansys Speos | Light Expert Group探测器组使用技巧

附件下载 联系工作人员获取附件 概述 相机挡板的设计需要在光路的不同位置同步多个照度图&#xff0c;以尽量减少杂散光。2023R2 Speos提供了一种新的探测器&#xff0c;用于高阶杂散光分析&#xff0c;可以同时对多个探测器进行光线追迹。Light Expert工具可以即时过滤3D视…

docker安装elasticseachkibana

1.docker安装es 创建本机挂载目录&#xff0c;与容器上目录映射 /Users/wangpei/2024/mydata/elasticsearch conf下创建yml文件 echo "http.host : 0.0.0.0" >> /Users/wangpei/2024/mydata/elasticsearch/config/elasticsearch.yml 安装容器&#xff1a; d…

书籍推荐|meta分析R语言实践教程-Doing Meta-Analysis with R: A Hands-On Guide

“The problems are solved, not by giving new information, but by arranging what we have known since long.” – Ludwig Wittgenstein 推荐理由 《Doing Meta-Analysis with R: A Hands-On Guide》是由 Mathias Harrer, Pim Cuijpers, Toshi Furukawa, 和 David Ebert所…

排序(冒泡/快速/归并)

冒泡排序 时间复杂度为 O(n^2) 原理 比较相邻的元素. 如果第一个比第二个大,就交换他们两个.依次比较每一对相邻的元素—>结果 : 最后的元素是这组数中最大的重复上述步骤 , 除了最后一个[]因为最后一个已经是排好序的了(这组数中最大的那个)]持续对越来越少的元素进行如上…

如何备考2025年AMC8竞赛?吃透2000-2024年600道真题(免费送题)

最近有家长朋友问我&#xff0c;现在有哪些类似于奥数的比赛可以参加&#xff1f;我的建议可以关注下AMC8的竞赛&#xff0c;类似于国内的奥数&#xff0c;但是其难度要比国内的奥数低一些&#xff0c;而且比赛门槛更低&#xff0c;考试也更方便。比赛的题目尤其是应用题比较有…

NIO与AIO

NIO与AIO NIO模型 在 LInux 环境中&#xff0c;java.nio.channels.Selector 的子类叫做 sun.nio.ch.EPollSelectorImpl &#xff0c;其底 层是基于 Epoll 模型去实现的 IO 多路复用器。 对于 Epoll 模型 我们需要了解到它底层的三个函数 在 JDK 实现的底层中&#xff0c;EPol…

git clone没有权限的解决方法

一般情况 git clone时没有权限&#xff0c;一般是因为在代码库平台上没有配置本地电脑的id_rsa.pub 只要配置上&#xff0c;一般就可以正常下载了。 非一般情况 但是也有即使配置了id_rsa.pub后&#xff0c;仍然无法clone代码的情况。如下 原因 这种情况是因为ssh客户端…