【问题标题】:Hashicorp Consul Watches & Snapshot problem (with Docker container)Hashicorp Consul Watches & Snapshot 问题(使用 Docker 容器)
【发布时间】:2021-09-02 07:26:19
【问题描述】:

我正在尝试做一些防灾工作。备份流程如图:

Watches 处理程序:“检测到 K/V 更改”=> 调用 shell“执行快照保存”

观看配置:

{
  "watches": [
    {
        "type": "keyprefix",
        "prefix": "www/",
        "args": ["/consul/run.sh"]
    }
  ]
}

外壳(/consul/run.sh):

#!/bin/sh

echo "start backup snapshot" >> /consul/trigger.log
consul snapshot save /consul/keyvalue.bak
echo "end backup snapshot" >> /consul/trigger.log

当 K/V 更改调用 shell 时确实没有任何错误日志(甚至 echo 消息已存储在 /consul/trigger.log 中),但我在任何目录中都找不到我的备份文件。

谁能解释一下为什么备份文件丢失了?

【问题讨论】:

    标签: docker docker-compose consul


    【解决方案1】:

    通过执行以下步骤,我能够让它在 Docker Compose 下工作。按照这些说明操作后,您可能会看到成功的快照。

    1. 创建一个docker-compose.yaml 文件。

        ---
      version: "3.8"
      services:
        consul:
          image: consul:1.10.2
          ports:
            - 8500:8500
          environment:
            CONSUL_LOCAL_CONFIG: |
              {
                "watches": [
                  {
                      "type": "keyprefix",
                      "prefix": "www/",
                      "args": ["/consul/run.sh"]
                  }
                ]
              }
          volumes:
            - ./consul_data/:/consul/
      
    2. 创建consul_data,其中包含一些 Consul 所需的子目录。

      $ mkdir -p consul_data/{config,data}
      
    3. consul_data/ 目录中创建run.sh

      #!/bin/sh
      
      echo "start backup snapshot" >> /consul/trigger.log
      consul snapshot save /consul/keyvalue.bak
      echo "end backup snapshot" >> /consul/trigger.log
      
    4. 确保run.sh 是可执行的。

      chmod +x consul_data/run.sh
      
    5. 开始领事。

      $ docker-compose up
      
    6. 在另一个终端中,使用consul kv putwww/ 前缀下创建一个密钥。

      $ consul kv put www/test
      Success! Data written to: www/test
      
    7. 在之前的终端中,我可以看到配置好的手表触发,以及正在保存的快照。

      consul_1  | 2021-09-07T05:48:11.741Z [DEBUG] agent.http: Request finished: method=PUT url=/v1/kv/www/test from=192.168.32.1:65036 latency=657.891µs
      consul_1  | 2021-09-07T05:48:11.741Z [DEBUG] agent.http: Request finished: method=GET url=/v1/kv/www/?index=21&recurse= from=127.0.0.1:44946 latency=24.915165128s
      consul_1  | 2021-09-07T05:48:11.927Z [INFO]  agent.fsm: snapshot created: duration=261.695µs
      consul_1  | 2021-09-07T05:48:11.927Z [INFO]  agent.server.raft: starting snapshot up to: index=26
      consul_1  | 2021-09-07T05:48:11.928Z [INFO]  agent.server.raft: snapshot complete up to: index=26
      consul_1  | 2021-09-07T05:48:11.979Z [DEBUG] agent.http: Request finished: method=GET url=/v1/snapshot from=127.0.0.1:44974 latency=52.717138ms
      consul_1  | 2021-09-07T05:48:12.023Z [DEBUG] agent: watch handler output: watch_handler=[/consul/run.sh] output="Saved and verified snapshot to index 26
      consul_1  | "
      
    8. 最后,确认快照存在。

      $ file consul_data/keyvalue.bak
      consul_data/keyvalue.bak: gzip compressed data, original size modulo 2^32 9728
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-07
      • 2021-12-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-02
      • 2021-12-12
      • 2017-09-02
      相关资源
      最近更新 更多