在Linux系统中,IP Virtual Server(IPVS)是一个基于内核的负载均衡工具,常用于实现高可用性和高性能的网络服务。`ipvsadm` 是管理 IPVS 规则的主要命令行工具,通过它可以配置、查看和删除虚拟服务器及真实服务器的映射关系。
一、ipvsadm 基本语法
`ipvsadm` 的基本使用格式如下:
```
ipvsadm [选项] [规则]
```
其中,选项可以是添加、删除、修改或列出规则等操作,而规则则包括虚拟服务地址、端口、后端服务器地址、端口以及调度算法等信息。
二、常用参数说明
1. `-A` 或 `--add-service`
用于添加一个新的虚拟服务(Virtual Service)。其格式为:
```
ipvsadm -A -t <虚拟IP>:<端口> -s <调度算法>
```
- `-t` 表示 TCP 协议;
- `-u` 表示 UDP 协议;
- `-s` 指定调度算法,如 `rr`(轮询)、`wrr`(加权轮询)、`lc`(最少连接)等。
2. `-D` 或 `--delete-service`
用于删除一个已存在的虚拟服务:
```
ipvsadm -D -t <虚拟IP>:<端口>
```
3. `-a` 或 `--add-server`
将真实服务器(Real Server)添加到虚拟服务中:
```
ipvsadm -a -t <虚拟IP>:<端口> -r <真实IP>:<端口> -g | -i | -m
```
- `-g` 表示使用网关模式(Direct Routing);
- `-i` 表示使用IP隧道模式;
- `-m` 表示使用NAT模式。
4. `-d` 或 `--delete-server`
从虚拟服务中删除一个真实服务器:
```
ipvsadm -d -t <虚拟IP>:<端口> -r <真实IP>:<端口>
```
5. `-L` 或 `--list`
列出当前所有配置的虚拟服务和真实服务器:
```
ipvsadm -L
```
加上 `-n` 参数可显示数字形式的IP和端口:
```
ipvsadm -L -n
```
6. `-e` 或 `--edit-service`
修改现有的虚拟服务配置:
```
ipvsadm -e -t <虚拟IP>:<端口> -s <新调度算法>
```
7. `-R` 或 `--restore`
从文件中恢复之前保存的IPVS规则:
```
ipvsadm -R < 文件名 >
```
8. `-S` 或 `--save`
将当前配置保存到文件中:
```
ipvsadm -S > 文件名
```
三、常见用法示例
1. 添加一个虚拟服务并绑定真实服务器:
```
ipvsadm -A -t 192.168.1.100:80 -s rr
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.200:80 -m
```
2. 查看当前所有配置:
```
ipvsadm -L -n
```
3. 删除一个虚拟服务:
```
ipvsadm -D -t 192.168.1.100:80
```
4. 保存配置到文件:
```
ipvsadm -S > /etc/ipvsadm.rules
```
5. 从文件恢复配置:
```
ipvsadm -R < /etc/ipvsadm.rules
```
四、注意事项
- 使用 `ipvsadm` 需要 root 权限,通常以 `sudo` 执行。
- 在生产环境中,建议将配置保存到文件,并在系统启动时自动加载。
- 不同版本的 Linux 发行版可能对 `ipvsadm` 的支持略有差异,建议查阅对应系统的文档。
五、总结
`ipvsadm` 是管理和配置 IPVS 的核心工具,掌握其常用参数和用法对于搭建高性能负载均衡系统至关重要。通过灵活运用这些命令,可以有效提升网络服务的可用性与扩展性。