LVS类型:

NAT:-->(DNAT)

DR

TUN

FULLNAT

LVS的常见名词解释

CIP<-->VIP--DIP<-->RIP



Direct Routing:直接路由

负载均衡层(Loader Balancer),它就是我们所说的的Director



RS real server :真实提供服务的计算机





VIP:Virtual IP(VIP)address:Director用来向客户端提供服务的IP地址





RIP:Real IP (RIP) address:集群节点(后台真正提供服务的服务器)所使用的IP地址





DIP:Director's IP (DIP) address:Director用来和D/RIP 进行联系的地址





CIP:Client computer's IP (CIP) address:公网IP,客户端使用的IP

LVS NAT的特性

1.RS应该使用私有地址

2.RS的网关必须指向DIP

3.RIP和DIP必须在同一网段内

4.请求和响应的报文都得经过Director,在高负载场景中,Director很可能成为性能瓶颈

5.支持端口映射

6.RS可以使用任意支持集群服务的OS

LVS DR类型


1.让前段路由将请求发往VIP时,只能是Dirctor上的VIP

解决方案

1.静态地址绑定

未必有路由器的配置权限

Director调用时静态地址绑定将难以使用

   2.arptables

   3.修改linux内核参数,将RS上的VIP配置在lo接口的别名上,限制linux仅对对应接口的ARP请求做相应

LVS DR类型的特性

1.RS可以使用私有地址,还可以使用公网地址,此时可以直接通过互联网连入RS,以实现配置、监控等

2.RS的网关一定不能指向DIP

3.RS跟Dirctory要在同一物理网络内(不能有路由器分隔)

4.请求报文经过Directory,但响应报文一定不经过Director

5.不支持端口映射

6.RS可以使用大多数的操作系统





LVS TUN类型:IP隧道

  1.RIP,DIP,VIP都得是公网地址

  2.RS的网关不会指向也不可能指向DIP

  3.请求报文经过Directory,但响应报文一定不经过Director

  4.不支持端口映射

  5.RS的OS必须得支持隧道功能

LVS的调度方法:10种

静态方法:仅根据算法本身进行调度

     rr:Round Robin 轮询

     wrr:Weighted RR 权重轮询

     sh:source hashing源地址hash

     dh:destination hashing 目标地址hash

  动态方法:根据算法及RS当前的复制状态

  lc:Least Connection 最少连接

  计算当前的负载Overhead=Active*256+Inactive来实现

  wlc:Weighted LC

  Overhead=(Active*256+Inactive)/weight

  sed:Shortest Expect Delay  最短期望延迟

Overhead=(Active+1)*256/weight


    nq:Nerver Queus: 永不排队





lblc:Locality-based least connection 基于本地的最少连接

相当于dh+lc





    Lblcr:基于复制的基于本地的最少连接 Replicated and Locality-based least connection









Session持久机制

1.Session绑定:始终将统一请求者的连接定向至统一RS(第一次请求时仍有调度选择):没有容错能力,有损均衡效果

2.session复制:在RS之间同步session,因此,每个RS持集群中所有的session;对于大规模集群环境不适用

3.session服务器:利用单独部署的服务器来统一管理session









LVS的集群服务:

四层交换,四层路由

根据请求目标套接字(包括端口的协议类型tcp,udp)来实现转发

ipvsadm

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

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

       ipvsadm -D -t|u|f service-address

       ipvsadm -C

       ipvsadm -R

       ipvsadm -S [-n]

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

               [-g|i|m] [-w weight] [-x upper] [-y lower]

       ipvsadm -d -t|u|f service-address -r server-address

       ipvsadm -L|l [options]

       ipvsadm -Z [-t|u|f service-address]

       ipvsadm --set tcp tcpfin udp

       ipvsadm --start-daemon state [--mcast-interface interface]

               [--syncid syncid]

       ipvsadm --stop-daemon state

       ipvsadm -h





集群服务相关





-A:添加一个集群服务

-t:tcp

-u:udp

-f: firewall make 通常应用于将两个或以上的服务绑定为一个服务进行处理时使用

service-address

 -t IP:port

 -u ip:port

 -f firewall_mark

    -s 调度算法,默认为wlc

    -p: timeout persistent connection 持久连接

-E:修改定义过的集群服务





-D -t|u|f service-address:删除指定的集群服务





RS相关





-a:向指定的CS中添加RS

-t|-u|-f service-address:指明将RS添加至那个Cluster Service 中





   -r:指定RS,可以包含{IP[:port]},只有支持端口映射的LVS类型才允许此处使用跟集群服务中不同的端口





   lvs类型:

    -g:Gateway,DR

    -i:ipip,TUN

    -m:masquerade(地址伪装),NAT

    默认为DR





  指定RS权重

  -w

  上限下限:

  -x:下限

  -y:上限





-e:修改指定的RS属性





-d  -t|u|f  service-address  -r  server-address:在指定的集群服务中删除一个指定的RS





情况所有的集群服务:

-C





保存规则(使用输出重定向):

ipvsadm-save

ipvaadm -S





载入指定的规则:(使用输入重定向)

ipvsadmin-restore

ipvasdm -R





查看ipvs规则等

  -L [options]

  -n 使用数字格式显示IP地址,不反解

  -c:查看连接数相关信息

  --stats:显示统计数据

  --rate:数据传输速率

  --timeout:显示tcp会话时长

  --daemon:守护进程的信息

  --sort:对虚拟服务进行排序,默认为升序

  --exact:精确显示,不做单位换算





-Z:计数器清零









LVS-DR模型

Director两个地址:VIP,DIP

RS有两个地址:VIP,RIP





禁止rs响应对BIP的ARP广播请求

1.在前端路由上实现静态MAC地址VIP的绑定

前提:得有路由器的配置权限

缺点:Directory故障转移时,无法更新此绑定

   2.arptables

    前提:在各RS在安装arptables程序i,并编写arptables规则

    缺点:依赖于独特功能的应用程序

   3.修改Linux内核参数

    前提:RS必须是Linux

    缺点:适用性差

    两个参数:

    arp_announce:定义通告模式

    arp_ignore:定义收到arp请求的响应模式

    配置专用路由,以使得响应报文首先通过VIP所篇日志的lo上的别名接口





    Linux的工作特性:IP地址是属于主机,而非特定网卡

LVS-DR配置架构根据其VIP与RIP是否在同一个网络内有两种情况





在Directory 和RS上配置VIP,要使用如下格式

ifconfig ALIAS VIP netmask 255.255.255.255 broadcast VIP





route add -host VIP dev 









LVS-DR的配置

 Director

  iptables -t filter -F

  ifconfig eth0:0 VIP netmask 255.255.255.255 broadcast VIP up

  route add -host VIP dev eth0:0





RS:

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

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

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

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





ifconfig lo:0 VIP netmask 255.255.255.255 broadcast VIP up

  route add -host VIP dev eth0:0





Director:

ipvsadm -A -t ip:port -s scheduler

ipvsadm -a -t ip:port -r rs1 -g

nat模型示例(虚拟机下):

dip和rip都在vmnet2上面

主服务器配置:


ifconfig eth0:0 192.168.8.41/24



开启路由间转发功能

# vim /etc/sysctl.conf 

# sysctl -p







测试配置:

# ipconfig eth0 172.16.10.10/24 up

# route add default 172.16.10.1





在两个dip服务器上分别安装web服务,并测试是否联通





创建lvs nat模型

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





添加调度服务器

# ipvsadm -a -t 192.168.8.41:80 -r 172.16.10.10 -m

# ipvsadm -a -t 192.168.8.41:80 -r 172.16.10.20 -m





显示列表

# ipvsadm -L -n





# ipvsadm -L -nc

# ipvsadm -L -n --rate

# ipvsadm -L -n --stats

清空计数器

# ipvsadm -Z





修改lvs服务器的调度算法为wrr(权重)

# ipvsadm -E -t 192.168.8.41:80 -s wrr

修改其中之一权重为3

# ipvsadm -e -t 192.168.8.41:80 -r 172.16.10.10 -m -w 3





通过

/var/log/httpd/access_log可以查看访问的客户端IP地址

实例二:(真实的服务器充当vip服务器)

网络环境概述:

VIP服务器有两块网卡:

EM1(IP:192.168.8.68)

EM2(IP:192.168.8.70)

192.168.8.68的8888号端口通过路由映射到外网的183.239.143.212 8888 号端口





VIP:183.239.143.212:8888

DIP:192.168.8.70

RIP1:192.168.8.40

RIP1:192.168.8.20





主服务器配置:

em1:192.168.8.68

em2:192.168.8.70





# vim /etc/sysctl.conf





# Controls IP packet forwarding

net.ipv4.ip_forward = 1

# sysctl -p





rip1和rip2配置好web服务器端口为8888,并且将网关指向192.168.8.70





# ipvsadm -A -t 183.239.143.212:8888 -s rr

# ipvsadm -a -t 183.239.143.212:8888 -r 192.168.8.40 -m

# ipvsadm -a -t 183.239.143.212:8888 -r 192.168.8.20 -m

该方案是失败的,将183.239.143.212:8888更改为192.168.8.68:8888后可以成功

# ipvsadm -A -t 192.168.8.68:8888 -s rr

# ipvsadm -a -t 192.168.8.68:8888 -r 192.168.8.40 -m

# ipvsadm -a -t 192.168.8.68:8888 -r 192.168.8.20 -m

通过访问

http://183.239.143.212:8888/

http://192.168.8.68:8888

都可以访问网站

lvs基本概念、调度方法、ipvsadm命令及nat模型示例的更多相关文章

  1. centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课

    centos   LB负载均衡集群 三种模式区别 LVS/NAT 配置  LVS/DR 配置  LVS/DR + keepalived配置  nginx ip_hash 实现长连接  LVS是四层LB ...

  2. 3、lvs调度方法详解

    3.lvs类型和调度方法详解    http://www.178linux.com/13570 集群:将多台主机组织起来满足某一特定需求: 集群类型: LB:Load Balancing, 负载均衡集 ...

  3. [转帖]ipvsadm命令参考及其应用例子

    ipvsadm命令参考及其应用例子 https://blog.csdn.net/orichisonic/article/details/47375227 只是简单创建了 service和添加serve ...

  4. ipvsadm命令介绍

    为了更好的让大家理解这份命令手册,将手册里面用到的几个术语先简单的介绍一下: 1,virtual-service-address:是指虚拟服务器的ip 地址 2,real-service-addres ...

  5. LVS集群ipvsadm命令和调度算法(6)

    一.ipvsadm命令参考 为了更好的让大家理解这份命令手册,将手册里面用到的几个术语先简单的介绍一下: 术语解释: 1.virtual-service-address:是指虚拟服务器的ip地址2.r ...

  6. ipvsadm命令使用方法

    由于LVS(IPVS)是工作在内核空间的,因此要在用户空间对其进行配置和管理就要用到ipvsadm,ipvsadm是LVS在用户空间的管理命令. 一般在安装linux(CentOS6.5)时该命令是为 ...

  7. 应用负载均衡之LVS(三):ipvsadm命令

    */ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...

  8. LVS集群的ipvsadm命令用法

    准备一台Linux服务器,安装ipvsadm软件包,练习使用ipvsadm命令,实现如下功能: - 使用命令添加基于TCP一些的集群服务 - 在集群中添加若干台后端真实服务器 - 实现同一客户端访问, ...

  9. 负载均衡集群ipvsadm命令及基本用法

    ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置.需要使用yum单独安装. 基本用法: ipvsadm COMMAND [protocol] service-addre ...

随机推荐

  1. c c++ 混合编译

    单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: 1 2 3 4 5 6 7 8 9 /* helloworld.cpp */    # ...

  2. Luogu 1084 NOIP2012 疫情控制 (二分,贪心,倍增)

    Luogu 1084 NOIP2012 疫情控制 (二分,贪心,倍增) Description H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树, 1 号城市是首都, 也是 ...

  3. Luogu 1437 [HNOI2004]敲砖块 (动态规划)

    Luogu 1437 [HNOI2004]敲砖块 (动态规划) Description 在一个凹槽中放置了 n 层砖块.最上面的一层有n块砖,从上到下每层依次减少一块砖.每块砖都有一个分值,敲掉这块砖 ...

  4. Linux运行Java出现“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”报错

    在运行如下程序时出现“Exception in thread "main" java.lang.OutOfMemoryError: Java heap space”报错: java ...

  5. MATLAB运行edge函数闪退

    出现这种问题时,先检查代码有没有问题,换一张图片是不是也有闪退情况. 如果以上都检查过没问题,还是有闪退现象,那就检查MATLAB的版本是不是太低了,比如r2010a版本运行edge函数时,就经常出现 ...

  6. Java逐行写入字符串到文件

    下边是写东西到一个文件中的Java代码.运行后每一次,一个新的文件被创建,并且之前一个也将会被新的文件替代.这和给文件追加内容是不同的. 1. public static void writeFile ...

  7. 面向对象【day07】:类的实例化过程剖析(三)

    本节内容 1.概述 2.类的语法 3.总结 一.概述 之前我们说关于python中的类,都一脸懵逼,都想说,类这么牛逼到底是什么,什么才是类?下面我们就来讲讲,什么是类?它具有哪些特性. 二.类的语法 ...

  8. 数据结构(六)查找---多路查找树(B树)

    B 树 B树与B+树 一:定义 B树(B-树)是一种平衡的多路查找树.-3树和2--4树都是B树的特例.节点最大的孩子数组称为B树的阶(order),因此,-3树是3阶B树,--4树是4阶B树. 二: ...

  9. Java NIO 机制分析(一) Java IO的演进

    一.引言 Java1.4之前的早期版本,Java对I/O的支持并不完善,开发人员再开发高性能I/O程序的时候,会面临一些巨大的挑战和困难,主要有以下一些问题: (1)没有数据缓冲区,I/O性能存在问题 ...

  10. 用贪心算法近似求解 Loading Balance 问题(作业调度的负载均衡)

    一,Loading Balance 问题描述:有 m 台相同的机器及 n 个作业,其中 m={M(1),M(2),……M(m)}.n = {J(1),J(2),……J(n)}.每个作业都有一个处理时间 ...