Coreos

etcd2 無法在我的 CoreOS 節點上啟動

  • September 23, 2015

我正在嘗試在我的 CoreOS 節點中啟動 etcd2。

我的雲配置中有這個:

coreos:
 etcd2:
   discovery: https://discovery.etcd.io/new?size=1
   advertise-client-urls: http://127.0.0.1:2379,http://127.0.0.1:4001
   initial-advertise-peer-urls: http://127.0.0.1:2380
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://127.0.0.1:2380

安裝後,當我啟動系統時出現錯誤(根據日誌):

etcdmain:頂級值後的無效字元“p”

並且 etcd2 無法啟動。

這意味著什麼?我遵循了https://coreos.com/os/docs/latest/cloud-config.html>和<https://coreos.com/os/docs/latest/cluster-discovery.html上的指南。

編輯

節點 1

coreos:
 etcd2:
   name: coreos1
   discovery: https://discovery.etcd.io/2d585793b364cf8985ca7a983d6c52e3
   advertise-client-urls: http://127.0.0.1:2379,http://127.0.0.1:4001
   initial-advertise-peer-urls: http://127.0.0.1:2380
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://127.0.0.1:2380

節點 2

coreos:
 etcd2:
   name: coreos2
   discovery: https://discovery.etcd.io/2d585793b364cf8985ca7a983d6c52e3
   advertise-client-urls: http://127.0.0.1:2379,http://127.0.0.1:4001
   initial-advertise-peer-urls: http://127.0.0.1:2380
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://127.0.0.1:2380

coreos1> journalctl -u etcd2:

Sep 21 20:10:31 coreos1 etcd2[671]: 2015/09/21 20:10:31 discovery: found self e276d5b4c276a19d in the cluster
Sep 21 20:10:31 coreos1 etcd2[671]: 2015/09/21 20:10:31 discovery: found 1 peer(s), waiting for 1 more
Sep 21 20:11:31 coreos1 etcd2[671]: 2015/09/21 20:11:31 discovery: error #0: client: etcd member https://discovery.etcd.io returns server error [Gateway Timeout]
Sep 21 20:11:31 coreos1 etcd2[671]: 2015/09/21 20:11:31 discovery: waiting for other nodes: error connecting to https://discovery.etcd.io, retrying in 8m32s

coreos2> journalctl -u etcd2:

Sep 21 20:11:43 coreos2 systemd[1]: Starting etcd2...
Sep 21 20:11:43 coreos2 etcd2[1515]: 2015/09/21 20:11:43 etcdmain: etcd Version: 2.1.2
Sep 21 20:11:43 coreos2 etcd2[1515]: 2015/09/21 20:11:43 etcdmain: Git SHA: ff8d1ec
Sep 21 20:11:43 coreos2 etcd2[1515]: 2015/09/21 20:11:43 etcdmain: Go Version: go1.4.2
Sep 21 20:11:43 coreos2 etcd2[1515]: 2015/09/21 20:11:43 etcdmain: Go OS/Arch: linux/amd64
Sep 21 20:11:43 coreos2 etcd2[1515]: 2015/09/21 20:11:43 etcdmain: setting maximum number of CPUs to 1, total number of available CPUs is 1
Sep 21 20:11:43 coreos2 etcd2[1515]: 2015/09/21 20:11:43 etcdmain: listening for peers on http://127.0.0.1:2380
Sep 21 20:11:43 coreos2 etcd2[1515]: 2015/09/21 20:11:43 etcdmain: listening for client requests on http://0.0.0.0:2379
Sep 21 20:11:43 coreos2 etcd2[1515]: 2015/09/21 20:11:43 etcdmain: listening for client requests on http://0.0.0.0:4001
Sep 21 20:11:45 coreos2 etcd2[1515]: 2015/09/21 20:11:45 etcdmain: stopping listening for client requests on http://0.0.0.0:4001
Sep 21 20:11:45 coreos2 etcd2[1515]: 2015/09/21 20:11:45 etcdmain: stopping listening for client requests on http://0.0.0.0:2379
Sep 21 20:11:45 coreos2 etcd2[1515]: 2015/09/21 20:11:45 etcdmain: stopping listening for peers on http://127.0.0.1:2380
Sep 21 20:11:45 coreos2 etcd2[1515]: 2015/09/21 20:11:45 etcdmain: member "core2" has previously registered with discovery service token (https://discovery.etcd.io/2d585793b364cf8985ca7a983d6c52e3).
Sep 21 20:11:45 coreos2 etcd2[1515]: 2015/09/21 20:11:45 etcdmain: But etcd could not find vaild cluster configuration in the given data dir (/var/lib/etcd2).
Sep 21 20:11:45 coreos2 etcd2[1515]: 2015/09/21 20:11:45 etcdmain: Please check the given data dir path if the previous bootstrap succeeded
Sep 21 20:11:45 coreos2 etcd2[1515]: 2015/09/21 20:11:45 etcdmain: or use a new discovery token if the previous bootstrap failed.
Sep 21 20:11:45 coreos2 systemd[1]: etcd2.service: Main process exited, code=exited, status=1/FAILURE
Sep 21 20:11:45 coreos2 systemd[1]: etcd2.service: Unit entered failed state.
Sep 21 20:11:45 coreos2 systemd[1]: etcd2.service: Failed with result 'exit-code'.

您的發現 URL 不正確 - 該 URLhttps://discovery.etcd.io/new?size=1用於獲取您可以在配置中使用的新發現 URL。手動執行一次,例如使用 curl:

curl --silent -H "Accept: text/plain" https://discovery.etcd.io/new?size=1

這將返回一個這樣的 URL:

https://discovery.etcd.io/a93e30ebf9375f2385fef54c83b2840d

這是一個類似的 URL,應該是您的發現 URL。每當您建構新集群時,請始終使用新的發現 URL。

如果這是整個 cloud-config.yml 文件,那就錯了。

文件的第一行必須是:

#cloud-config

IE

#cloud-config

coreos:
 etcd2:
   discovery: https://discovery.etcd.io/new?size=1
   advertise-client-urls: http://127.0.0.1:2379,http://127.0.0.1:4001
   initial-advertise-peer-urls: http://127.0.0.1:2380
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://127.0.0.1:2380

此外,從網站複製 cloud-config 時要小心。我在生成的輸出文件中隱藏了一些奇怪的字元,導致解析器錯誤並導致失敗!

引用自:https://serverfault.com/questions/723620