本节通过示例展示了如何使用 NSX Advanced Load Balancer CLI 执行常见管理任务。

CLI:创建虚拟服务和池

在创建虚拟服务期间,必须配置一个池。必须先创建该池,然后再创建虚拟服务。

可使用 CLI 创建以下项:

  1. VS VIP

  2. 虚拟服务

注:

下面的示例仅展示了成功部署新应用程序所需的最低配置。除此之外,还有许多其他选项可用于自定义虚拟服务和池。

创建池

: > 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>

debug_ip 命令会进入子模式。这允许输入多个 IP 地址或 IP 子网(对于后续条目,省略 debug_ip)。保存以提交所需 IP 并返回到上一个菜单。
注:

默认情况下,不会定义要捕获的最大数据包数或持续时间。建议包含最大数据包捕获数,如以下示例中所示。如果不设定限制,捕获将一直运行,直到 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        |