OpenStack, özel bulut altyapısının açık kaynak standardıdır. AWS’nin EC2, S3, VPC gibi servislerinin muadillerini kendi donanımınız üzerinde sunar. Ama OpenStack’ın karmaşıklığı ünlüdür — onlarca servis, yüzlerce konfigürasyon parametresi ve “çalıştırdım ama neden çalıştığını bilmiyorum” sendromu. Bu yazıda OpenStack’ı küçük ölçekte, hatta tek bir sunucuda nasıl çalıştırabileceğinizi ve bunun sınırlarını ele alacağım.
OpenStack Ne Zaman Mantıklı?
Bu soruyu sormak önemlidir çünkü OpenStack her senaryo için doğru çözüm değildir. Eğer 3-5 VM çalıştırmanız gerekiyorsa, Proxmox VE veya doğrudan KVM/libvirt çok daha basit ve yönetilebilir bir çözüm sunar. OpenStack’ın gerçek gücü şu senaryolarda ortaya çıkar:
Çoklu tenant desteği gerektiğinde — farklı takımlara veya müşterilere izole bulut kaynakları sunmanız gerektiğinde. API-driven infrastructure gerektiğinde — Terraform, Ansible veya özel scriptlerle altyapı yönetimi yapmanız gerektiğinde. Self-service portal istediğinizde — kullanıcıların kendi VM’lerini, ağlarını ve depolamalarını oluşturabilmesini istediğinizde. Ölçeklendirme planınız olduğunda — 5 sunucuyla başlayıp 50 sunucuya çıkma planınız varsa. OpenStack öğrenmek istediğinizde — kariyer gelişimi veya sertifikasyon hazırlığı için.
Temel Servisler
OpenStack modüler bir yapıya sahiptir. Her servis belirli bir işlevi yerine getirir ve birbirleriyle API üzerinden iletişim kurar. Minimum bir kurulum için şu servisler gereklidir:
Keystone (Identity)
Kimlik doğrulama ve yetkilendirme servisi. Tüm OpenStack servislerinin ve kullanıcıların kimlik doğrulaması Keystone üzerinden geçer. Token tabanlı çalışır — kullanıcı bir kez kimlik doğrulaması yapar, bir token alır ve bu token ile diğer servislere erişir.
Keystone kavramları: Domain (en üst seviye organizasyon), Project (eski adıyla tenant — kaynak izolasyon birimi), User (kullanıcı), Role (yetki — admin, member, reader) ve Service Catalog (hangi servisin hangi endpoint’te olduğunun kaydı).
Nova (Compute)
VM yaşam döngüsü yönetimi. VM oluşturma, başlatma, durdurma, yeniden boyutlandırma ve silme işlerini yönetir. Altında KVM (varsayılan), Xen, VMware veya Hyper-V gibi hypervisor’lar çalışır.
Nova’nın bileşenleri: nova-api (dış dünyaya API sunar), nova-conductor (veritabanı ile compute node’lar arasında aracılık yapar), nova-scheduler (yeni VM’i hangi compute node’a yerleştireceğine karar verir) ve nova-compute (her compute node’da çalışır, hypervisor ile konuşur).
Neutron (Networking)
Ağ yönetimi servisi. Sanal ağlar, alt ağlar, router’lar, floating IP’ler ve güvenlik grupları yönetir. OpenStack’ın en karmaşık bileşenidir — çünkü ağ zaten karmaşıktır.
Neutron iki ana modda çalışır: Provider networks (flat veya VLAN tabanlı, fiziksel ağ altyapısına bağlı) ve Self-service networks (VXLAN veya GRE tünelleme ile tenant’lara özel overlay ağlar).
Tek sunucu kurulumunda genelde Open vSwitch (OVS) veya Linux Bridge ML2 plugin’i kullanılır. OVS daha zengin özellik seti sunar ama debug etmesi daha zordur. Linux Bridge daha basit ve şeffaftır.
Glance (Image)
VM image yönetimi. QCOW2, RAW, VMDK gibi formatlarda disk image’larını saklar ve Nova’ya sunar. Backend olarak yerel dosya sistemi, Swift veya Ceph RBD kullanılabilir.
Placement
Kaynak takip servisi. Hangi compute node’da ne kadar CPU, RAM ve disk mevcut olduğunu takip eder. Nova scheduler, Placement verilerine bakarak VM yerleştirme kararı verir. Basit ama kritik bir servis — doğru çalışmazsa VM oluşturma başarısız olur.
DevStack vs Kolla-Ansible
OpenStack kurulumu için iki ana yaklaşım vardır:
DevStack
Geliştirme ve test ortamı için tasarlanmıştır. Tek bir script çalıştırarak tüm servisleri kurar. Avantajları: kurulumu çok hızlı (15-30 dakika), source code’dan kurulduğu için debug etmek kolay ve custom branch/patch test etmek mümkün.
# DevStack kurulumu
sudo useradd -s /bin/bash -d /opt/stack -m stack
echo "stack ALL=(ALL) NOPASSWD: ALL" | sudo tee /etc/sudoers.d/stack
sudo su - stack
git clone https://opendev.org/openstack/devstack
cd devstack
# local.conf oluştur
cat > local.conf << EOF
[[local|localrc]]
ADMIN_PASSWORD=secret
DATABASE_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
HOST_IP=192.168.1.10
FLAT_INTERFACE=eth0
# Temel servisler
enable_service n-api n-cond n-sch n-cpu
enable_service neutron q-svc q-agt q-dhcp q-l3 q-meta
enable_service g-api g-reg
enable_service placement-api placement-client
enable_service c-api c-sch c-vol
# Cinder LVM backend
VOLUME_GROUP_NAME="cinder-volumes"
VOLUME_BACKING_FILE_SIZE=50G
EOF
./stack.sh
Dezavantajları: production’a uygun değil, reboot sonrası servislerin durumu tutarsız olabilir ve “unstack/restack” döngüsü bıktırıcıdır. DevStack’ı “öğrenme aracı” olarak düşünün, “deployment aracı” olarak değil.
Kolla-Ansible
Container tabanlı production-grade deployment. Her OpenStack servisi bir Docker container içinde çalışır. Ansible playbook’ları ile kurulum, yapılandırma ve güncelleme yönetilir.
# Kolla-Ansible kurulumu (özet)
pip install kolla-ansible
# Inventory dosyası (all-in-one için)
cp /etc/kolla/globals.yml /etc/kolla/globals.yml.bak
# globals.yml ayarları
cat >> /etc/kolla/globals.yml << EOF
kolla_base_distro: "ubuntu"
openstack_release: "2025.1"
kolla_internal_vip_address: "192.168.1.10"
network_interface: "eth0"
neutron_external_interface: "eth1"
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
EOF
# Bootstrap ve deploy
kolla-ansible -i all-in-one bootstrap-servers
kolla-ansible -i all-in-one prechecks
kolla-ansible -i all-in-one deploy
kolla-ansible -i all-in-one post-deploy
Kolla-Ansible’ın avantajları: production-ready, sürüm yükseltmeleri desteklenir (kolla-ansible upgrade), her servis izole container’da çalışır ve geri dönüş mümkündür. Dezavantajları: daha fazla kaynak tüketir (her container kendi overhead’ini ekler) ve ilk kurulumda daha fazla yapılandırma gerekir.
Önerim: öğrenme için DevStack ile başlayın, kavramları öğrendikten sonra Kolla-Ansible’a geçin.
Tek Sunucu All-in-One Kurulum
Tek sunucu ile çalışan bir OpenStack ortamı (“AIO — All-in-One”) mümkündür. Minimum donanım gereksinimleri:
CPU olarak 8+ core (nested virtualization desteği şart — egrep -c '(vmx|svm)' /proc/cpuinfo), RAM olarak 32GB (ideal 64GB), disk olarak 256GB SSD (root) + ek disk (Cinder LVM backend için) ve ağ için 2 NIC (management + external/provider network).
Tek sunucu AIO’da tüm servisler — Keystone, Nova, Neutron, Glance, Cinder, Placement, Horizon — aynı makinede çalışır. Nova-compute de aynı makinede olduğu için VM’ler bu sunucu üzerinde oluşturulur.
Bu yapı gerçekten işe yarar mı? Evet, birkaç VM çalıştırmak, API’leri öğrenmek ve Terraform/Ansible entegrasyonu denemek için mükemmeldir. Production’a uygun mudur? Kesinlikle hayır — tek hata noktası, ölçeklenme imkanı yok ve kaynak paylaşımı sorunları kaçınılmaz.
Ağ Yapılandırması
OpenStack ağ yapılandırması en çok sorun yaşanan konudur. Tek sunucu AIO için en basit yaklaşım provider flat network’tür.
# Neutron provider network oluşturma
openstack network create --share --external \
--provider-physical-network physnet1 \
--provider-network-type flat \
provider-net
openstack subnet create --network provider-net \
--subnet-range 192.168.1.0/24 \
--gateway 192.168.1.1 \
--dns-nameserver 8.8.8.8 \
--allocation-pool start=192.168.1.100,end=192.168.1.200 \
provider-subnet
Bu yapıda VM’ler ev ağınızdan doğrudan IP alır ve dış dünyaya erişir. Daha gelişmiş senaryolar (self-service networks, floating IP, VPN) için overlay networking (VXLAN) gerekir ki bu da ikinci bir NIC ve daha fazla yapılandırma ister.
Horizon Dashboard ve CLI
Horizon, OpenStack’ın web arayüzüdür. VM oluşturma, ağ yönetimi ve kaynak izleme gibi temel işlemleri tarayıcıdan yapabilirsiniz. Ancak gerçek güç CLI ve API’dadır.
# OpenRC dosyasını yükleme
source /etc/kolla/admin-openrc.sh
# Image yükleme
openstack image create "ubuntu-24.04" \
--file ubuntu-24.04-minimal.img \
--disk-format qcow2 \
--container-format bare \
--public
# Flavor oluşturma
openstack flavor create --vcpus 2 --ram 2048 --disk 20 m1.small
# Keypair oluşturma
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
# Security group kuralları
openstack security group rule create --proto tcp --dst-port 22 default
openstack security group rule create --proto icmp default
# VM oluşturma
openstack server create \
--image ubuntu-24.04 \
--flavor m1.small \
--network provider-net \
--key-name mykey \
--security-group default \
my-first-vm
# VM durumunu kontrol
openstack server list
openstack server show my-first-vm
Storage Backend Seçimi
Tek sunucu AIO’da Cinder için en basit backend LVM’dir. Bir partition veya loop device üzerinde volume group oluşturulur ve Cinder bu VG’den logical volume’lar tahsis eder.
# LVM backend kontrolü
sudo vgs cinder-volumes
sudo lvs cinder-volumes
# Cinder volume oluşturma
openstack volume create --size 10 my-data-volume
# Volume'u VM'e ekleme
openstack server add volume my-first-vm my-data-volume
Daha gelişmiş kurulumlar için Ceph RBD backend kullanılabilir — bunu gelecek yazılarda ayrıntılı olarak ele alacağız.
Sınırlar ve Gerçekçi Beklentiler
Tek sunucu AIO’nun sınırları belirgindir. Aynı anda 5-10’dan fazla VM çalıştırmak zor olacaktır (RAM sınırı). Network I/O tek NIC üzerinden paylaşılır. Herhangi bir donanım arızasında tüm ortam çöker. Live migration mümkün değildir (tek compute node).
Ama asıl değeri OpenStack’ın API’lerini öğrenmek, Terraform ve Ansible ile infrastructure-as-code pratik yapmak ve Ceph entegrasyonu gibi ileri konulara zemin hazırlamaktır.
İkinci bir sunucu eklediğinizde — biri controller, biri compute — çok daha gerçekçi bir ortam elde edersiniz. Üçüncü sunucu ile HA (High Availability) ve live migration mümkün hale gelir. Ev lab’ında 3 mini-PC ile gayet fonksiyonel bir OpenStack ortamı kurulabilir.
Troubleshooting İpuçları
OpenStack ile çalışırken en çok karşılaşılan sorunlar:
VM oluşturulamıyor, “No valid host found” hatası. Bu genelde Placement servisiyle ilgilidir — compute node’un kaynakları doğru raporlanmamış olabilir. openstack resource provider list ve openstack resource provider inventory list <uuid> ile kontrol edin. Nova-compute logları (/var/log/kolla/nova/nova-compute.log) ayrıntılı bilgi verir.
VM oluşturuluyor ama ağa erişemiyor. Neutron agent’ların durumunu kontrol edin: openstack network agent list. OVS bridge’lerin doğru yapılandırıldığından emin olun: ovs-vsctl show. Security group kurallarını kontrol edin — varsayılan olarak tüm gelen trafik engellenir.
Horizon’a erişilemiyor. Apache/nginx servisinin çalıştığını kontrol edin. Kolla-Ansible’da docker logs horizon ile container loglarına bakın.
Genel debug yaklaşımı: her zaman servisin log dosyalarına bakın. OpenStack çok ayrıntılı loglama yapar ve hata mesajları genelde yol göstericidir.
Sonuç
OpenStack küçük ölçekte bile değerli bir öğrenme ve deney platformudur. Tek sunucu AIO ile temel kavramları öğrenebilir, API’lere alışabilir ve ileri konulara hazırlanabilirsiniz. Production kullanım için en az 3 sunucu ve Kolla-Ansible ile uygun bir deployment gerekir.
İlerleyen yazılarda Ceph’i OpenStack’ın storage backend’i olarak yapılandırmayı — Glance image’ları, Cinder volume’ları ve Nova ephemeral diskleri için — adım adım ele alacağız.





