Ubuntu 14.04 Üzerinde Üretime Hazır Bir Mesosphere Kümesi Nasıl Yapılandırılır?
Mesosphere DC/OS (Distributed Cloud Operating System), veri merkezini veya bulut altyapısını tek bir mantıksal bilgisayar gibi yöneten güçlü bir platformdur. Apache Mesos üzerine inşa edilen DC/OS, dağıtık uygulamaları ve kapsayıcılı iş yüklerini (Docker, Kubernetes) ölçeklenebilir, hataya dayanıklı ve verimli bir şekilde çalıştırmak için tasarlanmıştır. Bu makalede, Ubuntu 14.04 işletim sistemi üzerinde üretime hazır bir Mesosphere kümesinin adım adım nasıl yapılandırılacağını detaylı bir şekilde inceleyeceğiz. Ubuntu 14.04 eski bir sürüm olmasına rağmen, bu rehber, belirli kurumsal gereksinimleri veya eski sistemlerle uyumluluk ihtiyacını karşılamak üzere bu platformu kullanmak zorunda olanlar için değerli bilgiler sunacaktır. “Üretime hazır” ifadesi, yüksek erişilebilirlik, güvenlik, izleme, kalıcı depolama ve ağ yapılandırması gibi kritik unsurları kapsar.
Mesosphere DC/OS’e Giriş ve Neden Üretim Ortamı İçin Gereklidir?
Dağıtık sistemlerin ve mikro hizmet mimarilerinin yükselişiyle birlikte, uygulamaları yönetmek ve ölçeklendirmek giderek karmaşık hale gelmiştir. Mesosphere DC/OS, bu karmaşıklığı soyutlayarak geliştiricilerin ve operasyon ekiplerinin iş yüklerini kolayca dağıtmasına ve yönetmesine olanak tanır. Mesos’un kaynak yönetim yetenekleri, Marathon’un kapsayıcı orkestrasyonu ve Zookeeper’ın dağıtık koordinasyonu sayesinde DC/OS, aşağıdaki avantajları sunar:
* Ölçeklenebilirlik: İhtiyaç duyulduğunda kaynakları dinamik olarak tahsis etme ve serbest bırakma yeteneği.
* Yüksek Erişilebilirlik: Tek hata noktalarını ortadan kaldıran dağıtık mimari.
* Kaynak Verimliliği: Küme kaynaklarının (CPU, RAM, disk) daha etkin kullanılması.
* Hızlı Dağıtım: Uygulamaların ve hizmetlerin hızlı bir şekilde dağıtılması ve güncellenmesi.
* Çoklu Yük Desteği: Hem uzun ömürlü hizmetleri (web sunucuları, veritabanları) hem de kısa ömürlü iş yüklerini (toplu işler, veri analizi) destekleme.
Üretim ortamında DC/OS kullanmak, işletmelerin çevikliklerini artırmalarına, operasyonel maliyetleri düşürmelerine ve uygulama performansını iyileştirmelerine yardımcı olur.
Ön Gereksinimler ve Küme Planlaması
Üretime hazır bir Mesosphere kümesi kurmadan önce dikkatli bir planlama yapmak ve tüm ön gereksinimleri karşılamak hayati önem taşır.
Donanım Gereksinimleri
Minimum öneriler genellikle aşağıdaki gibidir, ancak üretim yükünüzü karşılamak için daha fazlasına ihtiyaç duyabilirsiniz:
* Mesos Master (Ana) Düğümler: Yüksek erişilebilirlik için en az 3 veya 5 adet düğüm önerilir. Her düğümde minimum 4 CPU çekirdeği, 16 GB RAM ve 100 GB SSD depolama olmalıdır.
* Mesos Agent (İşçi) Düğümler: İş yüklerinizi barındıracaklardır. Her düğümde minimum 2 CPU çekirdeği, 8 GB RAM ve 100 GB SSD depolama önerilir. İş yükünüze göre bu değerler artırılmalıdır.
* Ağ: Tüm düğümler arasında 1 GbE veya daha yüksek hızda bir ağ bağlantısı şarttır. Tercihen, iç küme iletişimi için özel bir ağ ve dış erişim için ayrı bir ağ kullanılmalıdır.
Ağ Yapılandırması
Ağ, bir DC/OS kümesinin bel kemiğidir. Doğru yapılandırma, performansı ve güvenliği sağlar.
* IP Adresleri ve Hostname’ler: Her düğüm için statik IP adresleri ve benzersiz, çözümlenebilir hostname’ler atayın. /etc/hosts dosyasını düzenleyebilir veya bir DNS sunucusu kullanabilirsiniz.
# Örnek /etc/hosts girdileri
192.168.1.10 master1.dcos.local master1
192.168.1.11 master2.dcos.local master2
192.168.1.12 master3.dcos.local master3
192.168.1.20 agent1.dcos.local agent1
192.168.1.21 agent2.dcos.local agent2
* Firewall Kuralları: Tüm düğümler arasında gerekli portların açık olduğundan emin olun.
* Zookeeper: 2181, 2888, 3888 (master’lar arası)
* Mesos: 5050 (master/agent), 5051 (agent)
* Marathon: 8080
* DC/OS UI/API: 80, 443
* SSH: 22
* Diğer DC/OS bileşenleri için de belirli portlar gerekebilir (örneğin, Metronome, Admin Router).
* ufw kullanıyorsanız:
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 2181/tcp
sudo ufw allow 2888/tcp
sudo ufw allow 3888/tcp
sudo ufw allow 5050/tcp
sudo ufw allow 5051/tcp
sudo ufw allow 8080/tcp
sudo ufw enable
* NTP Senkronizasyonu: Tüm düğümlerin zamanlarının senkronize olması, dağıtık sistemlerdeki tutarlılık sorunlarını önlemek için kritik öneme sahiptir.
sudo apt-get install -y ntp
sudo service ntp restart
İşletim Sistemi Hazırlığı (Ubuntu 14.04)
Her düğümde aşağıdaki adımları uygulayın:
1. Sistem Güncellemesi:
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y
sudo reboot # Gerekirse yeniden başlatın
2. Swap’ı Devre Dışı Bırakma: Mesos, swap kullanımını önermez ve performans sorunlarına yol açabilir.
sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
3. Gerekli Araçları Yükleme:
sudo apt-get install -y curl wget git unzip apt-transport-https ca-certificates
4. Çekirdek Parametreleri (Sysctl Ayarları): Dağıtık sistemler için bazı çekirdek parametrelerinin ayarlanması gerekebilir. Özellikle Docker’ın gereksinimleri ve ağ performansı için.
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-iptables = 1" | sudo tee -a /etc/sysctl.conf
echo "net.bridge.bridge-nf-call-ip6tables = 1" | sudo tee -a /etc/sysctl.conf
echo "vm.max_map_count = 262144" | sudo tee -a /etc/sysctl.conf # Elasticsearch gibi uygulamalar için
sudo sysctl -p
5. SSH Anahtarları: Kurulum işlemini kolaylaştırmak için tüm düğümler arasında parola gerektirmeyen SSH erişimi ayarlayın. Kurulumu yapacağınız bootstrap düğümünden diğer tüm düğümlere SSH anahtarlarınızı kopyalayın.
ssh-keygen -t rsa -b 4096 # Bootstrap düğümünde
ssh-copy-id user@master1
ssh-copy-id user@agent1
# ...diğer tüm düğümler için
6. Docker Kurulumu: DC/OS, kapsayıcıları çalıştırmak için Docker’a ihtiyaç duyar.
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install -y docker-engine
sudo service docker start
sudo usermod -aG docker $(whoami) # Kullanıcıyı docker grubuna ekle
Not: Ubuntu 14.04 için Docker’ın daha eski bir sürümünü yüklemeniz gerekebilir. DC/OS sürümünüzle uyumlu Docker sürümünü kontrol edin.
Mesosphere DC/OS Kurulumu
DC/OS kurulumu, bir bootstrap düğümü kullanarak gerçekleştirilir. Bu düğüm, kurulum dosyalarını barındıracak ve küme düğümlerine dağıtacaktır.
Bootstrap Düğümünü Hazırlama
Bootstrap düğümü, kümedeki master düğümlerinden biri veya ayrı bir sunucu olabilir. Genellikle, küme dışı ayrı bir sunucu kullanmak en iyi uygulamadır.
1. DC/OS Yükleyicisini İndirme: Mesosphere’in web sitesinden veya GitHub deposundan dcos_generate_config.sh betiğini indirin. Ubuntu 14.04 için uygun DC/OS sürümünü seçtiğinizden emin olun (örneğin, DC/OS 1.11 veya daha eski bir sürüm).
wget https://downloads.dcos.io/dcos/stable/dcos_generate_config.sh
chmod +x dcos_generate_config.sh
2. Yapılandırma Dosyası Oluşturma (config.yaml): Bu dosya, kümenizin tüm ayarlarını içerir. Üretime hazır bir küme için bu dosyanın doğru yapılandırılması kritik öneme sahiptir.
# config.yaml örnek
---
cluster_name: "Uretim-DC-OS-Kumesi"
master_list:
- 192.168.1.10
- 192.168.1.11
- 192.168.1.12
agent_list:
- 192.168.1.20
- 192.168.1.21
- 192.168.1.22
public_agent_list: [] # Harici erişim için ayrılmış genel agent'larınız varsa buraya ekleyin.
resolvers:
- 8.8.8.8
- 8.8.4.4
ip_detect_script: |
#!/bin/bash
# Bu betik, düğümün iç ağ IP adresini döndürmelidir.
# Çoklu ağ arayüzü olan düğümler için önemlidir.
# Örneğin, eth0 arayüzünün IP'sini döndürün:
ip -o -4 addr show eth0 | awk '{print $4}' | cut -d/ -f1
# public_ip_detect_script: |
# #!/bin/bash
# # Genel agent'lar için harici IP adresini döndürür.
# # curl -s checkip.amazonaws.com
bootstrap_url: http://:80/dcos_install_resources
exhibitor_storage_backend: static
oauth_enabled: 'true' # Üretim için mutlaka etkinleştirin
telemetry_enabled: 'false' # İsteğe bağlı
# DCOS Overlay Network ayarları
dcos_overlay_network:
enabled: true
vtep_subnet: 10.0.0.0/16
vtep_mac_oui: 70:B3:D5:00:00:00
network_cidr: 9.0.0.0/8
prefix_length: 24
# Fault Domain (Hata Alanı) yapılandırması - rack farkındalığı için
# fault_domain_enabled: true
# fault_domain_detect_script: |
# #!/bin/bash
# # Bu betik, düğümün hata alanını (örneğin, rack adını) döndürmelidir.
# echo "rack-1" # Örnek
# log_level: info
* ip_detect_script: Çok önemli bir betiktir. Düğümün kendisini hangi IP adresiyle tanımlayacağını belirler. Birden fazla ağ arayüzü olan sunucularda iç küme iletişimini doğru arayüz üzerinden yapmak için bu betiği dikkatlice yapılandırın.
* bootstrap_url: Bootstrap düğümünün IP adresi ve kurulum kaynaklarının sunulacağı port.
* oauth_enabled: Üretim ortamlarında güvenlik için mutlaka true olarak ayarlanmalıdır.
* dcos_overlay_network: Kapsayıcılar arası ağ iletişimi için DC/OS overlay ağını etkinleştirir.
3. Kurulum Kaynaklarını Oluşturma: dcos_generate_config.sh betiğini config.yaml dosyanızla çalıştırın.
sudo ./dcos_generate_config.sh --gen-config
sudo ./dcos_generate_config.sh
Bu komutlar, genconf dizini altında kurulum için gerekli tüm kaynakları oluşturacaktır.
4. Kurulum Kaynaklarını Sunma: genconf/serve dizinindeki içeriği bir web sunucusu (örneğin, Nginx) aracılığıyla sunmanız gerekir.
sudo apt-get install -y nginx
sudo cp -r genconf/serve /usr/share/nginx/html/dcos_install_resources
sudo service nginx start
Bootstrap düğümünüzün IP adresini kullanarak http:// adresine erişip kaynakların göründüğünü doğrulayın.
Düğümlere DC/OS Kurulumu
Şimdi sıra master ve agent düğümlerine kurulumu yapmaya geldi.
1. Kurulum Betiğini Kopyalama: genconf/dcos_install.sh betiğini her düğüme kopyalayın.
# Bootstrap düğümünden
for node in master1 master2 master3 agent1 agent2 agent3; do
scp genconf/dcos_install.sh $node:/tmp/
done
2. Master Düğümlerine Kurulum: Her master düğümünde aşağıdaki komutu çalıştırın:
# Her master düğümünde (master1, master2, master3)
sudo bash /tmp/dcos_install.sh master
3. Agent Düğümlerine Kurulum: Her agent düğümünde aşağıdaki komutu çalıştırın:
# Her agent düğümünde (agent1, agent2, agent3)
sudo bash /tmp/dcos_install.sh agent
Genel erişime açık (public) agent’larınız varsa, onlar için sudo bash /tmp/dcos_install.sh public_agent komutunu kullanın.
4. Kurulumu Doğrulama:
* Kurulum tamamlandıktan sonra, bir tarayıcıdan master düğümlerinizden birinin IP adresine gidin (örneğin, http://192.168.1.10). DC/OS UI’sini görmelisiniz.
* DC/OS UI’sine giriş yapın (varsayılan olarak, OAuth etkinse bir tarayıcı üzerinden giriş yapmanız istenecektir).
* “Nodes” veya “Cluster” bölümünden tüm master ve agent düğümlerinin sağlıklı bir şekilde göründüğünü kontrol edin.
* dcos node komutunu kullanarak CLI üzerinden de düğüm durumunu kontrol edebilirsiniz.
# Master düğümünde
dcos node
dcos node --json | jq .
Kurulum Sonrası ve Üretime Hazır Hale Getirme
DC/OS kümeniz temel olarak çalışır durumda olsa da, üretime hazır hale getirmek için ek adımlar ve yapılandırmalar gereklidir.
Güvenlik
* Kimlik Doğrulama ve Yetkilendirme (Authentication & Authorization):
* LDAP/Active Directory Entegrasyonu: Kurumsal ortamlar için mevcut kimlik dizinlerinizle entegrasyon sağlayın. config.yaml dosyasında LDAP ayarlarını yapabilirsiniz.
* Rol Tabanlı Erişim Kontrolü (RBAC): DC/OS, kullanıcılar ve gruplar için ayrıntılı RBAC sunar. Uygulamaları kimlerin dağıtabileceğini, küme kaynaklarını kimlerin yönetebileceğini belirleyin.
* Ağ Segmentasyonu:
* Master düğümlerine yalnızca belirli IP aralıklarından erişime izin verin.
* Kapsayıcıların ve hizmetlerin kendi aralarında ve dış dünyaya nasıl iletişim kurduğunu sıkı kurallarla denetleyin.
* Genel erişimli agent’lar ve özel erişimli agent’lar arasında ayrım yapın.
* Sırlar Yönetimi (Secrets Management): Veritabanı şifreleri, API anahtarları gibi hassas bilgileri güvenli bir şekilde saklamak için DC/OS Secrets Store veya harici bir çözüm (örneğin, HashiCorp Vault) kullanın.
Ağ ve Yük Dengeleme
* Marathon-LB: DC/OS üzerinde çalışan hizmetler için bir yük dengeleyici olarak Marathon-LB kullanın. Bu, Marathon tarafından yönetilen uygulamalar için dinamik yük dengeleme sağlar.
dcos package install marathon-lb
* Mesos-DNS: Küme içindeki hizmetlerin DNS üzerinden keşfedilmesini sağlar.
* DC/OS Overlay Network: Kapsayıcılar arası ağ iletişimini ve izolasyonu sağlar. config.yaml içinde etkinleştirildiğinden emin olun.
* Harici Yük Dengeleyici: Kümenizin önüne (örneğin, AWS ELB, Nginx, HAProxy) bir harici yük dengeleyici koyarak gelen trafiği master düğümlerine veya Marathon-LB’ye yönlendirin.
Kalıcı Depolama
Kapsayıcıların yeniden başlatılması veya farklı bir düğüme taşınması durumunda verilerin kaybolmaması için kalıcı depolama çözümleri kritik öneme sahiptir.
* DC/OS Depolama Eklentileri: DC/OS, Container Storage Interface (CSI) veya eski FlexVolume arabirimleri aracılığıyla çeşitli depolama çözümleriyle entegre olabilir.
* Harici Depolama Çözümleri:
* NFS: Basit ve yaygın bir çözümdür, ancak performans darboğazları olabilir.
* Ceph/GlusterFS: Dağıtık dosya sistemleri, yüksek performans ve ölçeklenebilirlik sunar.
* Bulut Sağlayıcı Depolama: AWS EBS, Azure Disks, Google Persistent Disks gibi çözümler.
* Portworx/Rex-Ray: Kapsayıcılar için özel olarak tasarlanmış depolama çözümleri.
DC/OS Universe’ten uygun depolama paketlerini kurabilirsiniz.
dcos package install
İzleme ve Günlükleme
Üretim ortamında sistem sağlığını, performansını ve uygulama davranışlarını izlemek hayati önem taşır.
* Prometheus ve Grafana: Metrikleri toplamak (Prometheus) ve görselleştirmek (Grafana) için popüler bir kombinasyondur. DC/OS Universe’ten kolayca kurulabilir.
dcos package install prometheus
dcos package install grafana
* ELK Stack (Elasticsearch, Logstash, Kibana): Merkezi günlük toplama ve analiz için kullanılır. Kapsayıcı günlüklerini toplamak için Logstash veya Fluentd agent’larını her düğüme kurun.
* DC/OS Metrikleri: DC/OS, küme bileşenlerinden ve uygulamalardan çeşitli metrikler toplar. Bunlara DC/OS UI veya API aracılığıyla erişilebilir.
* Uyarı Mekanizmaları: İzleme araçlarınızı (örneğin, Prometheus Alertmanager) yapılandırarak kritik durumlarda (düğüm arızası, uygulama çökmesi, kaynak tükenmesi) otomatik uyarılar alın.
Yedekleme ve Olağanüstü Durum Kurtarma
Veri kaybını önlemek ve iş sürekliliğini sağlamak için yedekleme ve kurtarma stratejileri oluşturun.
* Zookeeper Verileri: Zookeeper, Mesos master’larının durumunu ve diğer küme meta verilerini depolar. Zookeeper verilerinin düzenli olarak yedeklenmesi kritik öneme sahiptir.
* Uygulama Verileri: Kalıcı depolama çözümlerinizin yedekleme mekanizmalarını yapılandırın.
* Küme Yapılandırması: config.yaml dosyasını ve kurulumla ilgili diğer betikleri güvenli bir yerde saklayın.
* Olağanüstü Durum Kurtarma Planı: Kümenin tamamen çökmesi durumunda nasıl kurtarılacağını veya yeni bir kümenin nasıl dağıtılacağını belgeleyin ve düzenli olarak test edin.
Küme Ölçeklendirme ve Bakım
* Agent Ekleme/Çıkarma: Kümenize yeni agent düğümleri ekleyerek veya çıkararak kaynakları dinamik olarak ölçeklendirebilirsiniz. Yeni agent’lar için kurulum adımlarını tekrarlayın.
* Yükseltmeler: DC/OS’in yeni sürümleri çıktığında, üretim kümenizi yükseltmek için dikkatli bir planlama ve test süreci izleyin. Genellikle, kademeli bir yükseltme (rolling upgrade) süreci önerilir.
* Güvenlik Yamaları: İşletim sistemi ve Docker gibi temel bileşenler için düzenli güvenlik yamalarını uygulayın.
Sık Karşılaşılan Sorunlar ve Çözümleri
Kurulum ve işletim sırasında karşılaşabileceğiniz bazı yaygın sorunlar:
* Ağ Bağlantısı Sorunları: Firewall kurallarını, IP adreslerini ve ağ arayüzlerini kontrol edin. ping, telnet, nc gibi araçlarla bağlantıyı test edin.
* DNS Çözümleme Hataları: /etc/resolv.conf dosyasını ve config.yaml içindeki resolvers ayarını kontrol edin.
* Zookeeper Başarısızlığı: Master düğümlerinde Zookeeper hizmetinin çalıştığından emin olun. sudo systemctl status dcos-exhibitor (veya sudo service dcos-exhibitor status Ubuntu 14.04 için) komutunu kullanın. Zookeeper quorum’unun yeterli sayıda düğüme sahip olduğundan emin olun (genellikle 3 veya 5).
* Mesos Master/Agent Kayıt Sorunları: Mesos master ve agent günlüklerini kontrol edin (/var/log/mesos/). Ağ veya güvenlik duvarı sorunları genellikle kayıt hatalarına yol açar.
* Docker Sorunları: Docker hizmetinin çalıştığından, yeterli disk alanına sahip olduğundan ve Docker daemon’ının doğru yapılandırıldığından emin olun.
* Disk Alanı Tükenmesi: Özellikle günlükler ve kapsayıcı görüntüleri nedeniyle disk alanı hızla tükenebilir. Düzenli temizlik ve izleme yapın.
Sonuç
Ubuntu 14.04 üzerinde üretime hazır bir Mesosphere DC/OS kümesi kurmak, dikkatli planlama, titiz bir kurulum ve kapsamlı bir kurulum sonrası yapılandırma gerektiren karmaşık bir süreçtir. Bu rehber, temel adımları, güvenlik, depolama, ağ, izleme ve yedekleme gibi kritik “üretime hazır” bileşenleri ele almıştır. DC/OS’in sunduğu güçlü orkestrasyon ve kaynak yönetim yetenekleri sayesinde, işletmeler dağıtık uygulamalarını yüksek performans, ölçeklenebilirlik ve hataya dayanıklılıkla çalıştırabilirler.
Ancak, unutulmamalıdır ki teknoloji sürekli gelişmektedir. Ubuntu 14.04 artık uzun süreli destek almayan eski bir işletim sistemi olduğundan, güvenlik yamaları ve modern yazılım uyumluluğu açısından sınırlamaları olabilir. Mümkün olduğunca, daha yeni ve desteklenen işletim sistemi sürümleri (örneğin, Ubuntu 18.04 LTS veya 20.04 LTS) üzerinde DC/OS veya Kubernetes gibi modern kapsayıcı orkestrasyon platformlarını kullanmayı düşünmek, gelecekteki operasyonel yükü ve güvenlik risklerini azaltacaktır. Ancak bu rehber, belirli eski sistem gereksinimleri olan ortamlar için değerli bir başlangıç noktası sunmaktadır. Sürekli bakım, izleme ve güvenlik güncellemeleri, kümenizin üretim ortamında sağlıklı ve verimli bir şekilde çalışmasını sağlamak için hayati öneme sahiptir.