LVS管理工具ipvsadm详解与LVS-NAT模式演示
ipvsadm命令是工作在用户空间的LVS集群管理工具,原理是调用ipvs的API,在内核中生成ipvs的规则,主要用来管理集群服务和集群服务中的RealServer,使用方法类似iptables命令,但远没有iptables命令复杂,如果你熟练使用iptables命令,那使用ipvsadm就会得心应手了。好了,言归正传,系统中默认没有安装该命令,使用yum方式进行安装,安装命令如下:
- [root@lvs-server ~]# yum install -y ipvsadm
在介绍LVS理论时,用了大部分的篇章讲解LVS四种模型和调度算法,当使用ipvsadm命令时,也要指明使用LVS哪一种模型和调度算法。需要注意的是,一个LVS主机可以定义多个集群服务,一个集群服务中至少有一台RealServer,RealServer只能添加到已经定义的集群服务中。
一、ipvsadm命令格式
1. 管理集群服务的命令
- 添加集群服务:ipvsadm -A -t|u|f service-address [-s scheduler]
- 修改集群服务:ipvsadm -E -t|u|f service-address [-s scheduler]
- 删除集群服务:ipvsadm -D -t|u|f service-address
2. 管理RealServer的命令
- 添加RS到集群服务:ipvsadm -a -t|u|f service-address -r server-address [options]
- 修改集群服务的RS:ipvsadm -e -t|u|f service-address -r server-address [options]
- 删除集群服务的RS:ipvsadm -d -t|u|f service-address -r server-address
3. 查看命令
- 查看所有规则:ipvsadm -L|l [options]
- options包括:--numeric|--connection|--timeout|--daemon|--stats|--rate|--exact|--persistent-conn
4. 清空、保存和重载命令
- 清空所有规则:ipvsadm -C
- 保存所有规则:ipvsadm -S [-n]
- 重载所有规则:ipvsadm -R
5. 其他命令
- 置零计数器:ipvsadm -Z [-t|u|f service-address]
- 设置连接超时值: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,永久关闭需要修改配置文件)
- [root@lvs-server ~]# service iptables stop
- iptables:将链设置为政策 ACCEPT:filter [确定]
- iptables:清除防火墙规则: [确定]
- iptables:正在卸载模块: [确定]
- [root@lvs-server ~]# setenforce 0
- setenforce: SELinux is disabled
开启lvs-server的核心转发功能
- [root@lvs-server ~]# sed -i 's#net.ipv4.ip_forward = 0#net.ipv4.ip_forward = 1#g' /etc/sysctl.conf
- [root@lvs-server ~]# cat /etc/sysctl.conf |grep ip_forward
- net.ipv4.ip_forward = 1
- #使修改的核心转发参数生效
- [root@lvs-server ~]# sysctl -p
- net.ipv4.ip_forward = 1
- net.ipv4.conf.default.rp_filter = 1
- net.ipv4.conf.default.accept_source_route = 0
- kernel.sysrq = 0
- kernel.core_uses_pid = 1
- net.ipv4.tcp_syncookies = 1
- kernel.msgmnb = 65536
- kernel.msgmax = 65536
- kernel.shmmax = 68719476736
- kernel.shmall = 4294967296
在lvs-node1和lvs-node2上安装并配置httpd,可在lvs-server上使用如下命令测试是否可以正常访问
- [root@lvs-server ~]# curl http://192.168.1.51
- lvs-node1 port:80
- [root@lvs-server ~]# curl http://192.168.1.52:8080
- lvs-node2 port:8080
现在万事具备,只欠规则了,使用ipvsadm命令添加一个集群服务,然后将后端提供http服务的两台RealServer加入到新添加的集群服务中
- #定义一个集群服务10.0.0.50:80,指定调度算法为rr
- [root@lvs-server ~]# ipvsadm -A -t 10.0.0.50:80 -s rr
- #将后端两台RealServer192.168.1.51和192.168.1.52:8080添加到集群服务10.0.0.50:80中,由于使用的是LVS-NAT模式,所以需要指定-m选项,-m代表NAT模式。
- [root@lvs-server ~]# ipvsadm -a -t 10.0.0.50:80 -r 192.168.1.51 -m
- [root@lvs-server ~]# ipvsadm -a -t 10.0.0.50:80 -r 192.168.1.52:8080 -m
- #查看管理中的规则
- [root@lvs-server ~]# 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.0.0.50:80 rr
- -> 192.168.1.51:80 Masq 1 0 0
- -> 192.168.1.52:8080 Masq 1 0 0
- 这里是将后端两台RealServer映射给了lvs-server的外网IP,访问lvs-server外网IP的80端口时,lvs-server会将请求调度给后端两台RealServer。
如果你的物理机可以直接访问lvs-server的外网地址,用浏览器就可以体验LVS的轮循效果,反之用curl命令也可以查看效果
- #使用两次curl命令查看效果
- [root@lvs-server ~]# curl http://10.0.0.50
- lvs-node1 port:80
- [root@lvs-server ~]# curl http://10.0.0.50
- lvs-node2 port:8080
- #使用组合循环命令查看效果,每秒访问一次
- [root@lvs-server ~]# for i in
seq 500;do sleep 1;curl http://10.0.0.50 ;done; - lvs-node1 port:80
- lvs-node2 port:8080
- lvs-node1 port:80
- lvs-node2 port:8080
至此,LVS-NAT模式实验已经成功完成,但在实验中使用的ipvsadm命令并不多,只用来创建了集群服务,向集群服务中添加RealServer。接下来,以此实验为基础进行其它命令选项的演示。
查看添加的规则
- [root@lvs-server ~]# ipvsadm -Ln
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 10.0.0.50:80 rr
- -> 192.168.1.51:80 Masq 1 0 0
- -> 192.168.1.52:8080 Masq 1 0 0
- Forward :转发方式
- Weight:权重
- ActiveConn:活动连接数
- InActConn:非活动连接数
查看当前的IPVS连接
- [root@lvs-server ~]# ipvsadm -Ln -c
- IPVS connection entries
- pro expire state source virtual destination
- TCP 01:25 TIME_WAIT 10.0.0.50:44765 10.0.0.50:80 192.168.1.52:8080
- TCP 01:28 TIME_WAIT 10.0.0.50:44768 10.0.0.50:80 192.168.1.51:80
- TCP 01:37 TIME_WAIT 10.0.0.50:44777 10.0.0.50:80 192.168.1.52:8080
- TCP 00:00 TIME_WAIT 10.0.0.50:44760 10.0.0.50:80 192.168.1.51:80
- pro:协议
- expire:还有多长时间过期
- state:TCP状态
- source:源地址:随机端口
- virtual:虚拟集群服务
- destination:被lvs-server调度到的RealServer
查看连接的超时时间
- [root@lvs-server ~]# ipvsadm -Ln --timeout
- Timeout (tcp tcpfin udp): 900 120 300
查看自规则生效以来的ipvs统计信息
- [root@lvs-server ~]# ipvsadm -Ln --stats
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
- -> RemoteAddress:Port
- TCP 10.0.0.50:80 256 1384 1277 120316 140583
- -> 192.168.1.51:80 128 699 639 60507 70060
- -> 192.168.1.52:8080 128 685 638 59809 70523
- Conns:已经转发过的连接数
- InPkts:流入包个数
- OutPkts:流出包个数
- InBytes:进入流量(字节)
- OutBytes:流出流量(字节)
查看速率信息
- [root@lvs-server ~]# ipvsadm -Ln --rate
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port CPS InPPS OutPPS InBPS OutBPS
- -> RemoteAddress:Port
- TCP 10.0.0.50:80 1 5 5 449 550
- -> 192.168.1.51:80 0 3 2 228 275
- -> 192.168.1.52:8080 0 3 2 221 275
- CPS:每秒的连接数
- InPPS:每秒流入包个数
- OutPPS:每秒流出包个数
- InBPS:每秒进入流量(字节)
- OutBPS:每秒流出流量(字节)
删除集群服务10.0.0.50:80中的RealServer192.168.1.51:80
- [root@lvs-server ~]# ipvsadm -d -t 10.0.0.50:80 -r 192.168.1.51:80
- [root@lvs-server ~]# ipvsadm -Ln
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 10.0.0.50:80 rr
- -> 192.168.1.52:8080 Masq 1 0 0
在配置完规则之后需要保存和重载,规则保存在/etc/sysconfig/ipvsadm文件中
- #保存ipvsadm规则至/etc/sysconfig/ipvsadm文件中
- [root@lvs-server ~]# ipvsadm -S >/etc/sysconfig/ipvsadm
- [root@lvs-server ~]# cat /etc/sysconfig/ipvsadm
- -A -t 10.0.0.50:http -s rr
- -a -t 10.0.0.50:http -r 192.168.1.52:webcache -m -w 1
- #清空所有规则
- [root@lvs-server ~]# ipvsadm -C
- [root@lvs-server ~]# ipvsadm -Ln
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- #从文件中重载所有规则
- [root@lvs-server ~]# ipvsadm -R </etc/sysconfig/ipvsadm
- [root@lvs-server ~]# ipvsadm -Ln
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 10.0.0.50:80 rr
- -> 192.168.1.52:8080 Masq 1 0 0
修改集群服务10.0.0.50:80中的调度算法为sh
- [root@lvs-server ~]# ipvsadm -E -t 10.0.0.50:80 -s sh
- [root@lvs-server ~]# ipvsadm -Ln
- IP Virtual Server version 1.2.1 (size=4096)
- Prot LocalAddress:Port Scheduler Flags
- -> RemoteAddress:Port Forward Weight ActiveConn InActConn
- TCP 10.0.0.50:80 sh
- -> 192.168.1.52:8080 Masq 1 0 0
修改集群服务10.0.0.50:80中的RealServer192.168.1.52映射端口为8081(因为没有监听8081端口,所以该命令会不生效)
- [root@lvs-server ~]# ipvsadm -e -t 10.0.0.50:80 -r 192.168.1.52:8081 -m
LVS管理工具ipvsadm详解与LVS-NAT模式演示的更多相关文章
- Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区
Lua包管理工具Luarocks详解 - 15134559390的个人空间 - 开源中国社区 Lua包管理工具Luarocks详解
- LVS管理工具--ipvsadm
一. ipvsadm工具介绍 从2.4版本开始,linux内核默认支持LVS.要使用LVS的能力,只需安装一个LVS的管理工具:ipvsadm. LVS的结构主要分为两部分: 工作在内核空间的IPVS ...
- Python包管理工具setuptools详解及entry point
1.什么是setuptools? setuptools是Python distutils增强版的集合,它可以帮助我们更简单的创建和分发Python包,尤其是拥有依赖关系的.用户在使用setuptool ...
- lvs keepalived 安装配置详解【转】
lvs keepalived 安装配置详解 张映 发表于 2012-06-20 分类目录: 服务器相关 前段时间看了一篇文章,lvs做负载均衡根F5差不多,说实话不怎么相信,因为F5没玩过,也无法比较 ...
- 项目详解2—LVS负载均衡详解
一.负载均衡集群介绍 1.集群 ① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能.可靠性.灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技 ...
- scribefire 多博客管理利器 安装详解
scribefire 多博客管理利器 安装详解 一.ScribeFire介绍 ScribeFire 是 Firefox (火狐浏览器)上著名的博客写作工具,目前已跨平台支持多浏览器(Firefox,C ...
- IE8"开发人员工具"使用详解下(浏览器模式、文本模式、JavaScript调试、探查器)
来源: http://www.cnblogs.com/JustinYoung/archive/2009/04/03/kaifarenyuangongju2.html 在上一篇文章IE8“开发人员工具” ...
- IE8“开发人员工具”使用详解上(各级菜单详解)
来源: http://www.cnblogs.com/JustinYoung/archive/2009/03/24/kaifarenyuangongju.html IE8“开发人员工具”使用详解上(各 ...
- 【Android 应用开发】Ubuntu 下 Android Studio 开发工具使用详解 (旧版本 | 仅作参考)
. 基本上可以导入项目开始使用了 ... . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/21035637 ...
随机推荐
- 成功安装的Sublime Text3
安装指南 1:下载官网:https://www.sublimetext.com/3 2:安装指南:https://jingyan.baidu.com/article/b0b63dbfe1b8ff4a4 ...
- ACM注意事项
acm竞赛中不能使用一些屏幕控制和键盘读取的函数,如:getch(),geche(),gotoxy(),clrscr(),另外fflush(stdio)这个函数也不能使用,因为在有的编译 ...
- Linux (centos7) 防火墙命令
防火墙配置 CentOS 7默认使用的是firewall作为防火墙,这里改为iptables防火墙. firewall操作: # service firewalld status; #查看防火墙状态 ...
- Ubuntu 服务器指南
https://help.ubuntu.com/lts/serverguide/ Jabber Instant Messaging Server https://help.ubuntu.com/l ...
- Android控件第7类——对话框
1.AlertDialog AlertDialog用来生成对话框,功能十分强大. AlertDialog可以分成4个组成部分:标题栏上的图标,标题区,文本区,按钮区. 使用方法: 创建AlertDia ...
- MES架构
FlexWeaver作为速威公司全新一代MES的技术平台,提供MES所需的全系列平台服务,针对工业大数据提供分布式计算环境.统一数据库引擎.大数据及云计算支撑等等. ● 同时适应企业内网服务器及云部署 ...
- 微信小程序开发UI组件
第一 view和input和button组件 1.UI组件的通用属性 (1)id 唯一标识 (2)class 设置组件的样式类 (3)style 设置组件的内联样式 (4)hidden ...
- SQL Server 公用表表达式(CTE)实现递归
公用表表达式简介: 公用表表达式 (CTE) 可以认为是在单个 SELECT.INSERT.UPDATE.DELETE 或 CREATE VIEW 语句的执行范围内定义的临时结果集.CTE 与派生表类 ...
- BZOJ3724 PA2014Final Krolestwo(欧拉回路+构造)
如果没有长度为偶数的限制,新建一个点向所有奇点连边,跑欧拉回路即可,显然此时一定存在欧拉回路,因为所有点度数都为偶数. 考虑长度为偶数的限制,将每个点拆成两个点放进一个二分图里,那么每条原图中的边在二 ...
- python 随机数模块 -- random
一.概述 这个模块实现的伪随机数生成器. 对于整数,从区间选取.对于序列,随机元素. 在实线的,有功能来计算均匀分布,正态分布(高斯) ,对数正态分布,负指数,γ和β分布.对于生成的角度分布,冯·米塞 ...