VMware 合作伙伴网关提供了不同的配置选项。在安装网关之前,应准备一个工作表。
工作表
| SD-WAN Gateway |
|
| Hypervisor | 地址/集群名称 |
| 存储 | 根卷数据存储(建议大于 40 GB)
注: 建议合作伙伴网关主机上的 /tmp/partition 目录中的可用磁盘空间至少是内存 (RAM) 大小的两倍。
|
| CPU 分配 | KVM/VMware 的 CPU 分配。 |
| 安装选择 | DPDK - 此选项是可选的,默认情况下处于启用状态以实现更高的吞吐量。如果您选择禁用 DPDK,请与 VMware 客户支持部门联系。 |
| OAM 网络(可选,请参阅“自定义配置”) |
|
| ETH0 – 面向 Internet 的网络 |
|
| 切换 (ETH1) - 网络 |
|
| 控制台访问 |
|
| NTP(可选,请参阅“自定义配置”一节) |
|
SD-WAN Gateway 部分
SD-WAN Gateway 部分的大部分内容无需加以说明。
| SD-WAN Gateway |
|
创建网关并获取激活密钥
- 转到操作员 (Operator) > 网关池 (Gateway Pool),然后创建新的 SD-WAN Gateway 池。要在服务提供商网络中运行 SD-WAN Gateway,请选中允许合作伙伴网关 (Allow Partner Gateway) 复选框。这会启用将合作伙伴网关包含在此网关池中的选项。
- 转到操作员 (Operator) > 网关 (Gateway),然后创建一个新网关并将其分配给该池。此处输入的网关的 IP 地址必须与网关的公用 IP 地址 (public IP address) 相匹配。如果不确定,您可以从 SD-WAN Gateway 中运行
curl ipinfo.io/ip,这会返回 SD-WAN Gateway 的公用 IP。
- 记下激活密钥并将其添加到工作表中。
启用合作伙伴网关模式
- 转到操作员 (Operator) > 网关 (Gateways),然后选择 SD-WAN Gateway。选中合作伙伴网关 (Partner Gateway) 复选框以启用合作伙伴网关。
此外,还有其他一些参数可以配置。最常配置的参数如下:
通告 0.0.0.0/0,且不加密 (Advertise 0.0.0.0/0 with no encrypt)
此选项将使合作伙伴网关能够通告 SAAS 应用程序的云流量路径。由于“加密”(Encrypt) 标记已关闭,因此,是否使用此路径将取决于业务策略上的客户配置。
第二个建议的选项是“以 /32 形式通告 SD-WAN Orchestrator IP,且进行加密”(advertise the SD-WAN Orchestrator IP as a /32 with encrypt)。
这会强制从 Edge 发送到 SD-WAN Orchestrator 的流量采用网关路径。建议选择该选项,因为它可以预测 SD-WAN Edge 访问 SD-WAN Orchestrator 时采取的行为。
网络连接
上图显示了双臂部署中的 SD-WAN Gateway。在此示例中,我们假定 eth0 是面向公用网络 (Internet) 的接口,eth1 是面向内部网络的接口(切换或 VRF 接口)。
对于面向 Internet 的网络,您只需进行基本网络配置。
| ETH0 – 面向 Internet 的网络 |
|
对于切换接口,您必须知道要配置的切换类型,以及管理 VRF 的切换配置。
| ETH1 – 切换网络 |
|
控制台访问 (Console Access)
| 控制台访问 |
|
要访问网关,必须创建控制台密码和/或 SSH 公钥。
创建 cloud-init
在工作表中定义的网关的配置选项将在 cloud-init 配置中使用。cloud-init 配置由两个主要配置文件组成,即,元数据文件和用户数据文件。元数据文件中包含网关的网络配置,用户数据文件中包含网关软件配置。该文件提供了相应的信息以标识要安装的 SD-WAN Gateway 实例。
以下是 Meta_data 文件和 User_data 文件的模板。
使用工作表中的信息填充这两个模板。需要替换所有 #_VARIABLE_#,同时还检查任何 #ACTION#。
instance-id: #_Hostname_# local-hostname: #_Hostname_#
network-interfaces: |
auto eth0
iface eth0 inet static
address #_IPv4_Address_#
mac_address #_mac_Address_#
netmask #_IPv4_Netmask_#
gateway #_IPv4_Gateway_#
dns-nameservers
#_DNS_server_primary_#
#_DNS_server_secondary_#
auto eth1
iface eth1 inet static
metric '13'
address #_MGMT_IPv4_Address_#
mac_address #_MGMT_mac_Address_#
netmask #_MGMT_IPv4_Netmask_#
gateway #_MGMT_IPv4_Gateway_#
dns-nameservers
#_DNS_server_primary_#
#_DNS_server_secondary_#
#cloud-config
hostname: #_Hostname_#
password: #_Console_Password_#
chpasswd:
expire: false
ssh_authorized_keys:
- #_SSH_public_Key_#
ssh_pwauth: true
velocloud:
vcg:
activation_code: #_Activation_Key_#
vco: #_VCO_#
runcmd:
- "echo \"[]\" > /opt/vc/etc/vc_blocked_subnets.json"
- "sed -iorig \"s/wan=\\\".*/wan=\\\"eth0 eth1\\\"/\" /etc/config/gatewayd-tunnel"
- /var/lib/cloud/scripts/per-boot/config_gateway
- "sleep 10"
- "/opt/vc/bin/vc_procmon restart"
write_files:
-
content: |
#!/usr/bin/python
import json
### EDIT GATEWAYD ###
with open("/etc/config/gatewayd", "r") as jsonFile:
data = json.load(jsonFile)
data["global"]["vcmp.interfaces"] = ["eth0"]
data["global"]["wan"] = ["eth1"]
# NOTE FOR HAND OFF IT CAN BE "QinQ (0x8100)" "QinQ (0x9100)" "none" "802.1Q" "802.1ad"
data["vrf_vlan"]["tag_info"][0]["mode"] = "#_Handoff_"
data["vrf_vlan"]["tag_info"][0]["interface"] = "eth1"
data["vrf_vlan"]["tag_info"][0]["c_tag"] = "#_C_TAG_FOR_MGMT_VRF_#"
data["vrf_vlan"]["tag_info"][0]["s_tag"] = "#_S_TAG_FOR_MGMT_VRF_"
with open("/etc/config/gatewayd", "w") as jsonFile:
jsonFile.write(json.dumps(data,sort_keys=True,indent=4, separators=(",", ": ")))
### EDIT DPDK ###
with open("/opt/vc/etc/dpdk.json", "r") as jsonFile:
data = json.load(jsonFile)
#SET 0 or 1 for enabled or DISABLED example data["dpdk_enabled"] = 0
data["dpdk_enabled"] = #_DKDP_ENABLED_(1)_OR_DISABLED_(0)_#
with open("/opt/vc/etc/dpdk.json", "w") as jsonFile:
jsonFile.write(json.dumps(data,sort_keys=True,indent=4, separators=(",", ": ")))
path: /var/lib/cloud/scripts/per-boot/config_gateway
permissions: "0755"
final_message: "==== Cloud-init completed ===="
power_state:
condition: true
delay: "+1"
message: "Bye Bye"
mode: reboot
timeout: 30
- VMware 建议为所有生产 Orchestrator 配置正确的完全限定域名 (FQDN),以便可以为它们颁发正确的 TLS 证书。
- 如果使用 Orchestrator 的 IP 地址进行激活是唯一的选项,请使用以下示例,它指示 Edge 跳过 TLS 验证。
commands.getoutput("/opt/vc/bin/ activate.py -s myvco.example.com -i #_activation_key_#") - 建议不要在生产环境中使用该配置,我们强烈建议您尽早针对 Orchestrator 的主机名进行重新激活。
/etc/network/interfaces) 部分中的有效网络配置。有时,在使用 Windows/Mac 复制粘贴功能时,引入智能引号将会出现问题,这可能会损坏文件。请运行以下命令以确保没有智能引号。
sed s/[”“]/'"'/g /tmp/user-data > /tmp/user-data_new
创建 ISO 文件
完成上述文件后,需要将这些文件打包到一个 ISO 映像中。此 ISO 映像用作虚拟机的虚拟配置 CD。此 ISO 映像(名为 vcg01-cidata.iso)是在 Linux 系统上使用以下命令创建的:
genisoimage -output vcg01-cidata.iso -volid cidata -joliet -rock user-data meta-data
如果您使用的是 MAC OSX,请改用以下命令:
mkisofs -output vcg01-cidata.iso -volid cidata -joliet -rock {user-data,meta-data}
我们将此 iso 文件命名为 #CLOUD_INIT_ISO_FILE#,此文件将在 OVA 和 VMware 安装中使用。