2017-06-04 107 views
18

Bir etcd kümesini herhangi bir etkileşim olmadan otomatik olarak yapılandıracak Docker Swarm servisi olarak dağıtmanın bir yolunu bulmak istiyorum. Temelde, bu komutun ruhuyla şey düşünüyorum:Docker swarm servisi olarak bir etcd kümesinin otomatik otomatik konfigürasyonu

docker service create --name etcd --replicas 3 my-custom-image/etcd 

O kaplaması ağ güvenli ve şifreleme ve kimlik doğrulama hem sağlamak üzere yapılandırıldığı varsayarak, o yüzden ben bile TLS gerekmez inanıyoruz --auto-tls. Başka bir katman üzerinde çözülebildiğinde, sertifikaları hazırlamanın bir yolunu bulmak için fazladan bir baş ağrısı istemiyorum.

Her örnek için benzersiz bir --name'a ihtiyacım var, ancak bunu export ETCD_NAME=$(hostname --short) kullanacak bir giriş noktası komut dosyasından anlayabilirim.

Sorun şu ki, ilk yapılandırmada takılıyorum. clustering guide dayanarak üç seçenek vardır, ama hiçbiri da uyuyor: doesn't support DNS SRV records keşif anda

  • DNS keşif senaryosu ben aradığım en yakın olan, ancak Docker. etcd'u arayabilir ve düğümlerimin tüm IP'lerini alırım ancak _etcd-server._tcp kayıt yok.
  • Otomatik olarak ETCD_INITIAL_CLUSTER yapılamıyor çünkü IP'leri bildiğimde, diğer düğümlerin adlarını bilmiyorum ve bunları anlamanın herhangi bir yolunun farkında değilim. (Bunun için Docker API soketini etcd kapsayıcısına göstermeyeceğim.)
  • Önceden var olan bir etcd kümesi yok ve discovery.etcd.io'dan gelen ilk yapılandırma URI'sini sağlarken olası bir geçici çözümdür. bunu yapmamak. "Sadece bu docker-compose.yml dan bir yığın dağıtmak ve otomatik olarak doğru şeyi yapacak, hiçbir soru sordu" hedeflemiyorum "no-brainer senaryo.

Alabileceğim herhangi bir numara var mı? Doğru senin düğümlerin konteynerlerin IP'leri biliyor söylediğimiz gibi

cevap

2

, yüzden önerilen hüner sadece her düğümün IP adresinin türevleri olarak gerekli etcd isimleri oluşturmaktır. Her kabın etcd içine

  • kullanılarak adlandırılmıştır bu özel kabın IP yani
  • ETCD_INITIAL_CLUSTER

isimleri hatta kadar basit olabilir benzer şekilde diğer konteynırların IP'leri kullanıyor doldurulur daha iyisi yani, isimleri daha güzel yapmak için bu ağdaki düğümün IP değerini hesaplamak için netmask kullanabiliriz. biri Belirli bir gereklilik name özellik için mevcut etcd-02etcd-03 vb

gibi adları olan bitebileceğini bir basit 3 düğümleri yapılandırmasında Bu durumda

, sadece benzersiz ve insanlar tarafından okunabilir olması gerekiyor. Gerçekten de bir numara gibi görünse de işe yarayabilir

+0

Servis kapsayıcı güncellemelerinde IP adresleri değişmez mi? Kap kaldırılırsa, aynı düğümde başlatılırsa (bu yüzden hala aynı veri hacmine sahiptir), daha önce olduğundan daha farklı bir şey olduğuna inanılırsa garip olur.İsim noktalarının, ağ tanımlayıcılarının değişmesine rağmen isimlerin hala devam ettiğini, böylece düğümlerin akranlarının hala aynı olduğunu bilmeleri olduğunu düşündüm. – drdaeman