ipvsadm是LVS在应用层的管理命令,我们可以通过这个命令去管理LVS的配置。需要使用yum单独安装。

基本用法:

ipvsadm COMMAND [protocol] service-address
               [scheduling-method] [persistence options]
ipvsadm command [protocol] service-address
               server-address [packet-forwarding-method]
               [weight options]
 
    第一条命令用于向LVS系统中添加一个用于负载均衡的virtual server(VS);第二条命令用来修改已经存在的VS的配置,service address用来指定涉及的虚拟服务即虚拟地址,server-address指定涉及的真实地址。
 
命令:
    -A, --add-service:为ipvs虚拟服务器添加一个虚拟服务,即添加一个需要被负载均衡的虚拟地址。虚拟地址需要是ip地址,端口号,协议的形式。
    -E, --edit-service:修改一个虚拟服务。
    -D, --delete-service:删除一个虚拟服务。
    -C, --clear:清除所有虚拟服务。
    -R, --restore:从标准输入获取ipvsadm命令。一般结合下边的-S使用。
    -S, --save:从标准输出输出虚拟服务器的规则。可以将虚拟服务器的规则保存,在以后通过-R直接读入,以实现自动化配置。
    -a, --add-server:为虚拟服务添加一个real server(RS)
    -e, --edit-server:修改RS
    -d, --delete-server:删除
    -L, -l, --list:列出虚拟服务表中的所有虚拟服务。可以指定地址。添加-c显示连接表。
    -Z, --zero:将所有数据相关的记录清零。这些记录一般用于调度策略。
    --set tcp tcpfin udp:修改协议的超时时间。
    --start-daemon state:设置虚拟服务器的备服务器,用来实现主备服务器冗余。(注:该功能只支持ipv4)
    --stop-daemon:停止备服务器。
    -h, --help:帮助。
 
参数:
    以下参数可以接在上边的命令后边。
    -t, --tcp-service service-address:指定虚拟服务为tcp服务。service-address要是host[:port]的形式。端口是0表示任意端口。如果需要将端口设置为0,还需要加上-p选项(持久连接)。
    -u, --udp-service service-address:使用udp服务,其他同上。
    -f, --fwmark-service integer:用firewall mark取代虚拟地址来指定要被负载均衡的数据包,可以通过这个命令实现把不同地址、端口的虚拟地址整合成一个虚拟服务,可以让虚拟服务器同时截获处理去往多个不同地址的数据包。fwmark可以通过iptables命令指定。如果用在ipv6需要加上-6。
    -s, --scheduler scheduling-method:指定调度算法。调度算法可以指定以下8种:rr(轮询),wrr(权重),lc(最后连接),wlc(权重),lblc(本地最后连接),lblcr(带复制的本地最后连接),dh(目的地址哈希),sh(源地址哈希),sed(最小期望延迟),nq(永不排队)
    -p, --persistent [timeout]:设置持久连接,这个模式可以使来自客户的多个请求被送到同一个真实服务器,通常用于ftp或者ssl中。
    -M, --netmask netmask:指定客户地址的子网掩码。用于将同属一个子网的客户的请求转发到相同服务器。
    -r, --real-server server-address:为虚拟服务指定数据可以转发到的真实服务器的地址。可以添加端口号。如果没有指定端口号,则等效于使用虚拟地址的端口号。
    [packet-forwarding-method]:此选项指定某个真实服务器所使用的数据转发模式。需要对每个真实服务器分别指定模式。
        -g, --gatewaying:使用网关(即直接路由),此模式是默认模式。
        -i, --ipip:使用ipip隧道模式。
        -m, --masquerading:使用NAT模式。
    -w, --weight weight:设置权重。权重是0~65535的整数。如果将某个真实服务器的权重设置为0,那么它不会收到新的连接,但是已有连接还会继续维持(这点和直接把某个真实服务器删除时不同的)。
    -x, --u-threshold uthreshold:设置一个服务器可以维持的连接上限。0~65535。设置为0表示没有上限。
    -y, --l-threshold lthreshold:设置一个服务器的连接下限。当服务器的连接数低于此值的时候服务器才可以重新接收连接。如果此值未设置,则当服务器的连接数连续三次低于uthreshold时服务器才可以接收到新的连接。(PS:笔者以为此设定可能是为了防止服务器在能否接收连接这两个状态上频繁变换)
    --mcast-interface interface:指定使用备服务器时候的广播接口。
    --syncid syncid:指定syncid,同样用于主备服务器的同步。
    以下选项用于list命令:
    -c, --connection:列出当前的IPVS连接。
    --timeout:列出超时
    --daemon:
    --stats:状态信息
    --rate:传输速率
    --thresholds:列出阈值
    --persistent-conn:坚持连接
    --sor:把列表排序。
    --nosort:不排序
    -n, --numeric:不对ip地址进行dns查询
    --exact:单位
    -6:如果fwmark用的是ipv6地址需要指定此选项。    
    
其他注意事项
    如果使用IPv6地址,需要在地址两端加上”【】“。例如:ipvsadm -A -t [2001:db8::80]:80 -s rr
    可以通过设置以下虚拟文件的值来防御DoS攻击:/proc/sys/net/ipv4/vs/drop_entry /proc/sys/net/ipv4/vs/drop_packet /proc/sys/net/ipv4/vs/secure_tcp
 
例子:
1.使用NAT模式
添加地址为207.175.44.110:80的虚拟服务,指定调度算法为轮转。
ipvsadm -A -t 207.175.44.110:80 -s rr
添加真实服务器,指定传输模式为NAT
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.1:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.2:80 -m
ipvsadm -a -t 207.175.44.110:80 -r 192.168.10.3:80 -m
NAT模式是lvs的三种模式中最简单的一种。此种模式下只需要保证调度服务器与真实服务器互通就可以运行。
2.使用DR模式
对于DR模式首先要配置真实服务器:
对于每台真实服务器要进行以下操作:
1、设置真实服务器的lo接口不做ARP应答
echo 1 > /proc/sys/net/ipv4/conf/all/arg_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arg_ignore
设置这个选项可以使得各个接口只对本接口上的地址进行响应
还需要设置arp_announce选项为2,设置方法同上
2、在真实服务器上添加虚拟IP
ifconfig lo:0 192.168.10.10 boradcast 207.175.44.110 netmask 255.255.255.255
ip r add 192.168.10.10 dev lo
接着添加ipvs规则:
添加地址为192.168.10.10:80的虚拟服务,指定调度算法为轮转。
ipvsadm -A -t 192.168.10.10:80 -s rr
添加真实服务器,指定传输模式为DR
ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.1:80 -g
ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.2:80 -g
ipvsadm -a -t 192.168.10.10:80 -r 192.168.10.3:80 -g
注意:此处的例子中客户、调度服务器、真实服务器都是位于同一网段的
 

固定调度

rr:论调

wrr:加权论调
weight,加权

sh:source hash ,源地址hash

动态调度
lc:最少链接
active*256+inactive
wlc:加权最少链接
(active*256+inactive)/weight
sed:最短期望延迟
(active+1)*256/weight
nq:never queue (永不排队)

LBLC:基于本地的最少链接
LBLCR:基于本地的带复制功能的最少链接

————
lvs

ipvsadm:管理集群服务的命令行工具
管理集群服务
添加:-A -t|u|f service-address[-s sheduler ]
{ -t:TCP协议集群
-u:UDP协议集群} service-address: IP:PORT(套接字)
-f:FWM:防火墙标记
service-address : Mark Number
修改: -E 
删除: -D -t|u|f service-address
管理机器服务中心的RS
添加:-a -t|u|f service-address -r server-address [-g|i|m] [-w weight ]
-t|u|f service-address:事前定义好的某集群服务
-r server-address :某RS的地址,在NAT模型中;可使用IP:PORT实现端口映射:
[-g|i|m]:lvs类型
-g:DR
-i:TUN
-m:NAT 
[-w weight ]:定义权重
修改:-e
删除:-d -t|u|f serrvice address -r service-add
# ipvsadm -a -t xx.xx.xx.xx:80 -r xx.xx.xx.xx -m

查看
-L|l
-n:数字格式显示IP地址和端口号
--stats:统计信息
--rate:速率
--timeout:显示TCP/TCPFIN/UDP的会话超时时长
--sort:排序
-c:显示当前IPVS的链接状态

-Z:清空计数器
-C:清空ipvs规则
-S:使用输出重定向进行规则保存
# ipvsadm -S > /../..
-R:使用输入重定向载入规则
# ipvsadm -R < /../..

1. 查看lvs的连接状态命令: ipvsadm  -l  --stats

说明:

1. Conns    (connections scheduled)  已经转发过的连接数
2. InPkts   (incoming packets)       入包个数
3. OutPkts  (outgoing packets)       出包个数
4. InBytes  (incoming bytes)         入流量(字节)  
5. OutBytes (outgoing bytes)         出流量(字节)

2. 查看lvs速率  :ipvsadm   -l  --rate

说明:

1. CPS      (current connection rate)   每秒连接数
2. InPPS    (current in packet rate)    每秒的入包个数
3. OutPPS   (current out packet rate)   每秒的出包个数
4. InBPS    (current in byte rate)      每秒入流量(字节)
5. OutBPS   (current out byte rate)      每秒入流量(字节)

由于LVS像iptable一样是工作在内核层,所以只需要安装模块ip_vs就可以了,并没有后台进程在跑。对应lvs主机三种方式分别用参数-m, -i, -g来实现。以下列举几种链接方式的配置方法:

1.NAT方式:

NAT配置方式最简单,只需要在LVS主机上配置就可以了,如下例子:

设置VIP主机:

ipvsadm -A -t 202.103.106.5:80 -s wlc

ipvsadm -A -t 202.103.106.5:21 -s wrr

ipvsadm -a -t 202.103.106.5:80 -r 172.16.0.2:80 -m

ipvsadm -a -t 202.103.106.5:80 -r 172.16.0.3:8000 -m -w 2

ipvsadm -a -t 202.103.106.5:21 -r 172.16.0.2:21 -m

2.TUN方式:

对LVS主机设置:

设置VIP主机:

ipvsadm -A -t 172.26.20.110:23 -s wlc
ipvsadm -a -t 172.26.20.110:23 -r 172.26.20.112 -i

对每台real主机的设置:

echo 1 > /proc/sys/net/ipv4/ip_forward
#加载ipip模块
modprobe ipip
ifconfig tunl0 0.0.0.0 up
echo 1 > /proc/sys/net/ipv4/conf/all/hidden
echo 1 > /proc/sys/net/ipv4/conf/tunl0/hidden
ifconfig tunl0 172.26.20.110 netmask 255.255.255.255 broadcast 172.26.20.110 up

负载均衡集群ipvsadm命令及基本用法的更多相关文章

  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. LVS+Keepalived搭建MyCAT高可用负载均衡集群

    LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国 ...

  3. 通过LVS+Keepalived搭建高可用的负载均衡集群系统

    1. 安装LVS软件      (1)安装前准备操作系统:统一采用Centos6.5版本,地址规划如下: 服务器名 IP地址 网关 虚拟设备名 虚拟ip Director Server 192.168 ...

  4. LVS负载均衡集群服务搭建详解(二)

    lvs-nat模型构建 1.lvs-nat模型示意图 本次构建的lvs-nat模型的示意图如下,其中所有的服务器和测试客户端均使用VMware虚拟机模拟,所使用的CentOS 7 VS内核都支持ipv ...

  5. LVS负载均衡集群服务搭建详解(一)

    LVS概述 1.LVS:Linux Virtual Server 四层交换(路由):根据请求报文的目标IP和目标PORT将其转发至后端主机集群中的某台服务器(根据调度算法): 不能够实现应用层的负载均 ...

  6. 高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群

    高性能Linux服务器 第11章 构建高可用的LVS负载均衡集群 libnet软件包<-依赖-heartbeat(包含ldirectord插件(需要perl-MailTools的rpm包)) l ...

  7. LB负载均衡集群及NAT模式配置

    一.LB(load balance)负载均衡集群 负载均衡集群常用的有: 1.软件实现的 nginx(工作在OSI第七层应用层) lvs+keepalived(工作在OSI第四层传输层) 2.硬件实现 ...

  8. 负载均衡集群企业级应用实战—LVS

    一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...

  9. 实现基于LVS负载均衡集群的电商网站架构

    背景 上一期我们搭建了小米网站,随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢,面对此场景,单纯靠单台LNMP的架构已经无法 ...

随机推荐

  1. python 糗事百科实例

    爬取糗事百科段子,假设页面的URL是 http://www.qiushibaike.com/8hr/page/1 要求: 使用requests获取页面信息,用XPath / re 做数据提取 获取每个 ...

  2. .NET学习笔记(1)

    把 DataSet 绑定到 Repeater 控件 Repeater 控件用于显示重复的项目列表,这些项目被限制在该控件.Repeater 控件可被绑定到数据库表.XML 文件或者其他项目列表. 获取 ...

  3. DMSFrame 之查询表达式用法(一)

    where条件 WhereClip<Adm_User> where = new WhereClip<Adm_User>(q => q.DeleteFlag == fals ...

  4. gibhub上搭建个人静态网站介绍

    之前学习过git的基本命令.今天介绍一下github上搭建个人网站的步骤. 在window系统上搭建gibhub个人网站(只能执行html.css和js文件),这就是纯静态页面. 步骤一:注册gith ...

  5. js ie 6,7,8 使用不了 firstElementChild

    一. <div> <p>123</p> </div> 在上面这段代码中,如果使用以下js代码 var oDiv=document.getElementB ...

  6. Node.js 入门 资源

    Node.js 入门 <快速搭建 Node.js 开发环境以及加速 npm> http://fengmk2.com/blog/2014/03/node-env-and-faster-npm ...

  7. 《Node.js入门》CentOS 6.5下Node.js Web开发环境搭建笔记

    近期想尝试一下英特尔的基于WebRTC协同通信开发套件,所以须要在本地搭建Node.js Web的开发測试环境. 这里讲的是CentOS 下的搭建方法.使用Windows的小伙伴请參考: <No ...

  8. [USACO5.5]隐藏口令Hidden Password

    题目链接:传送门 题目大意:给你一个长度 N 的字符串,5<=N<=5,000,000,将首尾合并成环,断环成链并满足字典序最小,输出此时首字母在原串中的位置-1: 题目思路:最小表示法 ...

  9. Django Signal 代码布局

    需要确保信号注册函数在使用前就被引入,所以理论上你可以将其置于满足上述条件的任意位置. 官方推荐 将信号处理器定义在关联 app 目录下的 signals.py 中,在关联 app 的 apps.Ap ...

  10. django 表单系统 之 forms.ModelForm

    继承forms.ModelForm类实现django的表单系统 有时,我们在前端定义的<form>表单和后端定义的model结构基本上是一样的,那么我们可以直接在后端定义model后,定义 ...