我在 Azure 上有一个 RHEL 映像,我们启动它来执行一些专门的任务。没有选项可以实际保持服务运行。
但是,有时在启动时,当我尝试运行时,甚至xeyes
会出现以下错误:
$ xeyes
没有指定协议。
错误:无法打开显示::1
其他时候,当我们使用完全相同的方法启动它时,一切正常。我可以运行从xeyes
VNC 到 VNC 的所有内容,一切都很好。在运行命令之前创建 VM 时,我什至采取了特殊的预防措施,因为我们在规模集中waagent
启动映像,例如创建 VNC 实例(稍后详述)以及我为此目的而严格添加的新用户。
所以这是我的问题:
- 有谁知道会导致这种不稳定行为的任何奇怪之处?
- 有没有人做任何事情来确保 X 启动?
- 我能做些什么来强制 VNC 等在 X 之后启动吗?
注意:我不需要设置远程 X 访问,只需要本地。
我遵循的基本说明是Red Hat 站点本身上的Red Hat RHEL 7 TigerVNC 说明。
在这一点上,我的解决方法是使用 Chef 构建 VM,然后使用这些指令启动一个重建所有内容的过程。
我还不能评论,所以我把它放在这里。
我知道这有一个反对意见,但我在我的 Azure 帐户上尝试了这个。我扩展了大约 20 个 VM 实例,但并非所有实例都能正常工作——有些可以,有些不能。当我再次启动它时,我得到了不同数量的 up/down 实例。
我添加了一个 shell 脚本,该脚本遵循您在启动请求中提供的设置 VNC 的说明链接。这似乎奏效了。
它有效,但唯一需要注意的是我必须等待网络可用。我所做的特别是添加一个
ping -c 1 -W 1 SOME_REPO_URL
并检查响应代码以等待网络可用(我对此有一些问题)。这是一个 hacky 解决方法,但它至少可以正常工作。