lvs基本概念、调度方法、ipvsadm命令及nat模型示例
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模型示例的更多相关文章
- 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 ...
- 3、lvs调度方法详解
3.lvs类型和调度方法详解 http://www.178linux.com/13570 集群:将多台主机组织起来满足某一特定需求: 集群类型: LB:Load Balancing, 负载均衡集 ...
- [转帖]ipvsadm命令参考及其应用例子
ipvsadm命令参考及其应用例子 https://blog.csdn.net/orichisonic/article/details/47375227 只是简单创建了 service和添加serve ...
- ipvsadm命令介绍
为了更好的让大家理解这份命令手册,将手册里面用到的几个术语先简单的介绍一下: 1,virtual-service-address:是指虚拟服务器的ip 地址 2,real-service-addres ...
- LVS集群ipvsadm命令和调度算法(6)
一.ipvsadm命令参考 为了更好的让大家理解这份命令手册,将手册里面用到的几个术语先简单的介绍一下: 术语解释: 1.virtual-service-address:是指虚拟服务器的ip地址2.r ...
- ipvsadm命令使用方法
由于LVS(IPVS)是工作在内核空间的,因此要在用户空间对其进行配置和管理就要用到ipvsadm,ipvsadm是LVS在用户空间的管理命令. 一般在安装linux(CentOS6.5)时该命令是为 ...
- 应用负载均衡之LVS(三):ipvsadm命令
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
- LVS集群的ipvsadm命令用法
准备一台Linux服务器,安装ipvsadm软件包,练习使用ipvsadm命令,实现如下功能: - 使用命令添加基于TCP一些的集群服务 - 在集群中添加若干台后端真实服务器 - 实现同一客户端访问, ...
- 负载均衡集群ipvsadm命令及基本用法
ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置.需要使用yum单独安装. 基本用法: ipvsadm COMMAND [protocol] service-addre ...
随机推荐
- Java中由常量类引发的思考
我们都知道,定义一个常量类是十分简单的.首先差固件一个类,然后类中声明一些public修饰的静态常量.没错就这么简单: 写好之后,在其他地方使用的时候,直接类名.属性名就可以使用了. 而LZ现在想的是 ...
- 洛谷 P3956 棋盘(BFS)
传送门:Problem P3956 https://www.cnblogs.com/violet-acmer/p/9827010.html 题解: BFS 相关变量解释: color[maxn][ma ...
- vuejs怎么在服务器部署?(知乎)
作者:知乎用户链接:https://www.zhihu.com/question/46630687/answer/157166318来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请 ...
- php 开启 opcache 之后 require、include 还会每次都重新加载文件吗?
当前目录有以下两个文件 index.php <?php var_dump(require 'A.php'); A.php <?php return 123; 接着运行: php -S 0. ...
- Arraylist集合遍历输出
题目:创建一个只能容纳String对象名为names的Arraylist集合,按顺序向集合中添加5个字符串对象.对集合进行遍历,打印出集合中每个元素的位置与内容.首先打印出集合的大小,然后删除集合中的 ...
- Python Machine Learning-Chapter4
Chapter4 Building Good Training Sets – Data Preprocessing 4.1 Dealing with missing data 如何判断数据框内的数据是 ...
- python 压缩文件为zip后删除原文件
压缩.log 文件为zip后删除原文件 需要注意:本人作为小白,该脚本需要和.log在一起,后面有时间需要改正. #!/usr/local/python/bin/python #-*-coding=u ...
- JavaScript Array() 对象:push() 和 join() 方法
<script> var fruits = ["Banana", "Orange", "Apple", "Mango& ...
- Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper
本文用的是maven,idea15 Mabatis三剑客分别是:mybatis-generator.mybatis-plugin.mybatis-pagehelper 一.mybatis-genera ...
- Java中 break continue return 的区别
1.break break :跳出当前循环:但是如果是嵌套循环,则只能跳出当前的这一层循环,只有逐层break才能跳出所有循环: ; i < ; i++) { ) { break; // 在执行 ...