Keepalived详解之 - LVS(IPVS)管理工具ipvsadm使用指南
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使用指南的更多相关文章
- Keepalived详解(一):Keepalived介绍【转】
一.Keepalived介绍: Keepalived是Linux下一个轻量级的高可用解决方案,它与HeartBeat.RoseHA实现的功能类似,都可以实现服务或者网络的高可用,但是又 ...
- Linux 高可用(HA)集群之keepalived详解
http://freeloda.blog.51cto.com/2033581/1280962 大纲 一.前言 二.Keepalived 详解 三.环境准备 四.LVS+Keepalived 实现高可用 ...
- 项目详解2—LVS负载均衡详解
一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...
- LVS管理工具--ipvsadm
一. ipvsadm工具介绍 从2.4版本开始,linux内核默认支持LVS.要使用LVS的能力,只需安装一个LVS的管理工具:ipvsadm. LVS的结构主要分为两部分: 工作在内核空间的IPVS ...
- Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)
1 前景回顾 1.1 Linux的调度器组成 2个调度器 可以用两种方法来激活调度 一种是直接的, 比如进程打算睡眠或出于其他原因放弃CPU 另一种是通过周期性的机制, 以固定的频率运行, 不时的检测 ...
- Keepalived详解(五):Keepalived集群中MASTER和BACKUP角色选举策略【转】
一.Keepalived集群中MASTER和BACKUP角色选举策略 在keepalived集群中,其实并没有严格意义上的主.备节点,虽然可以在keepalived配置文件中设置state选项为MAS ...
- Keepalived详解(四):通过vrrp_script实现对集群资源的监控【转】
一.通过vrrp_script实现对集群资源的监控: Keepalived基础HA功能时用到了vrrp_script这个模块,此模块专门用于对集群中服务资源进行监控.与此模块一起使用的还有track_ ...
- Keepalived详解(三):Keepalived基础功能应用实例【转】
Keepalived基础功能应用实例: 1.Keepalived基础HA功能演示: 在默认情况下,Keepalived可以实现对系统死机.网络异常及Keepalived本身进行监控,也就是说当系统出现 ...
- LVS管理工具ipvsadm详解与LVS-NAT模式演示
ipvsadm命令是工作在用户空间的LVS集群管理工具,原理是调用ipvs的API,在内核中生成ipvs的规则,主要用来管理集群服务和集群服务中的RealServer,使用方法类似iptables命令 ...
随机推荐
- Prometheus MySQL_exporter
MySQL Exporter mysqld_exporter是用来搜集mysql的性能指标的,适用于mysql5.5及其以上版本 程序安装 下载地址:https://prometheus.io/dow ...
- Linux实战型企业运维工程师试题测评
Linux实战型企业运维工程师试题答案 作者:尹正杰 最近在网上看到了一套有意思的面试题,我们一起来看一下这些题怎么破吧,哈哈~我先放在这里,有时间了一起来看看.多学点东西终究是没有坏处的! ...
- Linux中如何安装RAR
在Windows下的winrar几乎一统压缩软件的市场占有率,winrar只是RAR在Windows环境下的图形界面而已,核心功能还是RAR,那么如何在Linux中安装RAR呢? 1.下载RAR下载地 ...
- logstash收集IIS日志
匹配字段 %{TIMESTAMP_ISO8601:log_timestamp} (%{WORD:s-sitename}|-) (%{IPORHOST:s-ip}|-) (%{WORD:cs-metho ...
- 第一模块:python基础语法
Python基础[day01]:python介绍发展史(一) Python基础[day01]:Hello World程序(二) Python基础[day01]:表达式if ...else语句(三) P ...
- 将web应用部署到Tomcat的三种方式
Tomcat作为Servlet/JSP容器(服务器)挺不错的,开源免费,需要知道的是Tomcat是一个Web服务器,其符合Servlet/JSP规范,但是却没有实现所有JavaEE规范,所以我们还是应 ...
- Java线程间和进程间通信
1 线程与线程间通信 1.1 基本概念以及线程与进程之间的区别联系 关于进程和线程,首先从定义上理解就有所不同: 进程是具有一定独立功能的程序.它是系统进行资源分配和调度的一个独立单位,重点在系统调度 ...
- Nginx 学习笔记(三)proxy_cache 缓存配置和ngx_cache_purge模块
反向代理的缓存清理 一.proxy_cache配置 (1)如何配置和安装,都在这里了:https://github.com/Tinywan/Lua-Nginx-Redis/blob/master/Ng ...
- vue错误记录
启动时报错如下 D:\QQFile\\FileRecv\industry_vue>cnpm run dev > vue_demo@ dev D:\QQFile\\FileRecv\indu ...
- spring注解第07课 @Valid和@Validated的总结区分
@Valid: @Valid注解用于校验,所属包为:javax.validation.Valid. ① 首先需要在实体类的相应字段上添加用于充当校验条件的注解,如:@Min,如下代码(age属于Gir ...