本节通过示例展示了如何使用 NSX Advanced Load Balancer CLI 执行常见管理任务。
CLI:创建虚拟服务和池
在创建虚拟服务期间,必须配置一个池。必须先创建该池,然后再创建虚拟服务。
可使用 CLI 创建以下项:
池
VS VIP
虚拟服务
下面的示例仅展示了成功部署新应用程序所需的最低配置。除此之外,还有许多其他选项可用于自定义虚拟服务和池。
创建池
: > configure pool Test : pool> servers ip 10.1.1.100 port 80 : pool:servers> save : pool> servers ip 10.1.1.101 port 80 : pool:servers> save : pool> where Tenant: admin +------------+------------+ | Field | Value | +------------+------------+ | name | Test | | servers[1] | | | ip | 10.1.1.100 | | port | 80 | | servers[2] | | | ip | 10.1.1.101 | | port | 80 | +------------+------------+ : pool> save
创建 VS VIP
: > configure vsvip Test_vsVip : vsvip> vip ip_address 10.10.10.10 : vsvip:vip> save : vsvip> save
创建虚拟服务
: > configure virtualservice Test_VS : virtualservice> vsvip_ref Test_vsVip : virtualservice> pool_ref Test : virtualservice> services port 80 : virtualservice:services> save : virtualservice> save
修改池服务器
一项常见任务是在现有池中添加和移除服务器,或者激活或停用池中的服务器。虽然可以在不指定端口的情况下将服务器添加到池中(服务器将继承池或虚拟服务的端口),但 CLI 需要 IP 和端口才能对服务器执行启用和禁用等任务。
以下命令将删除 .101
服务器,并将新的 .102
服务器添加到名为 Test 的池中。
configure pool Test no servers ip 10.1.1.101 port 80 servers ip 10.1.1.102 port 80 [admin]: pool:servers save
以下命令将进入 .100
服务器的子模式并将其禁用。
ip 10.1.1.100 port 80 where Tenant: admin +-------+------------+ | Field | Value | +-------+------------+ | ip | 10.1.1.100 | | port | 80 | +-------+------------+ no enabled +---------+------------+ | Field | Value | +---------+------------+ | ip | 10.1.1.100 | | port | 80 | | enabled | False | +---------+------------+ save
导出/导入配置
NSX Advanced Load Balancer 控制器 具有一个用于存储其配置信息的数据库。该数据库中包含与租户、虚拟服务、池、策略和帐户相关的所有配置。可将这些配置导出为 JSON 文件以进行备份,也可以将部分配置迁移到其他 NSX Advanced Load Balancer 控制器。
可以通过 CLI 备份配置,或将配置迁移到其他控制器集群。导出的配置可能是整个系统配置,也可能是更有限的部分配置(基于当前管理员用户和租户的访问权限),亦或是单个虚拟服务及其子属性。
要仅导出单个虚拟服务及其子对象(如池),请将 virtualservice
标记(而不是 configuration
标记)与 export
命令结合使用。
以下命令会将配置导出到名为 config_export
的文件,通过 SCP 将其复制到远程位置,然后返回到 NSX Advanced Load Balancer Shell。
export configuration file config_export Completed writing the export configuration to config_export bash pwd /home/admin ls config_export scp ./config_export [email protected]:/root [email protected]'s password: config_export 100% 232KB 431.8KB/s 00:00 exit
在开始导入配置之前,请确保集群的所有控制器成员均已启动,并且集群主节点具有以下配置:
管理员帐户
集群配置
OpenStack 基础架构(仅限 OpenStack)
以下命令会将备份的配置导入控制器集群。
import configuration file /home/admin/myconfig keep_uuid Successfully imported the configuration file
您可以将此配置信息还原到空的 NSX Advanced Load Balancer 控制器 中。还原步骤如下:
部署三个新的控制器节点;映像类型(OVA、qcow2、ami)应与从中导出配置的原始控制器节点的映像类型相匹配。
选择一个控制器作为主节点,然后浏览初始设置页面以输入初始设置信息和冗余控制器集群信息。
使用 CLI 或 API 导入配置。
执行这些步骤后,集群将恢复为与原始集群相同的运行状态。
“导出配置”筛选器
您还可以使用筛选器来调整导出的文件。支持以下筛选器:
筛选器名称 |
描述 |
---|---|
full_system |
按“还原配置”中记录的格式导出完整配置(包括持久运行时)。无法通过 CLI 或 REST API 导入此配置。 |
obj_type |
将导出的对象限制为一组特定的对象类型。 |
recurse |
导出已筛选配置中对象的整个依赖关系树(包括某些运行时)。 |
passphrase |
加密敏感数据。必须提供相同的密码短语才能导入配置。 |
search |
仅导出包含特定字符串的对象。 |
skip_default |
在导出的配置中删除对象的默认值。 |
tenant_ref |
仅导出指定租户中的对象。 |
示例
要导出所有虚拟服务和依赖项,请使用以下命令:
export configuration file config\_export obj\_type virtualservice recurse
要导出租户 t1 中的所有对象并筛选掉默认值,请使用以下命令:
export configuration file config\_export tenant\_ref t1 skip\_default
数据包捕获
NSX Advanced Load Balancer 控制器 提供了一种便捷机制来捕获 SE 处理的数据平面流量。管理员可以从控制器 CLI 中启动 capture 命令,而实际的捕获操作在 SE 上执行。数据包捕获以 pcap
格式保存在控制器上。SE 会在其客户端和服务器端捕获数据包。如果虚拟服务已扩展到多个 SE,则所有适用的 SE 都将参与数据包捕获。控制器将汇总捕获,并根据时间对条目进行排序。捕获完成后,会将其上载到个人计算机或其他系统,以便使用相应的工具(如 tcpdump 或 Wireshark)进行分析。
进入指定虚拟服务的数据包捕获子模式:
debug virtualservice Test-VS Updating an existing object. Currently, the object is: +-------+--------------------+ | Field | Value | +-------+--------------------+ | uuid | virtualservice-0-1 | | name | Test-VS | +-------+--------------------+
可以为数据包捕获定义参数。默认情况下,会在选定虚拟服务的上下文中执行捕获,也会在处理虚拟服务流量的所有 SE 上执行捕获(包括捕获来自客户端和服务器端的数据包)。
参数名称 |
描述 |
---|---|
capture_params duration |
时间,以分钟为单位。默认情况下无限制。 |
capture_params num_pkts |
要收集的最大数据包数。默认情况下无限制。 |
capture_params pkt_size |
要捕获的数据包大小或截断长度。默认情况下无限制。 |
debug_ip addrs |
IP4 地址格式 <x.x.x.x> |
debug_ip prefixes |
IP4 前缀格式 <x.x.x.x/x> |
默认情况下,不会定义要捕获的最大数据包数或持续时间。建议包含最大数据包捕获数,如以下示例中所示。如果不设定限制,捕获将一直运行,直到 SE 磁盘已满,这可能会导致服务中断。
指定参数,包括要捕获的最大数据包数:
capture_params num_pkts 1000 debug_ip addrs 10.10.10.10 save
根据之前配置的参数开始捕获:
capture save +----------------+--------------------+ | Field | Value | +----------------+--------------------+ | uuid | virtualservice-0-1 | | name | Test-VS | | debug_ip | | | addrs[1] | 10.10.10.10 | | capture | True | | capture_params | | | duration | 0 mins | | num_pkts | 1000 | +----------------+--------------------+
重新进入数据包捕获子模式,并停止正在进行的数据包捕获:
debug virtualservice Test-VS no capture save
将数据包捕获导出到远程系统,以使用 tcpdump 或 Wireshark 等工具查看:
show debug virtualservice Test-VS capture Please specify the destination directory: /tmp Downloaded the attachment to /tmp/vs_virtualservice.20141205_192033.pcap bash scp /tmp/vs_virtualservice.192033.pcap [email protected]:/tmp
监控到服务器的并发连接
要跟踪到某个服务器的并发连接数,必须在池上下文中查看该服务器。通过在 show
前面附加 watch
命令,可以查看近乎实时更新的连接计数。请记住,建立连接的时间与 SE 将信息发送回控制器的轮询间隔之间存在一定的延迟。使用 Ctrl+C
取消 watch
。
watch show pool Test-pool server detail | grep -e 'ip\|open_conns' | ip_addr | 10.1.1.17 | | open_conns | 50 | | ip_addr | 10.1.1.16 | | open_conns | 49 |