ipvsadm命令是工作在用户空间的LVS集群管理工具,原理是调用ipvs的API,在内核中生成ipvs的规则,主要用来管理集群服务和集群服务中的RealServer,使用方法类似iptables命令,但远没有iptables命令复杂,如果你熟练使用iptables命令,那使用ipvsadm就会得心应手了。好了,言归正传,系统中默认没有安装该命令,使用yum方式进行安装,安装命令如下:

  1. [root@lvs-server ~]# yum install -y ipvsadm

在介绍LVS理论时,用了大部分的篇章讲解LVS四种模型和调度算法,当使用ipvsadm命令时,也要指明使用LVS哪一种模型和调度算法。需要注意的是,一个LVS主机可以定义多个集群服务,一个集群服务中至少有一台RealServer,RealServer只能添加到已经定义的集群服务中。

一、ipvsadm命令格式

1. 管理集群服务的命令

  1. 添加集群服务:ipvsadm -A  -t|u|f service-address [-s scheduler]
  2. 修改集群服务:ipvsadm -E  -t|u|f service-address [-s scheduler]
  3. 删除集群服务:ipvsadm -D  -t|u|f service-address

2. 管理RealServer的命令

  1. 添加RS到集群服务:ipvsadm -a -t|u|f service-address -r server-address [options]
  2. 修改集群服务的RS:ipvsadm -e -t|u|f service-address -r server-address [options]
  3. 删除集群服务的RS:ipvsadm -d -t|u|f service-address -r server-address

3. 查看命令

  1. 查看所有规则:ipvsadm -L|l [options]
  2. options包括:--numeric|--connection|--timeout|--daemon|--stats|--rate|--exact|--persistent-conn

4. 清空、保存和重载命令

  1. 清空所有规则:ipvsadm -C
  2. 保存所有规则:ipvsadm -S [-n]
  3. 重载所有规则:ipvsadm -R

5. 其他命令

  1. 置零计数器:ipvsadm -Z [-t|u|f service-address]
  2. 设置连接超时值:ipvsadm --set tcp tcpfin udp,默认值分别为:900 120 300

二、ipvsadm命令信息

三、ipsvadm选项信息

四、LVS-NAT模式实验

上面介绍了ipvsadm命令的格式和常用选项,现在进行实际操作,来熟悉ipvsadm命令的常用配置,准备三台服务器,用来演示LVS-NAT模式,拓扑结构如下:

详细配置如下:

要求:

(1)lvs-node1与lvs-node2提供http服务,服务端口分别为80和8080;

(2)lvs-node1与lvs-node2网关指向lvs-server的DIP;

(3)lvs-server使用rr算法进行调度;

(4)在进行实验时,先关闭iptables;

(5)lvs-server需要开启核心转发;

实验开始:

关闭iptables和selinux(这里只是临时关闭了selinux,永久关闭需要修改配置文件)

  1. [root@lvs-server ~]# service iptables stop
  2. iptables:将链设置为政策 ACCEPT:filter                       [确定]
  3. iptables:清除防火墙规则:                                           [确定]
  4. iptables:正在卸载模块:                                              [确定]
  5. [root@lvs-server ~]# setenforce 0
  6. setenforce: SELinux is disabled

开启lvs-server的核心转发功能

  1. [root@lvs-server ~]# sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf
  2. [root@lvs-server ~]# cat /etc/sysctl.conf |grep ip_forward
  3. net.ipv4.ip_forward = 1
  4. #使修改的核心转发参数生效
  5. [root@lvs-server ~]# sysctl -p
  6. net.ipv4.ip_forward = 1
  7. net.ipv4.conf.default.rp_filter = 1
  8. net.ipv4.conf.default.accept_source_route = 0
  9. kernel.sysrq = 0
  10. kernel.core_uses_pid = 1
  11. net.ipv4.tcp_syncookies = 1
  12. kernel.msgmnb = 65536
  13. kernel.msgmax = 65536
  14. kernel.shmmax = 68719476736
  15. kernel.shmall = 4294967296

在lvs-node1和lvs-node2上安装并配置httpd,可在lvs-server上使用如下命令测试是否可以正常访问

  1. [root@lvs-server ~]# curl http://192.168.1.51
  2. lvs-node1 port:80
  3. [root@lvs-server ~]# curl http://192.168.1.52:8080
  4. lvs-node2 port:8080

现在万事具备,只欠规则了,使用ipvsadm命令添加一个集群服务,然后将后端提供http服务的两台RealServer加入到新添加的集群服务中

  1. #定义一个集群服务10.0.0.50:80,指定调度算法为rr
  2. [root@lvs-server ~]# ipvsadm -A -t 10.0.0.50:80 -s rr
  3. #将后端两台RealServer192.168.1.51和192.168.1.52:8080添加到集群服务10.0.0.50:80中,由于使用的是LVS-NAT模式,所以需要指定-m选项,-m代表NAT模式。
  4. [root@lvs-server ~]# ipvsadm -a -t 10.0.0.50:80 -r 192.168.1.51 -m
  5. [root@lvs-server ~]# ipvsadm -a -t 10.0.0.50:80 -r 192.168.1.52:8080 -m
  6. #查看管理中的规则
  7. [root@lvs-server ~]# ipvsadm -L -n
  8. IP Virtual Server version 1.2.1 (size=4096)
  9. Prot LocalAddress:Port Scheduler Flags
  10. -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  11. TCP  10.0.0.50:80 rr
  12. -> 192.168.1.51:80                    Masq        1           0                0
  13. -> 192.168.1.52:8080                Masq        1           0                0
  14. 这里是将后端两台RealServer映射给了lvs-server的外网IP,访问lvs-server外网IP的80端口时,lvs-server会将请求调度给后端两台RealServer。

如果你的物理机可以直接访问lvs-server的外网地址,用浏览器就可以体验LVS的轮循效果,反之用curl命令也可以查看效果

  1. #使用两次curl命令查看效果
  2. [root@lvs-server ~]# curl http://10.0.0.50
  3. lvs-node1 port:80
  4. [root@lvs-server ~]# curl http://10.0.0.50
  5. lvs-node2 port:8080
  6. #使用组合循环命令查看效果,每秒访问一次
  7. [root@lvs-server ~]# for i in seq 500 ;do sleep 1;curl http://10.0.0.50 ;done;
  8. lvs-node1 port:80
  9. lvs-node2 port:8080
  10. lvs-node1 port:80
  11. lvs-node2 port:8080

至此,LVS-NAT模式实验已经成功完成,但在实验中使用的ipvsadm命令并不多,只用来创建了集群服务,向集群服务中添加RealServer。接下来,以此实验为基础进行其它命令选项的演示。

查看添加的规则

  1. [root@lvs-server ~]# ipvsadm -Ln
  2. IP Virtual Server version 1.2.1 (size=4096)
  3. Prot LocalAddress:Port Scheduler Flags
  4. -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  5. TCP  10.0.0.50:80 rr
  6. -> 192.168.1.51:80                     Masq        1            0               0
  7. -> 192.168.1.52:8080                 Masq        1            0               0
  8. Forward :转发方式
  9. Weight:权重
  10. ActiveConn:活动连接数
  11. InActConn:非活动连接数

查看当前的IPVS连接

  1. [root@lvs-server ~]# ipvsadm -Ln  -c
  2. IPVS connection entries
  3. pro expire state       source             virtual            destination
  4. TCP 01:25  TIME_WAIT   10.0.0.50:44765    10.0.0.50:80       192.168.1.52:8080
  5. TCP 01:28  TIME_WAIT   10.0.0.50:44768    10.0.0.50:80       192.168.1.51:80
  6. TCP 01:37  TIME_WAIT   10.0.0.50:44777    10.0.0.50:80       192.168.1.52:8080
  7. TCP 00:00  TIME_WAIT   10.0.0.50:44760    10.0.0.50:80       192.168.1.51:80
  8. pro:协议
  9. expire:还有多长时间过期
  10. state:TCP状态
  11. source:源地址:随机端口
  12. virtual:虚拟集群服务
  13. destination:被lvs-server调度到的RealServer

查看连接的超时时间

  1. [root@lvs-server ~]# ipvsadm -Ln --timeout
  2. Timeout (tcp tcpfin udp): 900 120 300

查看自规则生效以来的ipvs统计信息

  1. [root@lvs-server ~]# ipvsadm -Ln --stats
  2. IP Virtual Server version 1.2.1 (size=4096)
  3. Prot LocalAddress:Port               Conns   InPkts  OutPkts  InBytes OutBytes
  4. -> RemoteAddress:Port
  5. TCP  10.0.0.50:80                         256     1384     1277   120316   140583
  6. -> 192.168.1.51:80                    128      699      639    60507    70060
  7. -> 192.168.1.52:8080                128      685      638    59809    70523
  8. Conns:已经转发过的连接数
  9. InPkts:流入包个数
  10. OutPkts:流出包个数
  11. InBytes:进入流量(字节)
  12. OutBytes:流出流量(字节)

查看速率信息

  1. [root@lvs-server ~]# ipvsadm -Ln --rate
  2. IP Virtual Server version 1.2.1 (size=4096)
  3. Prot LocalAddress:Port                 CPS    InPPS   OutPPS    InBPS   OutBPS
  4. -> RemoteAddress:Port
  5. TCP  10.0.0.50:80                             1        5           5           449       550
  6. -> 192.168.1.51:80                       0         3           2           228       275
  7. -> 192.168.1.52:8080                   0         3           2           221       275
  8. CPS:每秒的连接数
  9. InPPS:每秒流入包个数
  10. OutPPS:每秒流出包个数
  11. InBPS:每秒进入流量(字节)
  12. OutBPS:每秒流出流量(字节)

删除集群服务10.0.0.50:80中的RealServer192.168.1.51:80

  1. [root@lvs-server ~]# ipvsadm -d -t 10.0.0.50:80 -r 192.168.1.51:80
  2. [root@lvs-server ~]# ipvsadm -Ln
  3. IP Virtual Server version 1.2.1 (size=4096)
  4. Prot LocalAddress:Port Scheduler Flags
  5. -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  6. TCP  10.0.0.50:80 rr
  7. -> 192.168.1.52:8080                   Masq      1            0                0

在配置完规则之后需要保存和重载,规则保存在/etc/sysconfig/ipvsadm文件中

  1. #保存ipvsadm规则至/etc/sysconfig/ipvsadm文件中
  2. [root@lvs-server ~]# ipvsadm -S >/etc/sysconfig/ipvsadm
  3. [root@lvs-server ~]# cat /etc/sysconfig/ipvsadm
  4. -A -t 10.0.0.50:http -s rr
  5. -a -t 10.0.0.50:http -r 192.168.1.52:webcache -m -w 1
  6. #清空所有规则
  7. [root@lvs-server ~]# ipvsadm -C
  8. [root@lvs-server ~]# ipvsadm -Ln
  9. IP Virtual Server version 1.2.1 (size=4096)
  10. Prot LocalAddress:Port Scheduler Flags
  11. -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  12. #从文件中重载所有规则
  13. [root@lvs-server ~]# ipvsadm -R </etc/sysconfig/ipvsadm
  14. [root@lvs-server ~]# ipvsadm -Ln
  15. IP Virtual Server version 1.2.1 (size=4096)
  16. Prot LocalAddress:Port Scheduler Flags
  17. -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  18. TCP  10.0.0.50:80 rr
  19. -> 192.168.1.52:8080                  Masq        1            0                0

修改集群服务10.0.0.50:80中的调度算法为sh

  1. [root@lvs-server ~]# ipvsadm -E -t 10.0.0.50:80 -s sh
  2. [root@lvs-server ~]# ipvsadm -Ln
  3. IP Virtual Server version 1.2.1 (size=4096)
  4. Prot LocalAddress:Port Scheduler Flags
  5. -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
  6. TCP  10.0.0.50:80 sh
  7. -> 192.168.1.52:8080                  Masq       1             0               0

修改集群服务10.0.0.50:80中的RealServer192.168.1.52映射端口为8081(因为没有监听8081端口,所以该命令会不生效)

  1. [root@lvs-server ~]# ipvsadm -e -t 10.0.0.50:80 -r 192.168.1.52:8081 -m

LVS管理工具ipvsadm详解与LVS-NAT模式演示的更多相关文章

  1. Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区

    Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区 Lua包管理工具Luarocks详解

  2. LVS管理工具--ipvsadm

    一. ipvsadm工具介绍 从2.4版本开始,linux内核默认支持LVS.要使用LVS的能力,只需安装一个LVS的管理工具:ipvsadm. LVS的结构主要分为两部分: 工作在内核空间的IPVS ...

  3. Python包管理工具setuptools详解及entry point

    1.什么是setuptools? setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的.用户在使用setuptool ...

  4. lvs keepalived 安装配置详解【转】

    lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...

  5. 项目详解2—LVS负载均衡详解

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

  6. scribefire 多博客管理利器 安装详解

    scribefire 多博客管理利器 安装详解 一.ScribeFire介绍 ScribeFire 是 Firefox (火狐浏览器)上著名的博客写作工具,目前已跨平台支持多浏览器(Firefox,C ...

  7. IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)

    来源: http://www.cnblogs.com/JustinYoung/archive/2009/04/03/kaifarenyuangongju2.html 在上一篇文章IE8“开发人员工具” ...

  8. IE8“开发人员工具”使用详解上(各级菜单详解)

    来源: http://www.cnblogs.com/JustinYoung/archive/2009/03/24/kaifarenyuangongju.html IE8“开发人员工具”使用详解上(各 ...

  9. 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)

    . 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...

随机推荐

  1. oracle系统化学习笔记

    CentOS 4.x上安装Oracle 9i(3讲) oracle9i非常成熟,刚学主要是学9i比较经典 学会安装9i具有现实意义,先学完9i再学11g等比较好 1.安装centos 2.安装orac ...

  2. 第三个Sprint冲刺第六天(燃尽图)

  3. 男神女神配——alpha阶段总结

    一.需求分析 虽然公共社交网络系统能够满足大多数高校校园用户在校园网络社交的需求,但是针对校园学习.工作和文化生活等方面的支持以及学校个性化需求方面却存在不足.利用电子校务平台的数据,设计了与真实校园 ...

  4. SQL Server 递归查询上级或下级组织数据(上下级数据通用查询语法)

    查询上级组织数据: WITH OCTE AS ( AS LVL FROM IOV_Users U LEFT JOIN IOV_Organization O ON U.OrgId=O.ID UNION ...

  5. VS2012、2013使用Mysql数据库创建EF的AOD.NET实体模型

    VS2012.2013使用Mysql数据库创建EF的AOD.NET实体模型: 1.关闭VS,首先安装mysql-connector-net-6.8.3.(安装后EF创建实体模型时就可以找到Mysql的 ...

  6. Memcached分布式缓存快速入门

    一.从单机到分布式 走向分布式第一步就是解决:多台机器共享登录信息的问题. •例如:现在有三台机器组成了一个Web的应用集群,其中一台机器用户登录,然后其他另外两台机器共享登录状态? •解决1:Asp ...

  7. Oracle 通过触发器实现ID自增

    Oracle不像Mysql,SQLServer能够直接设置ID自增,但是可以通过触发器实现ID自增. 1 创建测试表 create table t_goods(id number primary ke ...

  8. socketserver及相关的类 (处理socket服务端)+ event事件的使用

    编写简单的套接字服务器并不难,然而,如果要创建的并非简单服务器,还要求助于服务器模块. 模块SocketServer是标准库提供的服务器框架的基石,这个框架包括好多服务器,他们基本服务器的基础上添加了 ...

  9. solr 字段设置不存储表示不会进行分词

    solr 字段设置不存储表示不会进行分词

  10. Codeforces Round #545 (Div. 1)

    本来开头两道题写得挺快的,然后第三题想了一会儿胡出一个scc计算gcd的做法,写了一发凭借信仰交了上去结果一发pp了?然后第四题沙雕了想了很久才会,于是罚时瞬间变多.结果后面两题都没时间看了,赛后感觉 ...