【问题标题】:Jenkins cannot start after disk restored from snapshot从快照恢复磁盘后 Jenkins 无法启动
【发布时间】:2021-01-05 18:12:08
【问题描述】:

自 2020 年初以来,此 Jenkins 安装在 GCE 上运行,管道、插件和其他配置正常运行。

经过一天的试验以引入一些新的操作系统级别的附加功能,这些功能本应花费 5 分钟并最终花费一整天,我意识到我遇到了困难,并决定通过删除 VM 来清理电路板并使用 11 月拍摄的快照创建新的,上次 VM 无需修改即可正常工作。这个特定的 Jenkins 安装用于构建我们内部应用程序的暂存版本,所以我不太关心停机时间等。

创建一个新的虚拟机后,与前一个相同的规格,运行 Debian 10,并将快照分配为磁盘的源,然后去重新加载仪表板并对此感到惊讶:

登录 vm 本身,我发现所有目录/文件都在那里,但运行 sudo systemctl status jenkins 会返回:

● jenkins.service - LSB: Start Jenkins at boot time
   Loaded: loaded (/etc/init.d/jenkins; generated; vendor preset: enabled)
   Active: failed (Result: exit-code) since Tue 2021-01-05 17:54:55 UTC; 5s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 653 ExecStart=/etc/init.d/jenkins start (code=exited, status=7)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/jenkins.service

Jan 05 17:52:34 jenkins-1-vm systemd[1]: Starting LSB: Start Jenkins at boot time...
Jan 05 17:52:40 jenkins-1-vm jenkins[653]: Correct java version found
Jan 05 17:52:41 jenkins-1-vm su[767]: Successful su for jenkins by root
Jan 05 17:52:41 jenkins-1-vm su[767]: + ??? root:jenkins
Jan 05 17:52:41 jenkins-1-vm su[767]: pam_unix(su:session): session opened for user jenkins by (uid=0)
Jan 05 17:54:55 jenkins-1-vm jenkins[653]: Starting Jenkins Automation Server: jenkins failed!
Jan 05 17:54:55 jenkins-1-vm systemd[1]: jenkins.service: Control process exited, code=exited status=7
Jan 05 17:54:55 jenkins-1-vm systemd[1]: Failed to start LSB: Start Jenkins at boot time.
Jan 05 17:54:55 jenkins-1-vm systemd[1]: jenkins.service: Unit entered failed state.
Jan 05 17:54:55 jenkins-1-vm systemd[1]: jenkins.service: Failed with result 'exit-code'.

我开始在谷歌上搜索,基本上花了最后 2 个小时,除了很多文章提到使用 Java8 不能适用于这种情况,因为 java 存在并且日志本身显示 Correct java version found 之外,没有发现任何相关内容。

作为最后一次尝试,我尝试apt purge jenkins 并重新安装它,之后一切正常,但当然,一切也都被清除了。所以我创建了另一个虚拟机,在尝试其他任何事情之前,决定在这里寻求帮助。

Jenkins 中是否有某些东西无法在磁盘快照中被带入并导致这个可怕的Failed to start LSB: Start Jenkins at boot time. 消息?我可以尝试解决这个问题并恢复它吗?

添加更多信息:尝试通过 .war 文件 (java -jar /usr/share/jenkins/jenkins.war) 启动 jenkins 有效,但启动它就像是新安装一样,要求输入管理员密码和其他所有信息,忽略现有的 config.xml 和/var/lib/jenkins 中已经存在所有其余部分。

【问题讨论】:

    标签: jenkins google-compute-engine devops gcloud snapshot


    【解决方案1】:

    我在 GCE 虚拟机上运行 Jenkins 时也有过类似的经历。我还没有完成问题的解决,但我已经设法让 Jenkins 运行而无需重新配置所有内容。

    在几个小时内逐步完成启动脚本后,我发现了一个地方,它消失在一个洞里,然后又以失败告终。通过查看失败后的步骤,我能够从第一原则让系统再次运行。

    我最终运行的命令(并且应该真正保留在脚本中,因为我的 Jenkins 实例在系统重新启动后不会以您获得的相同指纹启动)。这是一个运行在 GCE 中的 Debian 10 系统。

    . /etc/default/jenkins
    DAEMON_ARGS="--name=$NAME --inherit --env=JENKINS_HOME=$JENKINS_HOME --output=$JENKINS_LOG --pidfile=$PIDFILE"
    DAEMON=/usr/bin/daemon
    SU=/bin/su
    JAVA=`type -p java`
    $SU -l $JENKINS_USER --shell=/bin/bash -c "$DAEMON $DAEMON_ARGS -- $JAVA $JAVA_ARGS -jar $JENKINS_WAR $JENKINS_ARGS"
    

    此时 Jenkins 正在运行并响应我的网络浏览器调用。

    【讨论】:

    • 嗯...感谢 Stackoverflow 没有通知任何内容,除非我回到我错过了这个答案的网站。与此同时,我从头开始重建了一个新的虚拟机,幸运的是我设法从我拥有的快照中恢复了工作。我将尝试在受控的“灾难”中运行此脚本,看看是否一切正常。谢谢!
    猜你喜欢
    • 2019-06-21
    • 2019-11-25
    • 2018-03-30
    • 2018-12-05
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多