Ders 08 / 12
Barındırma Modelleri
Sunucunun sürekli çalışması gerekliliği, ada dayalı sanal barındırmanın işleyişi ve paylaşımlı, sanal, adanmış ve yönetilen modeller arasındaki ödünleşimler.
İçindekiler
Önceki ders ornek.test adının 192.0.2.10 adresini gösterdiğini kurdu. Geriye şu soru
kalır: o adreste ne vardır?
Yanıt, İstemci–Sunucu Modeli dersinde yazılan programın bir benzeridir: bir bağlantı noktasında bekleyen, isteği alıp yanıtlayan bir süreç. Bu ders, o sürecin nerede ve nasıl çalıştırıldığını ele alır.
Barındırmanın Çözdüğü Sorun
Sunucu programının çalışması için üç koşulun sağlanması gerekir; üçü de daha önceki derslerde ayrı ayrı kurulmuştu.
Kararlı ve erişilebilir bir adres. IP Adresi Kavramı dersinde görüldüğü gibi özel adresli bir makineye dışarıdan bağlanılamaz ve otomatik atanan adresler değişir. Sunucunun genel ve değişmeyen bir adrese gereksinimi vardır.
Sürekli çalışma. İstemci–Sunucu Modeli dersinde kurulduğu üzere sunucu, isteğin ne zaman geleceğini bilmez; her an dinliyor olmalıdır. Bu, makinenin kapanmaması, ağ bağlantısının kesilmemesi ve sürecin çökerse yeniden başlatılması demektir.
İşletme. Donanımın arızalanması, yazılımın güncellenmesi, yedeklerin alınması ve yükün artması ele alınmalıdır.
Barındırma (hosting), bu üç koşulun bir hizmet olarak sağlanmasıdır. Bir kuruluşun kendi binasında sürekli çalışan bir makine bulundurması da barındırmadır; aradaki fark koşulları kimin karşıladığıdır.
Bir Adres, Birden Çok Ad
Barındırmanın işletilebilir olmasının teknik dayanağı, bir adresin birden çok alan adına hizmet verebilmesidir. Adresler sınırlı bir kaynaktır; her alan adı için ayrı bir adres gerekseydi maliyet çok yüksek olurdu.
Sorun şudur: paket adrese gelir, adres tek bir makineyi gösterir. Sunucu, isteğin hangi alan adı için yapıldığını nereden bilecektir?
Yanıt, isteğin kendisinde taşınır. İstemci, bağlandığı adı isteğin içinde Host başlığıyla
bildirir. İstemci–Sunucu Modeli dersindeki çıktıda bu satır zaten görünmüştü:
> GET / HTTP/1.1 > Host: ornek.test:8080
Sunucu bu başlığa bakarak hangi siteyi sunacağına karar verir. Bu düzene ada dayalı sanal barındırma (name-based virtual hosting) denir.
Aşağıdaki sunucu tek bir adres ve bağlantı noktasında dinler, ancak iki ayrı site sunar:
from http.server import BaseHTTPRequestHandler, HTTPServer SITELER: dict[str, bytes] = { "ornek.test": b"<h1>Ornek Sitesi</h1>\n", "deneme.test": b"<h1>Deneme Sitesi</h1>\n", } class Isleyici(BaseHTTPRequestHandler): protocol_version = "HTTP/1.1" def log_message(self, bicem: str, *arg: object) -> None: pass def do_GET(self) -> None: ad = self.headers.get("Host", "").split(":")[0] govde = SITELER.get(ad, b"<h1>Bilinmeyen konak</h1>\n") durum = 200 if ad in SITELER else 404 self.send_response_only(durum) self.send_header("Content-Type", "text/html; charset=utf-8") self.send_header("Content-Length", str(len(govde))) self.end_headers() self.wfile.write(govde) HTTPServer(("127.0.0.1", 8080), Isleyici).serve_forever()
Sunucu çalışırken üç istek yapılır. Üçü de aynı adrese gider; yalnızca bildirilen ad değişir.
curl -s --resolve ornek.test:8080:127.0.0.1 http://ornek.test:8080/ curl -s --resolve deneme.test:8080:127.0.0.1 http://deneme.test:8080/ curl -s --resolve baska.test:8080:127.0.0.1 http://baska.test:8080/
<h1>Ornek Sitesi</h1> <h1>Deneme Sitesi</h1> <h1>Bilinmeyen konak</h1>
Üç istek 127.0.0.1 adresinin 8080 numaralı bağlantı noktasına gitti ve üç farklı yanıt
aldı. Ayrımı yapan tek şey Host başlığıydı.
Bunun iki sonucu vardır. Birincisi, bir adresi paylaşan siteler birbirini adres düzeyinde göremez; ayrım sunucu programının içinde yapılır. İkincisi, bu başlık zorunludur: bildirmeyen bir istemci, sunucunun hangi siteyi sunacağını belirlemesini olanaksız kılar.
Barındırma Modelleri
Üç koşulun kimin tarafından ve hangi düzeyde karşılandığı, modelleri ayırır.
Paylaşımlı Barındırma
Bir makine, çok sayıda müşterinin sitesini aynı işletim sistemi üzerinde çalıştırır. Yukarıdaki sanal barındırma düzeni doğrudan bu modelin temelidir.
Kaynaklar paylaşıldığı için maliyeti en düşük modeldir ve işletme yükünün tamamı sağlayıcıdadır. Bedeli yalıtımın zayıflığıdır: bir sitenin tükettiği kaynak, aynı makinedeki diğer siteleri etkiler. Yapılandırma seçenekleri sağlayıcının izin verdiğiyle sınırlıdır; işletim sistemi düzeyinde denetim yoktur.
Sanal Özel Sunucu
Bir fiziksel makine, sanallaştırma yoluyla birbirinden yalıtılmış birden çok sanal makineye bölünür. Her müşteri kendi işletim sistemine ve kendi yönetici yetkisine sahiptir.
Kaynaklar tanımlı sınırlarla ayrıldığı için komşu etkisi belirgin biçimde azalır; yazılım seçimi ve yapılandırma müşterinin denetimindedir. Buna karşılık işletim sisteminin bakımı, güvenlik güncellemeleri ve yedekleme müşterinin sorumluluğuna geçer.
Yalıtımın nasıl sağlandığı — ad alanları, denetim grupları ve sanallaştırma — Çekirdek Arayüzleri ve İzolasyon kursunun kapsamındadır.
Adanmış Sunucu
Fiziksel makinenin tamamı tek bir müşteriye ayrılır. Kaynak paylaşımı yoktur; donanım seçimi ve başarım öngörülebilirliği en yüksek düzeydedir.
Maliyet, kullanılsın kullanılmasın makinenin tamamı için ödenir. Donanım arızasının etkisi doğrudandır ve yedeklilik ayrıca kurulmalıdır.
Yönetilen Barındırma
Ayırıcı ölçüt donanım değil, sorumluluğun sınırıdır. Yönetilen bir modelde sağlayıcı yalnızca makineyi değil, üzerindeki yazılımın işletimini de üstlenir: güncelleme, yedekleme, izleme ve ölçekleme.
Müşteri, yapılandırma özgürlüğünün bir bölümünden vazgeçerek işletme yükünden kurtulur. Bu model diğer üçüyle aynı eksende değildir; bir sanal özel sunucu da adanmış bir sunucu da yönetilen biçimde sunulabilir.
Karşılaştırma
| Ölçüt | Paylaşımlı | Sanal özel | Adanmış | Yönetilen |
|---|---|---|---|---|
| Yalıtım | Zayıf | Tanımlı sınırlarla | Tam | Modele bağlı |
| Yönetici yetkisi | Yok | Var | Var | Sınırlı |
| İşletme yükü | Sağlayıcıda | Müşteride | Müşteride | Sağlayıcıda |
| Başarım öngörülebilirliği | Düşük | Orta | Yüksek | Modele bağlı |
| Göreli maliyet | En düşük | Orta | En yüksek | Hizmete bağlı |
Ölçütlerin hiçbirinde tek bir seçenek üstün değildir. Seçim, sitenin gereksinimleri ile işletmeye ayrılabilecek emek arasındaki dengeye bağlıdır.
Durağan ve Devingen İçerik
Barındırma gereksinimini belirleyen bir ayrım da içeriğin nasıl üretildiğidir.
Durağan içerikte sunucu, diskteki bir dosyayı olduğu gibi gönderir. Her istek aynı yanıtı üretir. Bu tür içerik hesaplama gerektirmez ve çoğaltılması ucuzdur.
Devingen içerikte yanıt, istek geldiğinde hesaplanır: veritabanı sorgulanır, kullanıcıya özel bölümler üretilir. Her istek işlemci ve bellek tüketir; ölçeklenmesi durağan içerikten belirgin biçimde güçtür.
Bu ayrım bir yerleştirme kararına yol açar. Durağan içerik, kullanıcılara yakın konumlara dağıtılmış sunucularda çoğaltılabilir. Bu düzende bir kullanıcının isteği kendisine en yakın kopyaya gider; gecikme, Ağ Nedir dersinde kurulduğu üzere yayılma mesafesiyle sınırlı olduğundan kazanç doğrudandır. Devingen içerik ise durumun tutulduğu yere bağlı kalır ve bu biçimde çoğaltılamaz.
Bu yüzden pratikte iki içerik türü ayrılır: sayfanın değişmeyen bölümleri dağıtılmış kopyalardan, kullanıcıya özel bölümleri kaynak sunucudan gelir.
Özet
- Barındırma, sunucu programı için kararlı bir adres, sürekli çalışma ve işletme koşullarını sağlar.
- Ada dayalı sanal barındırma, isteğin
Hostbaşlığına bakarak tek bir adreste birden çok siteyi sunar; ayrım adres düzeyinde değil sunucu programının içinde yapılır. - Paylaşımlı barındırma en düşük maliyet ve en zayıf yalıtımı, adanmış sunucu tersini verir; sanal özel sunucu ikisinin arasındadır.
- Yönetilen barındırma donanımla değil sorumluluğun sınırıyla tanımlanır ve diğer modellerin üzerine uygulanabilir.
- Durağan içerik çoğaltılarak kullanıcıya yaklaştırılabilir; devingen içerik durumun tutulduğu yere bağlıdır.
Sonraki Adım
Bu konu, adres satırına yazılan adın nasıl bir sunucuya vardığını baştan sona kurdu: ad yapısı, çözümleme zinciri, kayıtlar ve o adresteki makine. Buna karşın sunucuya varıldıktan sonra ne söylendiği hep aynı iki satırla geçiştirildi. Sonraki konu o alışverişin kendisini açar: isteğin ve yanıtın hangi parçalardan oluştuğunu, durum kodlarının ne bildirdiğini ve sunucunun istekler arasında neden hiçbir şey anımsamadığını ele alacak.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.