2015-09-04 20 views
5

Abbiamo il seguente problema. Nel nostro cluster l'URL è cambiato. Una volta modificata la configurazione per riflettere tali modifiche, gli URL non sono stati aggiornati su "discovery.etcd.io". Quindi la nostra idea era di usare solo un nuovo token. Questo tuttavia non funziona. Il cluster non si registra con il nuovo token su 'discovery.etcd.io'. Non vogliamo reinstallare ogni volta che cambiamo l'url o il token. C'è un modo migliore? La reinstallazione funziona senza problemi.CoreOS - Come utilizzare un nuovo token?

#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> 

risposta

4

Non è necessario reinstallare più volte. Il seguente processo è utile per far crescere il cluster passo dopo passo, piuttosto che avere un enorme file di configurazione del cloud che è difficile da eseguire il debug.

  1. arresto etcd e tutti i servizi dipendenti (come flanella, flotta, ecc che dipendono etcd2): systemctl fermare etcd2

  2. Eliminare i file di dati etcd da/var/lib/etcd2/* (o il percorso in ETCD_DATA_DIR)

  3. Modifica del token scoperta nel file di configurazione memorizzato nella nuvola:/var/lib/CoreOS-install/user_data

  4. Reboot.

2

discovery.etcd.io viene utilizzato solo per l'avvio: si richiede un token per un numero di host con https://discovery.etcd.io/new?size=3 per esempio, e di prenotare in sostanza che l'URL per l'avvio tuoi 3 host.

Una volta eseguito il bootstrap del cluster, i nodi del cluster ora utilizzano la propria memoria locale: i 3 nodi si sono conosciuti tramite l'endpoint di rilevamento e ora formano un cluster che contiene tali informazioni, quindi non lo fanno ha più bisogno dell'endpoint di scoperta.

Quindi, se si utilizza un token 'nuovo', il cluster non lo utilizzerà effettivamente poiché è già stato avviato, poiché i nodi formano già un cluster. Per avviare un nuovo cluster, è necessario eliminare i dati locali su ciascun nodo.

Suggerisco di leggere la documentazione di migrazione se si dispone di altri dati necessari per passare al nuovo cluster.

la procedura di backup di base è simile:

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