【问题标题】:Vagrant up and its non-deterministic issuesVagrant up 及其非确定性问题
【发布时间】:2020-09-29 05:32:43
【问题描述】:

好的,我已经开始使用 vagrant,因为有客户使用它。把所有的部分放在一起并让它们工作真的很痛苦……现在我面临着另一种问题。 一旦我运行vagrant up 可能会有不同的结果:

  1. 虚拟机无法正常启动

    等待机器启动时超时。这意味着 Vagrant 无法与内部的来宾机器通信 配置的(“config.vm.boot_timeout”值)时间段。

    如果你看上面,你应该能够看到错误 Vagrant 在尝试连接到机器时出现过。这些错误 通常可以很好地提示可能出现的问题。

    如果您使用的是自定义框,请确保网络正确 工作,您可以连接到机器。这是一个常见的 在这些框中未正确设置网络的问题。 验证身份验证配置是否也设置正确, 也是。

    如果该框似乎可以正常启动,您可能需要增加 超时(“config.vm.boot_timeout”)值。

  2. MySQL 死了

    默认值:ERROR 2006 (HY000) at line 1118: MySQL server has gone away

    默认值:第 3720 行的错误 1034 (HY000):表 'ci_sessions' 的索引已损坏;尝试修复它

  3. 正常工作

我必须背靠背运行vagrant upvagrant destroy 命令,直到我的机器决定启动并正确构建。很奇怪,我对此没有任何解释,运行环境是一场赌博,需要我很多时间才能运行。

如果有人知道 Vagrant 或这个奇怪的问题,将不胜感激。

警察局:

  1. 我的 Vagrantfile 已配置

    config.vm.provider "virtualbox" 做 |v| v.内存 = 4096 v.cpus = 3 结束

  2. 正在加载的数据库很大(其中一个为 5Gb),我尝试包含一个 sed 命令来改进最大允许包,但没有成功。

    sudo sed -i "s@[client-server]@[client-server]\n\n[mysqld]\nmax_allowed_pa​​cket=256M@" /etc/my.cnf

我得到了这个答案:

sed: -e expression #1, char 33: unterminated `s' command

当我在vagrant ssh 执行它时它运行正常,但我不确定将它包含在我的 Vagrantfile 中的哪个位置。

【问题讨论】:

    标签: vagrant virtualbox


    【解决方案1】:

    我推测在启动过程中虚拟机中发生了很多事情,要么消耗资源,要么花费太长时间。您已经指出,您只为 VM 提供了 4GB 的 RAM,但您尝试加载的数据库是 5GB,因此 VM 可能会破坏交换分区。 MySQL 死掉也表明您没有为 VM 提供所需的资源。

    即使 vagrant 无法建立 SSH 连接并超时,你可以在一段时间后 ssh 进入框(检查“vagrant ssh-config”)吗?

    增加 RAM,并调查(也许您可以询问包装盒子的人)此 VM 在启动过程中启动了哪些服务。监视 VM 的来宾操作系统提供的任何设施,您还应该看到 VirtualBox GUI 中发生了什么。按客户操作系统为此目的使用的任何键,这样您就不会只看到一些不透明的启动屏幕。

    至于您的 sed 命令,您可以为此使用 shell 配置程序:https://www.vagrantup.com/docs/provisioning/shell; 确保在通过 inline 属性传递命令行时正确转义。

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      • 2015-09-27
      • 1970-01-01
      • 2016-12-13
      相关资源
      最近更新 更多