CoreOS - 如何使用新令牌?

时间:2015-09-04 07:49:58

标签: coreos

我们有以下问题。在我们的群集中,网址发生了变化。一旦我们更改配置以反映这些更改,网址就不会在“discovery.etcd.io”上更新。所以我们的想法就是使用一个新的令牌。然而,这并不起作用。群集未在“发现.etcd.io”上注册新令牌。每次我们更改网址或令牌时,我们都不想重新安装。有没有更好的办法?重新安装工作没有问题。

#cloud-config
hostname: server1
coreos:
  etcd2:
    # generate a new token for each unique cluster from https://discovery.etcd.io/new?size=3
    discovery: https://discovery.etcd.io/<our token>
    # multi-region and multi-cloud deployments need to use $public_ipv4
    advertise-client-urls: server1:2379
    initial-advertise-peer-urls: server1:2380
    # listen on the official ports
    listen-client-urls: server1:2379
    listen-peer-urls: server1:2380
  #fleet:
  #    public-ip: server1
  #    metadata: region=eu-central-1
  #update:
  #  reboot-strategy: etcd-lock
  units:
    - name: etcd2.service
      command: start
   # - name: fleet.service
   #   command: start
ssh_authorized_keys:
   <our ssh keys>

2 个答案:

答案 0 :(得分:4)

您无需重复重新安装。以下过程有助于逐步启动集群,而不是拥有难以调试的庞大云配置文件。

  1. 停止etcd和所有依赖服务(如依赖于etcd2的法兰绒,舰队等):systemctl stop etcd2

  2. 从/ var / lib / etcd2 / *(或ETCD_DATA_DIR中的路径)删除etcd数据文件

  3. 更改存储在以下位置的云配置文件中的发现令牌:/ var / lib / coreos-install / user_data

  4. 重新启动。

答案 1 :(得分:2)

discovery.etcd.io仅用于引导:例如,您为许多具有https://discovery.etcd.io/new?size=3的主机请求令牌,并且您基本上保留该URL以引导您的3个主机。

群集启动后,群集中的节点现在使用自己的本地存储:您的3个节点通过发现端点相互了解,现在形成具有该信息的群集,因此它们不需要发现终点了。

因此,如果您使用“新”令牌,则您的群集实际上不会使用它,因为它已经自动引导,因为节点已经形成了自己的群集。 要引导新群集,您需要删除每个节点上的本地数据。

如果您有其他数据需要迁移到新群集,我建议您阅读迁移文档。

基本备份程序如下:

etcdctl backup \
      --data-dir /var/lib/etcd \
      --backup-dir /tmp/etcd_backup