如果计算机内存分配不足,则进程会因内存消耗较高而停止。在这种情况下,必须增加分配给容器的内存。本节介绍了为托管控制器的虚拟机分配更多内存的步骤。

以下是为 NSX Advanced Load Balancer 的裸机部署增加控制器内存的步骤。

前提条件

已使用在 VMware 上的 CentOS 虚拟机 (v 7.6) 中运行的控制器设置裸机。

过程

  1. 为托管控制器的虚拟机分配更多内存。
  2. 编辑位于 /etc/systemd/system 的“avicontroller.service”单元文件以分配内存,如下所示:
    ExecStartPre=/usr/bin/docker run --name=avicontroller -m *Enter the new memory value here* --cpu-period=100000 --cpu-quota=600000 -p 5098:5098 -p 8443:8443 -p 5054:5054 -p 80:80 -p 443:443 -p 161:161/udp -d --privileged -e "CONTAINER_NAME=avicontroller" -e "MANAGEMENT_IP=*Mgmt ip*" -e NUM_CPU=6 -e NUM_MEMG=14 -e DISK_GB=20 -e CNTRL_SSH_PORT=5098 -e SYSINT_PORT=8443 -e HTTP_PORT=80 -e HTTPS_PORT=443 -v /:/hostroot/ -v /dev:/dev -v /var/run/docker.sock:/var/run/docker.sock -v /opt/avi/controller/data:/vol/ avinetworks/controller:18.2.2-9224-20190306.090737

    在上述代码中,您需要相应地更改“-m”值。例如,如果要分配 24 GB 内存,请将“-m”替换为“24g”。

  3. 保存文件。
  4. 保存文件后,执行 systemctl daemon-reload 命令以加载编辑后的文件。
  5. 使用 systemctl restart avicontroller 命令重新启动 avicontroller.service

结果

重新启动后,控制器将使用分配的新内存进行更新。

注:

确保先将内存添加到主机,然后再将内存添加到控制器。当服务引擎尝试在由于大量内存分配和释放而导致内存碎片化的主机上启动时,由于没有足够的连续内存块,可能会出现断言。服务引擎自动恢复代码会重新引导主机,以便自动从这种情况中恢复。

示例

在增加磁盘大小之前:



在增加磁盘大小之后:



您可以通过更改单元文件中的 DISK_GB 衡量指标来增加磁盘空间。此外,还可以更改 CPU 内核数。

控制器容器会从 avicontroller.service 文件中的 NUM_MEMG 参数读取内存。该文件位于以下位置:/etc/systemd/system