LinuxGod.net
Linux大神网——精选每一篇高品质的技术干货
  1. 首页
  2. 开源快讯
  3. 正文

置(负载均衡系统)更新(2):LVS-TUN模型

2022年12月11日 126点热度

LVS(Linux Virtual Server)Linux 虚拟服务器介绍及配置(负载均衡系统)

更新时间:2012年05月31日 23:32:57 作者:

LVS(Linux Virtual Server) 是Unix-like系统中的一个虚拟服务器,是国内贡献给开源组织的一个最优秀的项目之一

一,简介

LVS(Linux Virtual Server) 是Unix-like系统中的一个虚拟服务器,是国内贡献给开源组织的一个最优秀的项目之一。LVS在Unix-like系统中

是作为一个前端(Director)存在的,又称为调度器,它本身不提供任何的服务,只是将通过互联网进来的请求接受后再转发给后台运行的真正的

服务器(RealServer)进行处理,然后响应给客户端。

LVS有两个重要的组件:一个是IPVS,一个是IPVSADM。ipvs是LVS的核心组件,它本身只是一个框架,类似于iptables,工作于内核空间中。

ipvsadm 是用来定义LVS的转发规则的,工作于用户空间中。

LVS有三种转发类型:

1.LVS-NAT模型,称为网络地址转换,实现起来比较简单。

2.LVS-DR模型,称为直接路由模型,应用比较广泛。

3.LVS-TUN模型,称为隧道模型。

二、LVS的三种模型的工作属性:

1.LVS-NAT模型的工作属性或特:

(1).所有的RealServer集群节点和前端调度器Director都要在同一个子网中

(2).通常情况下RealServer的IP地址(以下简成RIP)为私有地址,便于RealServer集群节点之间进行通信

(3).通常情况下前端的Director有两个IP地址64位linux,一个为VIP,是虚拟的IP地址,客户端向此IP地址发起请求。

一个是DIP,是真正的Director的IP地址,RIP的网关要指向Director的DIP。

(4).这种模型可以实现端口映射

(5).RealServer的操作系统可以是任意操作系统

(6).前端的Director既要处理客户端发起的请求,又要处理后台RealServer的响应信息,将RealServer响应的信息再转发给客户端

(7).前端Director很容易成为整个集群系统性能的瓶颈。

2.LVS-DR模型的工作属性或特征:此种模型通过MAC地址转发工作,如何转发后面将会介绍。

(1).所有的RealServer集群节点和前端调度器Director都要在同一个物理网络中

(2).RIP可以使用公网的IP

(3).RIP的网关不能指向DIP

(4).前端的Director只处理客户端的请求linux 虚拟服务器软件,然后将请求转发给RealServer,由后台的RealServer直接响应客户端,不再经过Director

(5).此种模型不支持端口映射

(6).RealServer可以使用大多数的操作系统

(7).此种模型的性能要优于LVS-NAT

3.LVS-TUN模型的基本工作属性或特征

(1).RealServer服务器与前端的Director可以在不同的网络中

(2).RIP一定不能是私有IP

(3).前端的Director只处理客户端的请求,然后将请求转发给RealServer,由后台的RealServer直接响应客户端,不再经过Director

(4).此种模型也不支持端口映射

(5).RealServer只能使用哪些支持IP隧道的操作系统

三。LVS Scheduling Method LVS的调度方法:

1.Fixed Scheduling Method 静态调服方法

(1).RR 轮询

(2).WRR 加权轮询

(3).DH 目标地址hash

(4).SH 源地址hash

2.Dynamic Scheduling Method 动态调服方法

(1).LC 最少连接

(2).WLC 加权最少连接

(3).SED 最少期望延迟

(4).NQ 从不排队调度方法

(5).LBLC 基于本地的最少连接

(6).LBLCR 带复制的基于本地的最少连接

四、ipvsadm组件定义规则的格式:

1.定义集群服务格式:

(1).添加集群服务:

ipvsadm -A|E -t|u|f service-address [-s scheduler]

[-p [timeout]] [-M netmask]

-A: 表示添加一个新的集群服务

-E: 编辑一个集群服务

-t: 表示tcp协议

-u: 表示udp协议

-f: 表示firewall-Mark,防火墙标记

service-address: 集群服务的IP地址,即VIP

-s 指定调度算法

-p 持久连接时长,如#ipvsadm -Lcn ,查看持久连接状态

linux 虚拟软件_linux 虚拟服务器软件_基础设施即服务+平台即服务+软件即服务

-M 定义掩码

ipvsadm -D -t|u|f service-address 删除一个集群服务

ipvsadm -C 清空所有的规则

ipvsadm -R 重新载入规则

ipvsadm -S [-n] 保存规则

2.向集群服务添加RealServer规则:

(1).添加RealServer规则

ipvsadm -a|e -t|u|f service-address -r server-address

[-g|i|m] [-w weight]

-a 添加一个新的realserver规则

-e 编辑realserver规则

-t tcp协议

-u udp协议

-f firewall-Mark,防火墙标记

service-address realserver的IP地址

-g 表示定义为LVS-DR模型

-i 表示定义为LVS-TUN模型

-m 表示定义为LVS-NAT模型

-w 定义权重linux 虚拟服务器软件,后面跟具体的权值

ipvsadm -d -t|u|f service-address -r server-address --删除一个realserver

ipvsadm -L|l [options] --查看定义的规则

如:#ipvsadm -L -n

ipvsadm -Z [-t|u|f service-address] --清空计数器

五、LVS-NAT模型实例

1。先配置好网络环境,要三个虚拟机(本次实验在虚拟机上完成),一台用作Director,其他两台分别为RealServer1 和RealServer2

其中Director要两个网卡,Eth0网卡为桥接(Birdged),Eth1网卡为仅主机(Host-only),RealServer1 和RealServer2的网卡也都是仅主机

类型的。

2.为了演示效果,将Director的两块网卡配置成不在同一个网段的IP地址,RealServer1 和RealServer2的IP地址为同一网段,规划如下图:

要注意的是:要将本地物理机的Vmnet1的IP地址配置成和Director的Eth1网卡的IP地址在同一个网段中,同时将RealServer1和RealServer2的网关指向Director主机的Eth1网卡的地址,如下图所示:

3.配置好网络环境之后就开始配置ipvsadm,确保在物理机上能ping通Eth0的IP地址,如下图所示:

能Ping通,说明物理主机已经可以和Director虚拟主机通信了。

4.在Director虚拟主机上配置:

#echo 1 > /proc/sys/net/ipv4/ip_forward --开启IP转发功能

#rpm -qa ipvsadm --查看ipvsadm是否安装,如果没有安装则安装之,直接使用yum安装即可

#yum install ipvsadm -y

定义LVS-NAT模型规则

此处使用的是web服务器进行的演示,在192.168.24.44和192.168.24.45上都提供了nginx服务,其中

192.168.24.44提供的网页信息为“welcome realserver 1”,192.168.24.45提供的网页信息为“welcome realserver 2”

#ipvsadm -A -t 172.16.100.24:80 -s rr

#ipvsadm -a -t 172.16.100.24:80 -r 192.168.24.44 -m

#ipvsadm -a -t 172.16.100.24:80 -r 192.168.24.45 -m

#ipvsadm -L -n --查看定义的规则

这些规则都是临时规则,不会永久生效的,要想永久生效可以保存规则,命令如下:

#service ipvsadm save

5.在Internet Explorer浏览器中访问172.16.100.24linux系统应用,会显示如下图所示信息:

而在google浏览器中访问172.16.100.24,会显示如下图所示信息:

如果刷新页面或者使用不同的浏览器,会轮流显示页面,这就是最简单的服务器负载均衡啦!

六、LVS-DR模型的实现过程:

1.首先规划集群和网路环境,需要三台虚拟机,如下图所示:

此时Director可以只有一个网卡Eth0,连接类型为桥接(Birdged),RealServer1和RealServer2 的网卡连接类型也都为桥接(Birdged):

2.配置集群服务

(1).在Director服务器上配置:

#ifconfig eth0:1 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up

#route add -host 172.16.100.100 dev eth0:1

#echo 1 > /proc/sys/net/ipv4/ip_forward --开启IP转发功能

(2).在realserve1服务器上进行配置:

# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

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

# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

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

#ifconfig lo:0 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up

#route add -host 172.16.100.100 dev lo:0

(3).在realserver2 服务器上进行配置

# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore

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

# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

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

#ifconfig lo:0 172.16.100.100 broadcast 172.16.100.100 netmask 255.255.255.255 up

#route add -host 172.16.100.100 dev lo:0

(4).再在Director上配置ipvsadm规则:

#ipvsadm -A -t 172.16.100.100:80 -s rr -g

#ipvsadm -a -t 172.16.100.100:80 -r 172.16.24.34

#ipvsadm -a -t 172.16.100.100:80 -r 172.16.24.44

(5).在浏览器中进行验证:

进行第一次访问,如下图所示:

进行第二次访问,如下图所示:

3.基于ssl的访问

[root@mail ~]# ipvsadm -A -t 172.16.100.100:443 -s rr

[root@mail ~]# ipvsadm -a -t 172.16.100.100:443 -r 172.16.24.2 -g

[root@mail ~]# ipvsadm -a -t 172.16.100.100:443 -r 172.16.24.3 -g

二、LVS Persistence ,lvs的持久连接性

持久连接类型:

(1).Persistent Client Connections(PCC),持久客户端连接:就是不管客户端发起什么样的服

务(如80端口的web服务,3306端口的mysql服务)请求,都将经过Director被定位到同一个特定的real server上,

只要此real server 提供了这种服务,并且会持续连接,如果客户端连接超时,real server允许一定范围内的

linux 虚拟软件_linux 虚拟服务器软件_基础设施即服务+平台即服务+软件即服务

持久连接时长,默认持久连接时长为300m

#ipvsadm -A -t 172.16.100.100:0 -p 1200

#ipvsadm -a -t 172.16.100.100:0 -r 172.16.100.34 -g -w 10

#ipvsadm -a -t 172.16.100.100:0 -r 172.16.100.44 -g -w 5

验证效果如下图:

(2).Persistent Port Connections(PPC),持续端口连接:就是不管客户端发起什么样的端口请求(如80端口,是提供web服务的,23端口,是提供telnet服务的....),

都会经过Director将请求转发到同一个real server上,并持续连接。假如一个客户端请求的是web服务,相应的是realserver1 ,当此用户退出后再次发起请求web服务的时候

依然是realserver1 提供的web服务。

iptables:

[root@mail ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.100.100 --dport 80 -j MARK --set-mark 20

[root@mail ~]# iptables -t mangle -A PREROUTING -i eth0 -p tcp -d 172.16.100.100 --dport 443 -j MARK --set-mark 20

[root@mail ~]# iptables -t mangle -L -n

Chain PREROUTING (policy ACCEPT)

target prot opt source destination

MARK tcp -- 0.0.0.0/0 172.16.100.100 tcp dpt:80 MARK set 0x14

MARK tcp -- 0.0.0.0/0 172.16.100.100 tcp dpt:443 MARK set 0x14

把80端口和443 端口做成一个持久防火墙标记,同时定向到同一个realserver上,即在访问80服务的时候是realserver1,

然后改为访问443服务的时候依然定向到realserver1上

基于防火墙标记来定义集群服务,也称为端口的姻亲关系。

ipvsadm:

[root@mail ~]# ipvsadm -A -f 20 -s wlc -p 1200

[root@mail ~]# ipvsadm -a -f 20 -r 172.16.24.2 -g -w 3

[root@mail ~]# ipvsadm -a -f 20 -r 172.16.24.3 -g -w 2

[root@mail ~]# ipvsadm -Ln

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port Forward Weight ActiveConn InActConn

FWM 20 wlc persistent 1200

-> 172.16.24.3:0 Route 2 0 0

-> 172.16.24.2:0 Route 3 0

本文出自 “知识体系” 博客

本作品采用 知识共享署名 4.0 国际许可协议 进行许可
标签: director lvs nginx负载均衡配置 网络负载均衡 集群服务器
最后更新:2022年12月11日

Linux大神网

每日更新,欢迎收藏♥ 不积跬步无以至千里,加油,共勉。

点赞
< 上一篇
下一篇 >

Linux大神网

每日更新,欢迎收藏♥
不积跬步无以至千里,加油,共勉。

最新 热点 随机
最新 热点 随机
【】原操作系统配备内核源代码,更不能进行内核模块实验 【Linux基础知识】与文件权限管理的Linux关系 linux/管理员管理员发布于5年前34(图) Linux和Unix操作系统之间有区别但也有联系?(一) Ubuntu系统如何升级和更新Linux内核版本?将推荐 Linux内核技术组成、组织和重要的数据结构等(组图) 【报错日志】一下升级linux内核的启动顺序为0 Linux终端窗口中输入mysql-V以显示MySQL版本信息sky 计算机操作系统全新版装系统盘点、理念与系统的优缺点 linux中常用的用户管理命令:1groups?列出当前用户所属 Linux下如何设置开机启动启动脚本?学算法 Linux中已经安装好了mysql命令 Linux系统用户系统上的三种类型的帐户的介绍 Linux下的开机启动设置方法是什么?脚本或服务 谷歌更新Linux内核构建的公共内核库:添加对kokoro作业的支持 linux下mysql中可以使用REVOKE语句来删除某个用户的权限 内核的角度来看,调用hotplug和通常的hotplug环境 Linux系统在开机的时候自动加载某些脚本或系统服务 如何在Linux上安装Diablo3操作系统Diablo3 RedHatLinux软件安装包软件后缀为.rpm最初
Linux5.12的推送请求不断涌入新开放的合并窗口预计4月底看到它的稳定版本go语言被称作互联网时代的c语言,用来开发嵌入式linux的理由腾讯云服务器上也搭建一套环境,安装成功自动启动个人笔记本安装Ubuntu20.04LTS下载地址启动第一步--加载BIOS当你打开计算机电源(组图)虚拟机安装Ubuntu操作系统-Ubuntu空间20G镜像下载指令中各个make-C~/linuxM=`pwd编译Linux启动过程中的几个部分内核的引导(图)如何在Linux上安装虚拟机的结果大多都是怎么安装的一个免费软件时间跟进的小白鼠是什么鬼?专题计算机是如何启动的?、内核操作系统的启动流程学习Linux最简单、最实用的环境就是虚拟机环境(上)基于命令修改文件的权限命令-ld1.Linux磁盘分区和目录Linux发行版本之间的差别很少?国内性价比很高的Linux虚拟主机系统安装的流程是什么?Linux下修改文件权限的权限与所有权的实现就显得很有必要linux到底难不难学呢?推荐可以查看Linux命令大全Linux中修改文件权限的命令、创建者所在组、所有人Linux的内核放在了哪里?/boot的启动目录一览阿里云>社区>主题地图S>查看存储推荐
一个系统安装使用手册Alternate版Ubuntu系统U盘安装系统下载 如何在win10环境下使用vmware搭建本地计算机的虚拟机? 版本号的信息有以下几个:内核版本号编译器发行系统版本号 Linux设备驱动程序的类型和文件操作的基本开发过程 linux 创建链接文件 Linux链接分两种,一种被称为硬链接(SymbolicLink) linux到底难不难学呢?推荐可以查看Linux命令大全 Linux定时任务安全权限提升) 如何在Linux上运行.exe文件的唯一方法?-八维教育 小白在阿里云云服务器上如何发布自己的网站(建站|详细) 如何将普通用户添加到sudo组以及给定的权限使其成为普通用户 1.useradd命令可以创建一个新的用户帐号其最基本用法 解决Windows文件在Ubuntu解压后文件名出现文件名乱码的问题 第三方源安装显卡驱动安装后不能使用卸载 开源软件最古老的笑话——阅读源代码-documenting 在Linux服务器中安装Web面板,老左怎么办? 给安卓手机刷Recovery的方法给安卓Recovery:1.连接电脑完成 嵌入式LINUX系统培训班-国嵌课程 计算机是如何启动的?、内核操作系统的启动流程 告诉我们哪个Linux发行版对游戏支持的**.. 树莓派2正式发布支持微软Windows10操作系统派
标签聚合
linux系统 sudo 软件 unix linux服务器 shell 命令模式 文件目录 虚拟机 电脑
书籍
课程
技术群
技术干货大合集↓
  • 2023年2月 / 24篇
  • 2023年1月 / 161篇
  • 2022年12月 / 187篇
  • 2022年11月 / 76篇

COPYRIGHT © 2023 linuxgod.net ALL RIGHTS RESERVED.