Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Merhaba, benim adım Kostya Kramlikh, Yandex.Cloud'daki Sanal Özel Bulut bölümünün lider geliştiricisiyim. Ben bir sanal ağ uzmanıyım ve tahmin edebileceğiniz gibi bu yazıda genel olarak Virtual Private Cloud (VPC) cihazından ve özel olarak da sanal ağdan bahsedeceğim. Ayrıca, hizmetin geliştiricileri olarak bizlerin, kullanıcılarımızdan gelen geri bildirimlere neden değer verdiğimizi de öğreneceksiniz. Ama önce ilk şeyler.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

VPC nedir?

Günümüzde, hizmetleri dağıtmak için çeşitli seçenekler vardır. Eminim birisi hala sunucuyu yönetici masasının altında tutuyordur, ancak umarım bu tür hikayelerin sayısı azalır.

Artık hizmetler genel bulutlara gitmeye çalışıyor ve VPC'lerle burada çarpışıyorlar. VPC, Bulutumuzda veya dışında nerede olurlarsa olsunlar, kullanıcı, altyapı, platform ve diğer kapasiteleri birbirine bağlayan bir genel bulutun parçasıdır. Aynı zamanda VPC, bu kapasiteleri gereksiz yere internete maruz bırakmamanızı sağlar, izole ağınız içinde kalırlar.

Sanal ağ dışarıdan nasıl görünür?

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

VPC ile öncelikle VPNaaS, NATAas, LBaas, vb. gibi bir yer paylaşımlı ağ ve ağ hizmetlerini kastediyoruz. harika makale burada, Habré'de.

Sanal ağa ve cihazına daha yakından bakalım.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

İki kullanılabilirlik bölgesi düşünün. VPC dediğimiz sanal bir ağ sağlıyoruz. Aslında, "gri" adreslerinizin benzersizlik alanını tanımlar. Her sanal ağ içinde, bilgi işlem kaynaklarına atayabileceğiniz adres alanı üzerinde tam denetime sahipsiniz.

Ağ küreseldir. Aynı zamanda, Alt ağ adı verilen bir varlık biçiminde kullanılabilirlik bölgelerinin her birine yansıtılır. Her Alt Ağ için, boyutu 16 veya daha küçük olan bir CIDR atarsınız. Her kullanılabilirlik bölgesinde birden fazla varlık olabilir ve bunlar arasında her zaman şeffaf bir yönlendirme vardır. Bu, aynı VPC içindeki tüm kaynaklarınızın, farklı Erişilebilirlik Alanlarında olsalar bile birbirleriyle "konuşabileceği" anlamına gelir. Aynı özel ağ içinde olduklarını "düşünerek" dahili kanallarımız aracılığıyla İnternet erişimi olmadan "iletişim kurun".

Yukarıdaki diyagram tipik bir durumu göstermektedir: adreslerde bir yerde kesişen iki VPC. İkisi de senin olabilir. Örneğin, biri geliştirme için, diğeri test için. Farklı kullanıcılar olabilir - bu durumda önemli değil. Ve her VPC'ye bir sanal makine takılır.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Planı daha da kötüleştirelim. Bir sanal makinenin aynı anda birkaç Alt Ağa takılmasını sağlayabilirsiniz. Ve sadece böyle değil, farklı sanal ağlarda.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Aynı zamanda, makineleri İnternet'e maruz bırakmanız gerekirse, bu API veya UI aracılığıyla yapılabilir. Bunu yapmak için, "gri", dahili adresinizin NAT çevirisini "beyaz" - genel olarak yapılandırmanız gerekir. "Beyaz" bir adres seçemezsiniz, adres havuzumuzdan rastgele atanır. Harici IP'yi kullanmayı bıraktığınız anda havuza geri döner. Yalnızca "beyaz" adresi kullandığınız süre için ödeme yaparsınız.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Bir NAT örneği kullanarak makineye İnternet erişimi vermek de mümkündür. Trafiği statik bir yönlendirme tablosu aracılığıyla bir örneğe yönlendirebilirsiniz. Böyle bir durum sağladık çünkü kullanıcılar bazen buna ihtiyaç duyar ve biz de bunu biliyoruz. Buna göre resim kataloğumuz özel olarak yapılandırılmış bir NAT imajı içermektedir.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Ancak hazır bir NAT görüntüsü olduğunda bile kurulum zor olabilir. Bazı kullanıcılar için bunun en uygun seçenek olmadığını anladık, bu nedenle sonunda NAT'ı istenen Alt Ağ için tek tıklamayla etkinleştirmeyi mümkün kıldık. Bu özellik, topluluk üyelerinin yardımıyla test edildiği kapalı önizleme erişimindedir.

Sanal ağ içeriden nasıl düzenlenir?

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Kullanıcı sanal ağ ile nasıl etkileşime giriyor? Web, API'si ile dışa bakar. Kullanıcı API'ye gelir ve hedef durumla çalışır. Kullanıcı, API aracılığıyla her şeyin nasıl düzenlenmesi ve yapılandırılması gerektiğini görürken durumu, gerçek durumun istenenden ne kadar farklı olduğunu görür. Bu, kullanıcının bir resmidir. İçeride neler oluyor?

İstenen durumu Yandex Veritabanına yazıyoruz ve VPC'mizin farklı bölümlerini yapılandırmaya gidiyoruz. Yandex.Cloud'daki bindirme ağı, yakın zamanda Tungsten Fabric olarak adlandırılan OpenContrail'in seçilmiş bileşenlerini temel alır. Ağ hizmetleri, tek bir CloudGate platformunda uygulanmaktadır. CloudGate'te ayrıca bir dizi açık kaynak bileşeni kullandık: GoBGP - kontrol bilgilerine erişmek için ve ayrıca VPP - veri yolu için DPDK üzerinde çalışan bir yazılım yönlendiricisi uygulamak için.

Tungsten Fabric, CloudGate ile GoBGP aracılığıyla iletişim kurar. Bindirme ağında neler olup bittiğini anlatır. CloudGate ise yer paylaşımlı ağları birbirine ve İnternet'e bağlar.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Şimdi bir sanal ağın ölçekleme ve kullanılabilirlik sorunlarını nasıl çözdüğünü görelim. Basit bir durumu ele alalım. Bir kullanılabilirlik alanı vardır ve içinde iki VPC oluşturulur. Bir Tungsten Fabric örneği dağıttık ve bu, on binlerce ağı çekiyor. Ağlar CloudGate ile iletişim kurar. CloudGate, daha önce de söylediğimiz gibi, birbirleriyle ve İnternet ile bağlantılarını sağlar.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Diyelim ki ikinci bir kullanılabilirlik alanı eklendi. İlkinden tamamen bağımsız olarak başarısız olmalıdır. Bu nedenle, ikinci kullanılabilirlik bölgesinde ayrı bir Tungsten Fabric örneği kurmalıyız. Bu, bindirme ile ilgilenen ve ilk sistem hakkında çok az şey bilen ayrı bir sistem olacaktır. Ve sanal ağımızın küresel olduğunun görünürlüğü aslında VPC API'mizi oluşturur. Bu onun görevi.

Kullanılabilirlik Alanı B'de VPC1'e aktarılan kaynaklar varsa VPC1, Kullanılabilirlik Alanı B ile eşlenir. B kullanılabilirlik bölgesinde VPC2'den kaynak yoksa, bu bölgede VPC2'yi gerçekleştirmeyeceğiz. Buna karşılık, VPC3'ten gelen kaynaklar yalnızca B bölgesinde bulunduğundan, VPC3 A bölgesinde mevcut değildir. Her şey basit ve mantıklıdır.

Biraz daha derine inelim ve Y.Cloud'da belirli bir ana bilgisayarın nasıl çalıştığını görelim. Not etmek istediğim en önemli şey, tüm ev sahiplerinin aynı şekilde düzenlenmiş olmasıdır. Hizmetlerin yalnızca gerekli olan minimum kısmı donanımda çalışacak, geri kalan her şey sanal makinelerde çalışacak şekilde yapıyoruz. Temel altyapı hizmetlerine dayalı üst düzey hizmetler oluşturuyoruz ve örneğin Sürekli Entegrasyon çerçevesinde bazı mühendislik sorunlarını çözmek için Bulut'u kullanıyoruz.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Belirli bir ana bilgisayara bakarsak, ana bilgisayar işletim sisteminde çalışan üç bileşen olduğunu görebiliriz:

  • Hesaplama - bilgi işlem kaynaklarının ana bilgisayarda dağıtılmasından sorumlu kısım.
  • VRouter, bir kaplamayı düzenleyen Tungsten Fabric'in bir parçasıdır, yani paketleri bir alt katmandan tüneller.
  • VDisk'ler, depolama sanallaştırma parçalarıdır.

Ayrıca sanal makinelerde hizmetler başlatılır: Bulut altyapı hizmetleri, platform hizmetleri ve müşteri kapasiteleri. Müşteri kapasiteleri ve platform hizmetleri her zaman VRouter aracılığıyla yer paylaşımına gider.

Altyapı hizmetleri kaplamaya yapışabilir, ancak temel olarak alt katmanda çalışmak isterler. SR-IOV yardımıyla şilteye yapıştırılırlar. Aslında performansı kaybetmemek için kartı sanal ağ kartlarına (sanal işlevler) ayırıp altyapı sanal makinelerine itiyoruz. Örneğin, bu altyapı sanal makinelerinden biri olarak aynı CloudGate başlatılır.

Artık sanal ağın küresel görevlerini ve bulutun temel bileşenlerinin yapısını tanımladığımıza göre, sanal ağın farklı bölümlerinin birbirleriyle tam olarak nasıl etkileşime girdiğini görelim.

Sistemimizde üç katman ayırıyoruz:

  • Yapılandırma Düzlemi - sistemin hedef durumunu ayarlar. Bu, kullanıcının API aracılığıyla yapılandırdığı şeydir.
  • Kontrol Düzlemi - kullanıcı tanımlı semantik sağlar, yani Veri Düzlemi durumunu kullanıcı tarafından Yapılandırma Düzlemi'nde açıklanan duruma getirir.
  • Veri Düzlemi - doğrudan kullanıcının paketlerini işler.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Yukarıda söylediğim gibi, her şey kullanıcı veya dahili platform hizmetinin API'ye gelmesi ve belirli bir hedef durumu tanımlamasıyla başlar.

Bu durum anında Yandex Veritabanına yazılır, API aracılığıyla eşzamansız işlem kimliğini döndürür ve kullanıcının istediği durumu döndürmek için dahili makinemizi başlatır. Konfigürasyon görevleri, SDN denetleyicisine gider ve Tungsten Fabric'e kaplamada ne yapacağını söyler. Örneğin, bağlantı noktalarını, sanal ağları ve benzerlerini ayırırlar.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Tungsten Fabric'teki Yapılandırma Düzlemi, gerekli durumu Kontrol Düzlemine gönderir. Bu sayede Config Plane, ana bilgisayarlarla iletişim kurarak yakında üzerlerinde tam olarak neyin döneceğini söyler.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Şimdi sistemin ana bilgisayarlarda nasıl göründüğüne bakalım. Sanal makinenin VRouter'a takılı bir ağ bağdaştırıcısı vardır. VRouter, paketlere bakan çekirdek bir Tungsten Fabric modülüdür. Bazı paketler için zaten bir akış varsa, modül bunu işler. Akış yoksa modül punting denilen işlemi yapar, yani usermod işlemine bir paket gönderir. İşlem paketi ayrıştırır ve DHCP ve DNS gibi kendisine yanıt verir veya VRouter'a paketle ne yapacağını söyler. Bundan sonra, VRouter paketi işleyebilir.

Ayrıca, aynı sanal ağ içindeki sanal makineler arasındaki trafik şeffaf bir şekilde gider, CloudGate'e yönlendirilmez. Sanal makinelerin konuşlandırıldığı ana bilgisayarlar birbirleriyle doğrudan iletişim kurar. Trafiği tünelliyorlar ve alt tabakadan birbirlerine iletiyorlar.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Kontrol Düzlemleri, başka bir yönlendiricide olduğu gibi BGP aracılığıyla kullanılabilirlik bölgeleri arasında birbirleriyle iletişim kurar. Bir bölgedeki VM'lerin diğer VM'lerle doğrudan iletişim kurabilmesi için hangi makinelerin nerede olduğunu söylerler.

Yandex.Cloud, Virtual Private Cloud ile nasıl çalışır ve kullanıcılarımız kullanışlı özellikleri uygulamamıza nasıl yardımcı olur?

Ve Control Plane, CloudGate ile iletişim kurar. Benzer şekilde sanal makinelerin nerede ve hangi adreslere yükseltildiğini, hangi adreslere sahip olduğunu raporlar. Bu, harici trafiği ve dengeleyicilerden gelen trafiği onlara yönlendirmenizi sağlar.

VPC'den ayrılan trafik, eklentilerimizle birlikte VPP'nin hızla çiğnendiği veri yoluna, CloudGate'e gelir. Ardından trafik, diğer VPC'lere veya dışarıya, CloudGate'in Kontrol Düzlemi aracılığıyla yapılandırılan sınır yönlendiricilerine yönlendirilir.

Yakın gelecek için planlar

Yukarıda anlatılanları birkaç cümle ile özetleyecek olursak Yandex.Cloud'daki VPC'nin iki önemli görevi çözdüğünü söyleyebiliriz:

  • Farklı istemciler arasında izolasyon sağlar.
  • Kaynakları, altyapıyı, platform hizmetlerini, diğer bulutları ve kurum içi hizmetleri tek bir ağda birleştirir.

Ve bu sorunları iyi bir şekilde çözmek için, VPC'nin yaptığı gibi, iç mimari düzeyinde ölçeklenebilirlik ve hata toleransı sağlamanız gerekir.

VPC yavaş yavaş işlevler kazanıyor, yeni özellikler uyguluyoruz, kullanıcı kolaylığı açısından bir şeyler geliştirmeye çalışıyoruz. Topluluğumuzun üyeleri sayesinde bazı fikirler dile getiriliyor ve öncelik listesine alınıyor.

Şu anda yakın gelecek için aşağıdaki planlara sahibiz:

  • Hizmet olarak VPN.
  • Özel DNS örnekleri, önceden yapılandırılmış bir DNS sunucusuyla sanal makineleri hızlı bir şekilde kurmak için kullanılan görüntülerdir.
  • Hizmet olarak DNS.
  • Dahili yük dengeleyici.
  • Sanal makineyi yeniden oluşturmadan "beyaz" bir IP adresi ekleme.

Dengeleyici ve önceden oluşturulmuş bir sanal makine için IP adresini değiştirme yeteneği, kullanıcıların isteği üzerine bu listede yer aldı. Dürüst olmak gerekirse, açık geri bildirimler olmasaydı, bu işlevleri biraz sonra üstlenirdik. Ve bu yüzden zaten adreslerle ilgili problem üzerinde çalışıyoruz.

Başlangıçta, "beyaz" bir IP adresi yalnızca bir makine oluşturulurken eklenebilirdi. Kullanıcı bunu yapmayı unutursa, sanal makinenin yeniden oluşturulması gerekiyordu. Aynısı ve gerekirse harici IP'yi kaldırın. Yakında, makineyi yeniden oluşturmak zorunda kalmadan genel IP'yi açıp kapatmak mümkün olacak.

Kendinizi ifade etmekten çekinmeyin fikir ve destek önerileri diğer kullanıcılar. Bulutu daha iyi hale getirmemize ve önemli ve kullanışlı özellikleri daha hızlı elde etmemize yardımcı oluyorsunuz!

Kaynak: habr.com

Yorum ekle