Merhaba Arkadaşlar,
Uzunca bir aradan sonra yine tekrar bir Docker serisi ile karşınızdayım. Bilindiği üzere Docker işleri kolaylaştıran muhteşem bir linux sanallaştırma araçlarından biri (tam olarak sanallaştırma sayılmasa da 🙂 ) Diyelim ki birden fazla Docker kurulu sunucunuz var her biri üzerinde container’lar mevcut. Ama container’larınızı tek bir havuzdan yönetmek istiyorsunuzdur veya ilerde scaling gibi hedefleriniz var. İşte Burada Docker Swarm imdadınıza yetişiyor.
Bütün container’larınızı tek bir havuzda toplayıp hızlıca yönetmek belki başlangıçta değil ama ileriki aşamalarda işimize çok yarayacak. Burada bu düzenlemeleri yaparken güvenliği de ele alacağız. Yani Docker’ın TLS authentication mekanizmasını kullanacağız fakat bunu sonraki yazımda paylaşmayı hedefliyorum.. Öncelikle başlamadan en azından iki adet sunucumuzun olduğunu varsayıyoruz ve buna istinaden yola koyuluyoruz 🙂
Öncelikle şunu bilmekte fayda görüyorum. Docker Swarm’da bir yönetici ve birden fazla düğüm olabilir Aslında birden fazla yönetici de olabilir ama biz buna girmeyelim 🙂 Öncelikle yönetici olacak makinaya ssh bağlantısı yapalım ve Docker’a uzaktan erişimi aktif edelim. Bunun için:
1 |
pico /etc/default/docker |
komutu ile editörde konfigürasyon dosyamızı açıyoruz ve DOCKER_OPTS= parametresine aşağıdaki kodu ekleyelim:
1 |
-H tcp://0.0.0.0:2375 |
Böylelikle Dışarıdan erişime izin verdik burada önemli bir husus var TLS authentication kullanmayacaksanız 0.0.0.0 ip adresi sakıncalı çünkü Docker’a her ip adresinden erişim yetkisi verildi yani public ip üzerinden de docker daemon’a erişme yetkisi verildi. O yüzden siz isterseniz private ip’niz ile değiştirebilirsiniz. Not: Bu işlemi aynı şekilde diğer makineler içinde yapacaksınız. Böylelikle erişim konusunda bir sıkıntımız kalmıyor.
Hemen devam edelim. Öncelikle yönetici olacak sunucumuzda docker üzerinden aşağıdaki komutu çalıştırıyoruz ve düğümlerin birbirini görmesi için bir token oluşturuyoruz ve bunu bir yere not edelim.
1 2 |
docker run --rm hypriot/rpi-swarm create -> f06e13701c1b52267873852c56581718 |
Örnekte yukarıdaki gibi bir token üretti bir burada örnek olsun diye bu token’ı kullanacağız. Öncelikle swarm manager’ı oluşturalım:
1 |
docker run -d --name=swarm-manager --restart=unless-stopped -p 3375:2375 swarm manage token://f06e13701c1b52267873852c56581718 |
Not: Token’ı not aldığınız ile değiştirmeyi unutmayın !. Böylelikle swarm manager’ı oluşturmuş olduk. Dikkat ettiyseniz 3375 portunu atadık yani docker swarm manager’a bu port üzerinden ulaşacağız. Hemen ardından eğer manager’ın kurulu olduğu makine aynı zamanda bir node yani düğüm olmasını istiyorsak onu dahil etmeliyiz. Bunun için
1 |
docker run -d swarm join --addr=dugumipadresi:2375 token://tokenadresiniz |
komutunu manager’ın kurulu olduğu sunucuda çalıştırabiliriz. Burada dikkat edilmesi gereken husus addr parametresine sunucunun kendi ip adresini veriyoruz yani eklenen yeni düğümün ip adresi olmalı. Aynı şekilde diğer sunuculara da bağlanıp bu komutu çalıştırıyoruz ve hepsinin manager’a bağlanmasını sağlıyoruz. Hemen ardından bağlanan Docker Swarm Node’ları kontrol etmek için herhangi bir sunucunuzda aşağıdaki kodu çalıştırıp hangi ip adresleri bağlanmış görebiliyoruz:
1 |
docker run --rm swarm list token://tokenbilgisi |
Şimdi manager sunucumuza giriş yapalım ve duruma bir göz atalım :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
root@hostname1:/home/pi# docker -H tcp://managerIpAdresi:3375 info Containers: 7 Running: 5 Paused: 0 Stopped: 2 Images: 14 Server Version: swarm/1.1.3 Role: primary Strategy: spread Filters: health, port, dependency, affinity, constraint Nodes: 2 hostname1: 192.168.1.150:2375 └ Status: Healthy └ Containers: 6 └ Reserved CPUs: 0 / 4 └ Reserved Memory: 0 B / 972.1 MiB └ Labels: executiondriver=native-0.2, kernelversion=4.1.18-v7+, operatingsystem=Raspbian GNU/Linux 8 (jessie), storagedriver=overlay └ Error: (none) └ UpdatedAt: 2016-04-05T20:53:43Z hostname2: 192.168.1.151:2375 └ Status: Healthy └ Containers: 1 └ Reserved CPUs: 0 / 4 └ Reserved Memory: 0 B / 972.1 MiB └ Labels: executiondriver=native-0.2, kernelversion=4.1.19-v7+, operatingsystem=Raspbian GNU/Linux 8 (jessie), storagedriver=overlay └ Error: (none) └ UpdatedAt: 2016-04-05T20:54:01Z Plugins: Volume: Network: Kernel Version: 4.1.18-v7+ Operating System: linux Architecture: arm CPUs: 8 Total Memory: 1.899 GiB Name: a3f61403aaec |
Göründüğü üzere buradan her türlü bilgiye ulaşabiliyoruz. İşlemleri sanki tek bir Docker daemon kullanıyormuşuz gibi artık yapabileceğiz. İşlemleri yapmadan önce -H parametresini kullanmayı unutmayın 🙂 TLS Authentication konusuna ileriki yazımda değineceğim.
Umarım faydalı olmuştur. Şimdiden iyi çalışmalar 🙂
Docker Swarm ile Docker Düğümlerini Bir Araya Getirmek için 1 cevap