2

我使用 bosh 在 azure 机器上部署了 Cloud Foundry。为了向集群添加另一个节点,我在 cloud Foundry 部署清单文件中进行了更改,并使用bosh deploy.

中间部署失败,但 bosh 部署锁没有被释放。当我这样做时,bosh locks我看到锁是通过部署获得的,并且到期时间比当前时间略长,并且它不断增加。

bosh locks
Acting as user 'admin' on 'bosh'

+------------+-----------------------+-------------------------+
| Type       | Resource              | Expires at              |
+------------+-----------------------+-------------------------+
| deployment | single-vm-cf-on-azure | 2017-05-23 10:27:59 UTC |
+------------+-----------------------+-------------------------+

我尝试取消部署任务(bosh 取消任务#task-number)。部署任务的状态更改为,cancelling但没有被取消。

bosh tasks
Acting as user 'admin' on 'bosh'

+----+------------+-------------------------+-------+-------------------+--------+
| #  | State      | Timestamp               | User  | Description       | Result |
+----+------------+-------------------------+-------+-------------------+--------+
| 38 | cancelling | 2017-05-23 08:40:12 UTC | admin | create deployment |        |
+----+------------+-------------------------+-------+-------------------+--------+

我面临的问题是 bosh 已获得部署锁定,每次我尝试再次开始部署或尝试删除部署时,我都会收到一条错误消息:

Error 100: Unable to get deployment lock, maybe a deployment is in progress. Try again later.

1、是否可以删除获取的部署锁信息来释放锁?如果是,信息存储在哪里以及如何删除?

2. 如果一个任务(例如,bosh deploy)失败了,它会无限期地持有 bosh 锁吗?有没有优雅地处理任务失败的方法?

3. 如何处理bosh deploy部署清单文件的更改以避免陷入无限部署锁获取的情况?

提前致谢

4

1 回答 1

0

我们可以 ssh 到 BOSH director VM 并手动删除锁。

我们部署 BOSH 连接到 BOSH 导向器所需的密钥作为“bosh”存储在主目录中。

或“ssh_tunnel”部分下的 bosh.yml 文件中存在的相同信息。就我而言,它看起来像这样:

ssh_tunnel:
    host: 10.0.0.4
    port: 22
    user: vcap
    private_key: ~/bosh

连接步骤:

  1. ssh -i ~/bosh vcap@10.0.0.4
  2. cd /var/vcap/packages/postgres/bin
  3. ./psql -U postgres -p 5524 bosh
  4. 从“locks”表中删除锁定条目
于 2017-06-19T16:39:31.367 回答