为本地 HA 规模集群设置虚拟机
请按照以下步骤在本地部署中的服务器集群上设置和配置 VM。首先在主节点上配置 VM,然后在每个附加节点上配置 VM。 NVIDIA 建议将虚拟机安装在不同的服务器上,以提高硬件故障时的冗余。
NetQ 4.12.0 支持由 1 个主节点和 2 个附加 HA 工作节点组成的 3 节点 HA 规模集群。
系统要求
验证集群中*每个节点*是否满足 VM 要求。
资源 | 最低要求 |
---|---|
处理器 | 48 个虚拟 CPU |
内存 | 512GB 内存 |
本地磁盘存储 | 3.2TB SSD,最小磁盘 IOPS 为 1000(标准 4kb 块大小) (注意:必须是 SSD;其他存储选项可能会导致系统不稳定,且不受支持。) |
网络接口速度 | 10 Gbps NIC |
虚拟机监控程序 | 用于运行 Ubuntu 的服务器的 KVM/QCOW (QEMU Copy on Write) 镜像; 用于运行 Cumulus Linux 或 Ubuntu 的服务器的 VMware ESXi™ 6.5 或更高版本(OVA 镜像) |
端口要求
确认所需的端口已打开以进行通信。
端口或协议号 | 协议 | 组件访问 |
---|---|---|
4 | IP 协议 | Calico 网络(IP-in-IP 协议) |
22 | TCP | SSH |
80 | TCP | nginx |
179 | TCP | Calico 网络 (BGP) |
443 | TCP | NetQ UI |
2379 | TCP | etcd 数据存储 |
4789 | UDP | Calico 网络 (VxLAN) |
5000 | TCP | Docker 注册表 |
6443 | TCP | kube-apiserver |
30001 | TCP | DPU 通信 |
31980 | TCP | NetQ 代理通信 |
31982 | TCP | NetQ 代理 SSL 通信 |
32708 | TCP | API 网关 |
此外,对于内部集群通信,您必须打开以下端口
端口或协议号 | 协议 | 组件访问 |
---|---|---|
8080 | TCP | 管理 API |
5000 | TCP | Docker 注册表 |
6443 | TCP | Kubernetes API 服务器 |
10250 | TCP | kubelet 健康探测 |
2379 | TCP | etcd |
2380 | TCP | etcd |
7072 | TCP | Kafka JMX 监控 |
9092 | TCP | Kafka 客户端 |
7071 | TCP | Cassandra JMX 监控 |
7000 | TCP | Cassandra 集群通信 |
9042 | TCP | Cassandra 客户端 |
7073 | TCP | Zookeeper JMX 监控 |
2888 | TCP | Zookeeper 集群通信 |
3888 | TCP | Zookeeper 集群通信 |
2181 | TCP | Zookeeper 客户端 |
36443 | TCP | Kubernetes 控制平面 |
安装和配置
下载 NetQ 镜像。
a. 登录您的 NVIDIA Application Hub 帐户。
b. 选择NVIDIA Licensing Portal。
c. 从菜单中选择Software Downloads。
d. 单击Product Family并选择 NetQ。
e. 对于使用 KVM 的部署,下载 NetQ SW 4.12.0 KVM Scale 镜像。对于使用 VMware 的部署,下载 NetQ SW 4.12.0 VMware Scale 镜像
f. 如果出现提示,请阅读许可协议并继续下载。
NVIDIA 员工可以直接从 NVIDIA Licensing Portal 下载 NetQ。
- 打开您的虚拟机监控程序并配置您的 VM。您可以参考以下示例或使用您自己的虚拟机监控程序说明。
KVM 示例配置
此示例显示了安装了 Libvirt 和 KVM/QEMU 的系统的 VM 设置过程。
确认 SHA256 校验和与 NVIDIA Application Hub 上发布的校验和匹配,以确保镜像下载未损坏。
$ sha256sum ./Downloads/netq-4.12.0-ubuntu-20.04-ts-qemu-scale.qcow2
$ a0d9a4f9ce8925b7dfb90a5a44616cadbf3fc667013abae07cd774555c08ff6f ./Downloads/netq-4.12.0-ubuntu-20.04-ts-qemu-scale.qcow2- 将 QCOW2 镜像复制到您要运行它的目录。
提示:复制而不是移动下载的原始 QCOW2 镜像,以避免以后需要再次执行此过程时重新下载。
$ sudo mkdir /vms
$ sudo cp ./Downloads/netq-4.12.0-ubuntu-20.04-ts-qemu-scale.qcow2 /vms/ts.qcow2 - 创建 VM。
对于直接 VM,其中 VM 使用 MACVLAN 接口位于主机接口上以实现其连接
$ virt-install --name=netq_ts --vcpus=16 --memory=65536 --os-type=linux --os-variant=generic --disk path=/vms/ts.qcow2,format=qcow2,bus=virtio,cache=none --network=type=direct,source=eth0,model=virtio --import --noautoconsole
将磁盘路径值替换为 QCOW2 镜像要驻留的位置。将网络模型值(在上述示例中为 eth0)替换为 VM 连接到外部网络的接口名称。
或者,对于桥接 VM,其中 VM 连接到已设置为允许外部访问的网桥
$ virt-install --name=netq_ts --vcpus=16 --memory=65536 --os-type=linux --os-variant=generic \ --disk path=/vms/ts.qcow2,format=qcow2,bus=virtio,cache=none --network=bridge=br0,model=virtio --import --noautoconsole
将网络桥接值(在上述示例中为 br0)替换为 VM 连接到外部网络的(预先存在的)桥接接口的名称。
记下安装期间使用的名称,因为稍后的步骤中需要使用。
- 在另一个终端窗口中观看启动过程。
$ virsh console netq_ts
VMware 示例配置
此示例显示了使用 OVA 文件和 VMware ESXi 的 VM 设置过程。在浏览器中输入硬件地址。
使用具有 root 访问权限的凭据登录到 VMware。
在导航器中单击Storage以验证您是否安装了 SSD。
在右侧窗格顶部单击Create/Register VM。
选择Deploy a virtual machine from an OVF or OVA file,然后单击Next。
为 VM 提供一个名称,例如 *NetQ*。
提示:记下安装期间使用的名称,因为稍后的步骤中需要使用。
拖放您在上面的步骤 1 中下载的 NetQ Platform 镜像文件。
单击Next。
选择要用于镜像的存储类型和数据存储,然后单击Next。在此示例中,只有一个可用。
接受默认部署选项或根据您的网络需求修改它们。完成后单击Next。
查看配置摘要。单击Back更改任何设置,或单击Finish继续创建 VM。
请求的进度显示在应用程序底部的“Recent Tasks”窗口中。这可能需要一些时间,因此请继续进行其他工作,直到上传完成。
完成后,查看 VM 和硬件的完整详细信息。
- 登录到 VM 并更改密码。
首次登录时使用默认凭据
- 用户名:cumulus
- 密码:cumulus
$ ssh cumulus@<ipaddr>
Warning: Permanently added '<ipaddr>' (ECDSA) to the list of known hosts.
Ubuntu 20.04 LTS
cumulus@<ipaddr>'s password:
You are required to change your password immediately (root enforced)
System information as of Thu Dec 3 21:35:42 UTC 2020
System load: 0.09 Processes: 120
Usage of /: 8.1% of 61.86GB Users logged in: 0
Memory usage: 5% IP address for eth0: <ipaddr>
Swap usage: 0%
WARNING: Your password has expired.
You must change your password now and login again!
Changing password for cumulus.
(current) UNIX password: cumulus
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Connection to <ipaddr> closed.
使用新密码再次登录。
$ ssh cumulus@<ipaddr>
Warning: Permanently added '<ipaddr>' (ECDSA) to the list of known hosts.
Ubuntu 20.04 LTS
cumulus@<ipaddr>'s password:
System information as of Thu Dec 3 21:35:59 UTC 2020
System load: 0.07 Processes: 121
Usage of /: 8.1% of 61.86GB Users logged in: 0
Memory usage: 5% IP address for eth0: <ipaddr>
Swap usage: 0%
Last login: Thu Dec 3 21:35:43 2020 from <local-ipaddr>
cumulus@ubuntu:~$
- 验证主节点是否已准备好进行安装。在安装 NetQ 软件之前,修复任何错误。
cumulus@hostname:~$ sudo opta-check scale
- 将 VM 的主机名从默认值更改。
NetQ 虚拟机的默认主机名为 *ubuntu*。更改主机名以符合您的命名约定,同时满足 Internet 和 Kubernetes 命名标准。
Kubernetes 要求主机名由一系列用点连接的标签组成。例如,“en.wikipedia.org”是一个主机名。每个标签的长度必须为 1 到 63 个字符。整个主机名(包括分隔点)最多包含 253 个 ASCII 字符。
协议的 Internet 标准 (RFC) 规定,标签只能包含 ASCII 字母 a 到 z(小写)、数字 0 到 9 以及连字符“-”字符。
使用以下命令
cumulus@hostname:~$ sudo hostnamectl set-hostname NEW_HOSTNAME
将相同的 NEW_HOSTNAME 值添加到 VM 上的 /etc/hosts 中,用于 localhost 条目。例如
127.0.0.1 localhost NEW_HOSTNAME
打开您的虚拟机监控程序,并以与主节点相同的方式为附加节点设置 VM。
在每个节点上运行以下命令,以验证该节点是否已准备好进行 NetQ 软件安装。在安装软件之前,修复指示的任何错误。
cumulus@hostname:~$ sudo opta-check scale
- 使用 CLI 安装和激活 NetQ 软件。
在您的*主*节点上运行以下命令以初始化集群。复制命令的输出以在您的附加 HA 和工作节点上使用
cumulus@<hostname>:~$ netq install cluster master-init
Please run the following command on all worker nodes:
netq install cluster worker-init c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCQVFDM2NjTTZPdVM3dQN9MWTU1a
在您的每个工作节点上运行
netq install cluster worker-init <ssh-key>
命令。在您的主节点上运行
netq install cluster config generate
命令,以生成集群配置 JSON 文件的模板
cumulus@netq-server:~$ netq install cluster config generate
2024-10-28 17:29:53.260462: master-node-installer: Writing cluster installation configuration template file @ /tmp/cluster-install-config.json
- 使用每个属性的所需值编辑集群配置 JSON 文件
cumulus@netq-server:~$ vim /tmp/cluster-install-config.json
{
"version": "v2.0",
"interface": "<INPUT>",
"cluster-vip": "<INPUT>",
"master-ip": "<INPUT>",
"is-ipv6": false,
"ha-nodes": [
{
"ip": "<INPUT>"
},
{
"ip": "<INPUT>"
}
]
}
属性 | 描述 |
---|---|
接口 | 主节点上用于 NetQ 连接的本地网络接口。 |
cluster-vip | 集群虚拟 IP 地址必须是从分配给您的主节点和工作节点的默认接口的同一子网分配的未使用 IP 地址。 |
master-ip | 分配给您的主节点上用于 NetQ 连接的接口的 IP 地址。 |
is-ipv6 | 如果您的网络连接和节点地址分配是 IPv6,则将值设置为 true 。 |
ha-nodes | 集群中每个 HA 节点的 IP 地址。 |
NetQ 默认使用 10.244.0.0/16 (pod-ip-range
) 和 10.96.0.0/16 (service-ip-range
) 网络进行内部通信。如果您正在使用这些网络,则必须通过在集群配置 JSON 文件中为这些参数指定新的子网来覆盖每个范围
cumulus@netq-server:~$ vim /tmp/cluster-install-config.json
{
"version": "v2.0",
"interface": "eth0",
"cluster-vip": "10.176.235.101",
"master-ip": "10.176.235.50",
"is-ipv6": false,
"pod-ip-range": "192.168.0.1/32",
"service-ip-range": "172.168.0.1/32",
"ha-nodes": [
{
"ip": "10.176.235.51"
},
{
"ip": "10.176.235.52"
}
]
}
cumulus@netq-server:~$ vim /tmp/cluster-install-config.json
{
"version": "v2.0",
"interface": "eth0",
"cluster-vip": "10.176.235.101",
"master-ip": "10.176.235.50",
"is-ipv6": false,
"ha-nodes": [
{
"ip": "10.176.235.51"
},
{
"ip": "10.176.235.52"
}
]
}
属性 | 描述 |
---|---|
接口 | 主节点上用于 NetQ 连接的本地网络接口。 |
cluster-vip | 集群虚拟 IP 地址必须是从分配给您的主节点和工作节点的默认接口的同一子网分配的未使用 IP 地址。 |
master-ip | 分配给您的主节点上用于 NetQ 连接的接口的 IP 地址。 |
is-ipv6 | 如果您的网络连接和节点地址分配是 IPv6,则将值设置为 true 。 |
ha-nodes | 集群中每个 HA 节点的 IP 地址。 |
- 在您的主 HA 节点上运行以下命令,使用在步骤 11 中创建的 JSON 配置文件
cumulus@<hostname>:~$ netq install cluster bundle /mnt/installables/NetQ-4.12.0.tgz /tmp/cluster-install-config.json
如果此步骤因任何原因失败,请运行 netq bootstrap reset
,然后重试。
验证安装状态
要查看安装状态,请使用 netq show status [verbose]
命令。以下示例显示了成功的本地安装
State: Active
NetQ Live State: Active
Installation Status: FINISHED
Version: 4.12.0
Installer Version: 4.12.0
Installation Type: Cluster
Activation Key: EhVuZXRxLWVuZHBvaW50LWdhdGV3YXkYsagDIixPSUJCOHBPWUFnWXI2dGlGY2hTRzExR2E5aSt6ZnpjOUvpVVTaDdpZEhFPQ==
Master SSH Public Key: c3NoLXJzYSBBQUFBQjNOemFDMXljMkVBQUFBREFRQUJBQUFCZ1FDNW9iVXB6RkczNkRC
Is Cloud: False
Kubernetes Cluster Nodes Status:
IP Address Hostname Role NodeStatus Virtual IP
------------ ----------- ------ ------------ ------------
10.213.7.52 10.213.7.52 Worker Ready 10.213.7.53
10.213.7.51 10.213.7.51 Worker Ready 10.213.7.53
10.213.7.49 10.213.7.49 Master Ready 10.213.7.53
In Summary, Live state of the NetQ is... Active
运行 netq show opta-health
命令以验证所有应用程序是否正常运行。至少等待 15 分钟,让所有应用程序启动并报告其状态。
cumulus@hostname:~$ netq show opta-health
Application Status Namespace Restarts Timestamp
----------------------------------------------------- -------- ------------- ---------- ------------------------
cassandra-rc-0-w7h4z READY default 0 Fri Apr 10 16:08:38 2020
cp-schema-registry-deploy-6bf5cbc8cc-vwcsx READY default 0 Fri Apr 10 16:08:38 2020
kafka-broker-rc-0-p9r2l READY default 0 Fri Apr 10 16:08:38 2020
kafka-connect-deploy-7799bcb7b4-xdm5l READY default 0 Fri Apr 10 16:08:38 2020
netq-api-gateway-deploy-55996ff7c8-w4hrs READY default 0 Fri Apr 10 16:08:38 2020
netq-app-address-deploy-66776ccc67-phpqk READY default 0 Fri Apr 10 16:08:38 2020
netq-app-admin-oob-mgmt-server READY default 0 Fri Apr 10 16:08:38 2020
netq-app-bgp-deploy-7dd4c9d45b-j9bfr READY default 0 Fri Apr 10 16:08:38 2020
netq-app-clagsession-deploy-69564895b4-qhcpr READY default 0 Fri Apr 10 16:08:38 2020
netq-app-configdiff-deploy-ff54c4cc4-7rz66 READY default 0 Fri Apr 10 16:08:38 2020
...
如果任何应用程序或服务在 30 分钟后显示 DOWN 状态,请打开支持票证并附加 opta-support
命令的输出。