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

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

或者

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

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

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

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

命令参数说明

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

   -A, --add-service 添加virtual server, virtual server必须唯一(IP+端口+协议用于区分一个唯一的虚拟服务)

   -E, --edit-service 编辑虚拟服务

   -D, --delete-service 删除一个虚拟服务, 包括与之关联的真实服务器

   -C, --clear 清空虚拟服务表

   -R, --restore 通过标准输入恢复虚拟服务表(IPVS table)

   -S, --save 以可以通过-R参数恢复的格式导出虚拟服务表到标准输出

   -a, --add-server 添加一个真实服务器到一个虚拟服务

   -e, --edit-server 在一个虚拟服务当中编辑一个真实服务器

   -d, --delete-server 从一个虚拟服务当中移除一个真实服务器

   -L, -l, --list 列出虚拟服务表, 默认是列出所有虚拟服务表, 若需要列出某服务表, 后面指定服务地址即可

   -Z, --zero 清零一个所有服务的数据包 / 字节 / 速率计数器

示例

  • 查看IPVS
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
-> 172.16.130.20:7480 Masq 1 0 0
[root@10-10-88-192 ~]#
  • 保存IPVS

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

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

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

[root@10-10-88-192 ~]# cat ipvs_info | ipvsadm -R
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
-> 172.16.130.20:7480 Masq 1 0 0
[root@10-10-88-192 ~]#
  • 移除一个real server
[root@10-10-88-192 ~]# ipvsadm -d -t 10.10.88.188:7480 -r 172.16.130.20:7480
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
[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的输出

[Sep26 11:08] IPVS: Enter: ip_vs_del_dest, net/netfilter/ipvs/ip_vs_ctl.c line 1079
[ +0.000007] IPVS: Moving dest 172.16.130.20:7480 into trash, dest->refcnt=1
[ +0.000002] IPVS: Leave: ip_vs_del_dest, net/netfilter/ipvs/ip_vs_ctl.c line 1101
[ +11.076403] IPVS: Removing destination 0/172.16.130.20:7480 from trash
  • 添加一个real server
[root@10-10-88-192 ~]# ipvsadm -a -t 10.10.88.188:7480 -r 172.16.130.22:7480 -m
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
-> 172.16.130.22:7480 Masq 1 0 0
[root@10-10-88-192 ~]#
  • 添加一个virtual server
[root@10-10-88-192 ~]# ipvsadm -A -t 10.10.88.189:7480 -s wlc -p 1800
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
-> 172.16.130.22:7480 Masq 1 0 0
TCP 10.10.88.189:7480 wlc persistent 1800
[root@10-10-88-192 ~]#
  • 移除一个virtual server
[root@10-10-88-192 ~]# ipvsadm -D -t 10.10.88.189:7480
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.88.188:7480 wlc persistent 1800
-> 172.16.130.22:7480 Masq 1 0 0

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

[root@10-10-88-192 ~]# ipvsadm -D -t 10.10.88.188:7480
[root@10-10-88-192 ~]# ipvsadm -L -n
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
[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. 包含jdk和nginx的基础镜像

    目的 制作一个基础镜像,包含jdk和nginx,这样要将java项目或一些前端页面做成容器,可以稍作修改引用该镜像. Dockerfile FROM alpine:3.8 ENV \ LANG=C.U ...

  2. HTML格式化标签

    除了div.p.h1~h6.a.span这几个极常用的标签外,HTML还有一些不常见的标签(10个,5对:加粗.斜体.大小.上下标.特殊),默认效果如下: 当然,我们习惯用css编写效果来替代这些效果 ...

  3. cisco常用命令详解

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

  4. 使用cpanm安装perl相关模块

    cpanm是安装Perl模块的最方便的方法.自动下载安装依赖包.使用CPAN shell或下载源码包安装模块,遇到大量依赖关系,非常头痛.下面就是一例: 1. 安装cpanmcpanm其实是一个可执行 ...

  5. C和C++的区别和联系

    关于C和C++的区别是面试中经常会被问到的问题,本着即将面试的心态,进行知识整理,并对小知识点进行扩展: C/C++的联系: C++是C的超集,兼容大部分C的语法的结构: 联系嘛我只能想到这个,毕竟c ...

  6. Kettle 中转换(transformation)的执行过程

    1,Spoon.java的main方法是整个Kettle运行的入口.当打开Kettle的设计器界面后,可以在其中设计作业和转换.这里讨论转换的执行过程. 2,设计好一个转换后,转换保存的本地文件是 . ...

  7. 【转】Robot Framework作者建议如何选择自动化测试框架

    原文:http://www.infoq.com/cn/news/2012/06/robot-author-suggest-autotest 软件自动化测试,作为手工测试的替代,越来越受到关注.Pekk ...

  8. [译]Quartz.NET 框架 教程(中文版)2.2.x 之第七课 触发监听器和作业任务监听器

    第七课:触发监听器和作业任务监听器 监听器是在调度器中基于事件机制执行操作的对象.你大概可以猜到,触发监听器接收响应跟触发器有关的事件,作业任务监听器接收响应跟作业任务有关的事件. 跟触发器有关的事件 ...

  9. ubuntu新建组合用户命令不管用

    当我们新建了组和用户的时候发现一些命令不管用了,这是什么问题呢. 一.解决方案. 通过以下命令添加组和用户,切换到新用户,发现命令不管用,只有一个$符号. groupadd 新组名 ----添加组 u ...

  10. C# http get与post请求方法

    public class HttpTools { public static string GetRequest(string url) { HttpWebRequest request = (Htt ...