ipvsadm是什么?

ipvsadm是用来配置、维护或者查看Linux内核当中virtual server table的一个工具, LVS(Linux virtual server)能基于一个集群当中的两个或者多个节点来创建弹性网络服务, 集群中的处于激活状态的节点能将服务请求重定向到一组实际提供服务的主机当中, 提供包括TCP和UDP两种协议, 三种数据包转发模式(NAT / tunneling / direct routing), 和八种负载均衡算法(round robin, weighted round robin, least-connection, weighted least-connection, locality-based least-connection, locality-based least-connection with replication, destination-hashing, and source-hashing).

使用方式

ipvsadm提供两种基本的使用格式, 中括号表示可选, 两种命令格式分别对应virtual server和real server

  1. ipvsadm COMMOND [protocol] service-address [scheduling-method] [persistence options]

或者

  1. ipvsadm command [protocol] service-address server-address [packet-forwarding-method] [weight options]

第一种命令格式用于配置虚拟服务(virtual service)和用于分配服务请求到真实服务器的算法, 另外一个可选项为用于持久化服务的持久化超时时间和网络掩码.

第二种命令格式用于配置与一个已经存在的虚拟服务器相关联的真实服务器, 当指定一个真实服务器时, 数据包转发方式和该真实服务器相对于该虚拟服务器下面的其他真实服务器的权重需要指定, 否则会采用默认值.

  • 安装ipvsadm
  1. [root@10-10-40-96 ~]# yum instal -y ipvsadm

命令参数说明

惯例是大写表示用于virtual server, 小写表示用于real server

  1. -A, --add-service 添加virtual server, virtual server必须唯一(IP+端口+协议用于区分一个唯一的虚拟服务)
  2. -E, --edit-service 编辑虚拟服务
  3. -D, --delete-service 删除一个虚拟服务, 包括与之关联的真实服务器
  4. -C, --clear 清空虚拟服务表
  5. -R, --restore 通过标准输入恢复虚拟服务表(IPVS table)
  6. -S, --save 以可以通过-R参数恢复的格式导出虚拟服务表到标准输出
  7. -a, --add-server 添加一个真实服务器到一个虚拟服务
  8. -e, --edit-server 在一个虚拟服务当中编辑一个真实服务器
  9. -d, --delete-server 从一个虚拟服务当中移除一个真实服务器
  10. -L, -l, --list 列出虚拟服务表, 默认是列出所有虚拟服务表, 若需要列出某服务表, 后面指定服务地址即可
  11. -Z, --zero 清零一个所有服务的数据包 / 字节 / 速率计数器

示例

  • 查看IPVS
  1. [root@10-10-88-192 ~]# ipvsadm -L -n
  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.10.88.188:7480 wlc persistent 1800
  6. -> 172.16.130.20:7480 Masq 1 0 0
  7. [root@10-10-88-192 ~]#
  • 保存IPVS

默认是输出到标准输出, 可以重定向到文本保存, 方便后期再导入

  1. [root@10-10-88-192 ~]# ipvsadm -S -n
  2. -A -t 10.10.88.188:7480 -s wlc -p 1800
  3. -a -t 10.10.88.188:7480 -r 172.16.130.20:7480 -m -w 1
  4. [root@10-10-88-192 ~]# ipvsadm -S -n > ipvs_info
  5. [root@10-10-88-192 ~]#
  • 清空IPVS
  1. [root@10-10-88-192 ~]# ipvsadm -C
  2. [root@10-10-88-192 ~]# ipvsadm -L -n
  3. IP Virtual Server version 1.2.1 (size=4096)
  4. Prot LocalAddress:Port Scheduler Flags
  5. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
  6. [root@10-10-88-192 ~]#
  • 恢复(restore)IPVS

注意: 默认是从标准输入进行恢复

  1. [root@10-10-88-192 ~]# cat ipvs_info | ipvsadm -R
  2. [root@10-10-88-192 ~]# ipvsadm -L -n
  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.10.88.188:7480 wlc persistent 1800
  7. -> 172.16.130.20:7480 Masq 1 0 0
  8. [root@10-10-88-192 ~]#
  • 移除一个real server
  1. [root@10-10-88-192 ~]# ipvsadm -d -t 10.10.88.188:7480 -r 172.16.130.20:7480
  2. [root@10-10-88-192 ~]# ipvsadm -L -n
  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.10.88.188:7480 wlc persistent 1800
  7. [root@10-10-88-192 ~]#

注: 移除real server之后会先将destination(endpoint)移到trash(暂存垃圾桶), 过一段时间再删除, 若这个期间这个real server又可以访问了则会从trash中拿回来继续用, 具体说明见IPVS源码注释https://elixir.bootlin.com/linux/v3.0/source/net/netfilter/ipvs/ip_vs_ctl.c, 下面为打开IPVS debug模式(debug_level=8)后dmesg -Hew的输出

  1. [Sep26 11:08] IPVS: Enter: ip_vs_del_dest, net/netfilter/ipvs/ip_vs_ctl.c line 1079
  2. [ +0.000007] IPVS: Moving dest 172.16.130.20:7480 into trash, dest->refcnt=1
  3. [ +0.000002] IPVS: Leave: ip_vs_del_dest, net/netfilter/ipvs/ip_vs_ctl.c line 1101
  4. [ +11.076403] IPVS: Removing destination 0/172.16.130.20:7480 from trash
  • 添加一个real server
  1. [root@10-10-88-192 ~]# ipvsadm -a -t 10.10.88.188:7480 -r 172.16.130.22:7480 -m
  2. [root@10-10-88-192 ~]# ipvsadm -L -n
  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.10.88.188:7480 wlc persistent 1800
  7. -> 172.16.130.22:7480 Masq 1 0 0
  8. [root@10-10-88-192 ~]#
  • 添加一个virtual server
  1. [root@10-10-88-192 ~]# ipvsadm -A -t 10.10.88.189:7480 -s wlc -p 1800
  2. [root@10-10-88-192 ~]# ipvsadm -L -n
  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.10.88.188:7480 wlc persistent 1800
  7. -> 172.16.130.22:7480 Masq 1 0 0
  8. TCP 10.10.88.189:7480 wlc persistent 1800
  9. [root@10-10-88-192 ~]#
  • 移除一个virtual server
  1. [root@10-10-88-192 ~]# ipvsadm -D -t 10.10.88.189:7480
  2. [root@10-10-88-192 ~]# ipvsadm -L -n
  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.10.88.188:7480 wlc persistent 1800
  7. -> 172.16.130.22:7480 Masq 1 0 0

如果直接移除virtual server的话, 若有real server, real server也会一并移除掉

  1. [root@10-10-88-192 ~]# ipvsadm -D -t 10.10.88.188:7480
  2. [root@10-10-88-192 ~]# ipvsadm -L -n
  3. IP Virtual Server version 1.2.1 (size=4096)
  4. Prot LocalAddress:Port Scheduler Flags
  5. -> RemoteAddress:Port Forward Weight ActiveConn InActConn
  6. [root@10-10-88-192 ~]#

Keepalived详解之 - LVS(IPVS)管理工具ipvsadm使用指南的更多相关文章

  1. Keepalived详解(一):Keepalived介绍【转】

    一.Keepalived介绍:         Keepalived是Linux下一个轻量级的高可用解决方案,它与HeartBeat.RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但是又 ...

  2. Linux 高可用(HA)集群之keepalived详解

    http://freeloda.blog.51cto.com/2033581/1280962 大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用 ...

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

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

  4. LVS管理工具--ipvsadm

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

  5. Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)

    1 前景回顾 1.1 Linux的调度器组成 2个调度器 可以用两种方法来激活调度 一种是直接的, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性的机制, 以固定的频率运行, 不时的检测 ...

  6. Keepalived详解(五):Keepalived集群中MASTER和BACKUP角色选举策略【转】

    一.Keepalived集群中MASTER和BACKUP角色选举策略 在keepalived集群中,其实并没有严格意义上的主.备节点,虽然可以在keepalived配置文件中设置state选项为MAS ...

  7. Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】

    一.通过vrrp_script实现对集群资源的监控: Keepalived基础HA功能时用到了vrrp_script这个模块,此模块专门用于对集群中服务资源进行监控.与此模块一起使用的还有track_ ...

  8. Keepalived详解(三):Keepalived基础功能应用实例【转】

    Keepalived基础功能应用实例: 1.Keepalived基础HA功能演示: 在默认情况下,Keepalived可以实现对系统死机.网络异常及Keepalived本身进行监控,也就是说当系统出现 ...

  9. LVS管理工具ipvsadm详解与LVS-NAT模式演示

    ipvsadm命令是工作在用户空间的LVS集群管理工具,原理是调用ipvs的API,在内核中生成ipvs的规则,主要用来管理集群服务和集群服务中的RealServer,使用方法类似iptables命令 ...

随机推荐

  1. Optional与Mybatis能否一起

    1.mybatis的@Param()参数传递的问题,与JDK1.8的Optional的返回值问题.使用Optional与spring-data-jpa和mybatis有啥区别? 使用spring-da ...

  2. WCF开发实战系列五:创建WCF客户端程序

    WCF开发实战系列五:创建WCF客户端程序 (原创:灰灰虫的家http://hi.baidu.com/grayworm) 在前面的三篇文章中我们分别介绍了WCF服务的三种载体:IIS.Self-Hos ...

  3. C# WinForm文章收集

    DataGridView 使用方法集锦 https://blog.csdn.net/zhaoyu_m69/article/details/70307934 关于DataGridView的一些操作(很全 ...

  4. cisco常用命令详解

    cisco常用命令详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用命令用法展示 1.命令行模式的来回切换 yinzhengjie>enable #从用户模式切换到 ...

  5. 多目标遗传算法 ------ NSGA-II (部分源码解析)两个个体支配判断 dominance.c

    /* Domination checking routines */ # include <stdio.h> # include <stdlib.h> # include &l ...

  6. vue中extend/component/mixins/extends的区别

    vue中extend/component/mixins/extends的区别 教你写一个vue toast弹窗组件 Vue.extend构造器的延伸

  7. 使用java.util.LinkedList模拟实现内存页面置换算法--LRU算法

    一,LRU算法介绍 LRU是内存分配中“离散分配方式”之分页存储管理方式中用到的一个算法.每个进程都有自己的页表,进程只将自己的一部分页面加载到内存的物理块中,当进程在运行过程中,发现某页面不在物理内 ...

  8. Eclipse文件路径

    经常我们需要读取某个文件,一般情况下,在Eclipse工程中,路径为./src/....

  9. 3d图像识别基础论文:pointNet阅读笔记

    PointNet 论文阅读: 主要思路:输入独立的点云数据,进行变换不变性处理(T-net)后,通过pointNet网络训练后,最后通过最大池化和softMax分类器,输出评分结果. 摘要: 相较于之 ...

  10. Dubbo启动时检查

    Dubbo在启动时会检查服务提供者所提供的服务是否可用,默认为True. (1).单个服务关闭启动时检查(check属性置为false) 1).基于xml文件配置方式 <!--3.声明需要调用的 ...