1. Giriş
Herkese merhaba, bugün geldiğiniz için teşekkür ederiz. Google Compute Engine'i öğrenmeye hazır mısınız?
Bu codelab'de, örnek bir Konuk Defteri uygulamasıyla Compute Engine'i keşfedeceğiz.
Compute Engine örnekleri oluşturacak, nginx'i dağıtacak ve son olarak da ön tarafa ağ yük dengeleyici koyacaksınız. Grafik konsoldan veya komut satırından Compute Engine örneği oluşturabilirsiniz. Bu laboratuvar, komut satırını kullanma konusunda size yol gösterecektir.
Google Compute Engine, Google'ın dünya çapındaki fiber ağına bağlı veri merkezlerinde çalışan sanal makineler sunar. Sunulan araçlar ve iş akışı, tekli örneklerden küresel, yük dengeli bulut bilişimine kadar ölçeklendirmeye olanak tanır.
Bu sanal makineler hızlı bir şekilde önyüklenir, kalıcı disk depolama seçenekleriyle sunulur ve istikrarlı performans sunar. Makineler, önceden tanımlanmış boyutlar dahil birçok yapılandırmayla sunulur ve belirli ihtiyaçlarınıza göre optimize edilmiş Özel Makine Türleri ile de oluşturulabilir.
Son olarak, Compute Engine sanal makineleri aynı zamanda diğer birkaç Google Cloud ürünü (Kubernetes Engine, Cloud Dataproc, Cloud Dataflow vb.) tarafından da kullanılan teknolojidir.
2. Kurulum ve Gereksinimler
Kendi hızınızda ortam kurulumu
- Google Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.
- Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir ve bunu istediğiniz zaman güncelleyebilirsiniz.
- Proje Kimliği, tüm Google Cloud projelerinde benzersiz olmalıdır ve değiştirilemez (belirlendikten sonra değiştirilemez). Cloud Console, otomatik olarak benzersiz bir dize oluşturur. bunun ne olduğunu umursamıyorsunuz. Çoğu codelab'de, Proje Kimliğine referans vermeniz gerekir (ve bu kimlik genellikle
PROJECT_ID
olarak tanımlanır). Beğenmezseniz başka bir rastgele kod oluşturun ya da kendi proje kimliğinizi deneyip mevcut olup olmadığına bakın. Sıcaklık "soğudu" takip etmeniz gerekir. - Bazı API'lerin kullandığı üçüncü bir değer, yani Proje Numarası daha vardır. Bu değerlerin üçü hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
- Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. Bu eğitim dışında faturalandırmayla karşılaşmamak için kaynakları kapatmak istiyorsanız tüm "temizleme" işlemlerini uygulayın buradaki talimatları uygulayın. Yeni Google Cloud kullanıcıları, 300 ABD doları değerindeki ücretsiz denemeden yararlanabilir.
Google Cloud Shell
Google Cloud ve Compute Engine, dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de bu codelab'de Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacağız.
Bu Debian tabanlı sanal makine, ihtiyacınız olan tüm geliştirme araçlarıyla yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Yani bu codelab'de ihtiyacınız olan tek şey bir tarayıcıdır (Evet, Chromebook'ta çalışır).
- Cloud Shell'i Cloud Console'dan etkinleştirmek için Cloud Shell'i etkinleştir simgesini tıklamanız yeterlidir (sağlanması ve ortama bağlanması yalnızca birkaç dakika sürer).
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin PROJECT_ID
olarak ayarlanmış olduğunu göreceksiniz.
gcloud auth list
Komut çıkışı
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Herhangi bir nedenle proje ayarlanmamışsa şu komutu vermeniz yeterlidir:
gcloud config set project <PROJECT_ID>
PROJECT_ID
cihazınızı mı arıyorsunuz? Kurulum adımlarında kullandığınız kimliği kontrol edin veya Cloud Console kontrol panelinden arayın:
Cloud Shell bazı ortam değişkenlerini de varsayılan olarak ayarlar. Bu değişkenler, gelecekte komut çalıştırdığınızda işinize yarayabilir.
echo $GOOGLE_CLOUD_PROJECT
Komut çıkışı
<PROJECT_ID>
- Son olarak, varsayılan alt bölgeyi ve proje yapılandırmasını ayarlayın.
gcloud config set compute/zone us-central1-f
Çeşitli farklı alt bölgeler seçebilirsiniz. Daha fazla bilgi için Bölgeler ve Bölgeler.
3. Compute Engine örneği oluşturma
Daha önce belirtildiği gibi, bu codelab'de gcloud
komut satırını kullanacağız. Buradaki tüm işlemleri konsolu kullanarak gerçekleştirebilirsiniz (console.cloud.google.com adresinden ulaşabilirsiniz).
Önce varsayılan ayarlarla bir örnek oluşturalım :
$ gcloud compute instances create myinstance Created [...]. NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
EXTERNAL_IP
bölümünü not edin. Bu daha sonra önemlidir.
Örnek, bir dizi varsayılan kullanılarak oluşturulur :
- Seçtiğiniz alt bölge. Tüm örnekler bir alt bölgede bulunur. Örnek oluşturma sırasında
--zone
işaretini kullanarak bir alt bölge seçebilir veya (ilk kurulumda yaptığımız gibi) varsayılan bir alt bölge belirleyip--zone
işaretini atlayabilirsiniz. - En yeni Debian GNU/Linux 9 (stretch) görüntüsü. Kendi özel resminizi kullanıyorsanız resmin adını burada belirtin. Örneğin,
--image my-own-image
. n1-standard-1
makine türü.n1-highmem-4
veyan1-highcpu-6
gibi başka bir makine türü seçebilirsiniz. Önceden tanımlanmış makine türlerinden hiçbiri ihtiyaçlarınıza uymuyorsa özel makine türü kullanın.- Örnekle aynı ada sahip bir kök kalıcı disk. Bu disk otomatik olarak örneğe eklenir.
Mevcut tüm seçenekleri görmek için gcloud compute instances create --help
komutunu çalıştırın.
4. Bağlantı Noktası 80 için Güvenlik Duvarını etkinleştir
Google Cloud Platform, varsayılan olarak yalnızca birkaç bağlantı noktası erişimine izin verir. Nginx'i yakında yükleyeceğimiz için öncelikle güvenlik duvarı yapılandırmasında 80 numaralı bağlantı noktasını etkinleştirelim.
$ gcloud compute firewall-rules create allow-80 --allow tcp:80 Created [...]. NAME: allow-80 NETWORK: default DIRECTION: INGRESS PRIORITY: 1000 ALLOW: tcp:80 DENY: DISABLED: False
Bu işlemle allow-80
adında bir güvenlik duvarı kuralı oluşturulur. Bu kural, gelen bağlantı oluşturmasına izin verilen IP adresi bloklarının varsayılan listesini (--source-ranges
) 0.0.0.0/0
(Her yer) olarak ayarlar.
Etiketlere göre güvenlik duvarı kuralları uygulama özelliği de dahil olmak üzere tüm varsayılanları ve kullanılabilen tüm seçenekleri görmek için gcloud compute firewall-rules create --help
komutunu çalıştırın.
5. Örneğe SSH
Komut satırından (yine de Cloud Shell'den) örneğe SSH uygulamak için:
$ gcloud compute ssh myinstance Waiting for SSH key to propagate. Warning: Permanently added 'compute.12345' (ECDSA) to the list of known hosts. ... yourusername@myinstance:~#
Hepsi bu kadar! kolaydı. (Üretimde bir parola girdiğinizden emin olun :)
Alternatif olarak, Compute Engine > bölümüne giderek doğrudan konsoldan ( console.cloud.google.com) örneğe SSH uygulayabilirsiniz Sanal Makine Örnekleri'ne gidin ve SSH'yi tıklayın.
6. Nginx'i yükleme
Yeni oluşturulan örneğe (myinstance) giriş yapın ve nginx'i yükleyin:
$ sudo su - # apt update # apt install -y nginx # service nginx start # exit
Sunucunun, myinstance örneğindeki curl
kullanarak çalışıp çalışmadığını test edin:
$ curl -s localhost | grep nginx <title>Welcome to nginx!</title> <h1>Welcome to nginx!</h1> <p>If you see this page, the nginx web server is successfully installed and <a href="http://nginx.org/">nginx.org</a>.<br/> <a href="http://nginx.com/">nginx.com</a>.</p> <p><em>Thank you for using nginx.</em></p>
Web kullanıcı arayüzü aracılığıyla örneklerinizi listeleyerek örneğinizin harici IP'sini bulun:
SSH'den çıktığınızdan emin olun ve Cloud Shell'den şu komutu çalıştırın:
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
Ardından http://EXTERNAL_IP/
adresine gidin. Burada EXTERNAL_IP
, myinstance öğesinin herkese açık IP'sidir. Ardından nginx sayfasını görebilirsiniz:
7. Başlangıç Komut Dosyası
Örneği her defasında ayarlamak yerine, başlatma sonrasında ilk kullanıma hazırlamak için bir başlangıç komut dosyası kullanabilirsiniz.
Aşağıdaki içeriğe sahip startup.sh
adlı bir dosya oluşturun (favori metin düzenleyicinizi kullanabilirsiniz: vim
, nano
veya emacs
):
#! /bin/bash apt-get update apt-get install -y nginx service nginx start sed -i -- 's/nginx/Google Cloud Platform - '"$HOSTNAME"'/' /var/www/html/index.nginx-debian.html
Bu başlangıç komut dosyasıyla yeni bir sanal makine örneği oluşturmak için şunu yazmanız yeterlidir :
$ gcloud compute instances create nginx \ --metadata-from-file startup-script=startup.sh Created [...]. NAME: nginx ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
http://EXTERNAL_IP/
adresine göz atın. Güncellenmiş ana sayfayı göreceksiniz. Birkaç saniye sonra sayfa hemen yeniden denemezse ana makine hâlâ nginx'i başlatıyor olabilir.
8. Sunucu Kümesi Oluşturma
Sunucu kümesi oluşturmak için önce Örnek Şablonu oluşturmanız gerekir. Örnek şablonu oluşturulduktan sonra oluşturulacak örnek sayısını yönetmek için örnek grubu oluşturabilirsiniz.
İlk olarak başlangıç komut dosyasını kullanarak bir örnek şablonu oluşturun :
$ gcloud compute instance-templates create nginx-template \ --metadata-from-file startup-script=startup.sh Created [...]. NAME: nginx-template MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: CREATION_TIMESTAMP: 2022-03-18T15:10:37.621-07:00
İkinci olarak, bir hedef havuz oluşturalım. Hedef havuz, gruptaki tüm örnekler için tek bir erişim noktasına sahip olmamızı sağlar ve sonraki adımlarda yük dengeleme için gereklidir.
$ gcloud compute target-pools create nginx-pool Created [...]. NAME: nginx-pool REGION: us-central1 SESSION_AFFINITY: NONE BACKUP: HEALTH_CHECKS:
Son olarak, şablonu kullanarak bir örnek grubu oluşturun:
$ gcloud compute instance-groups managed create nginx-group \ --base-instance-name nginx \ --size 2 \ --template nginx-template \ --target-pool nginx-pool Created [...]. NAME: nginx-group LOCATION: us-central1-f SCOPE: zone BASE_INSTANCE_NAME: nginx SIZE: 0 TARGET_SIZE: 2 INSTANCE_TEMPLATE: nginx-template AUTOSCALED: no
Bu işlem, nginx-
ön ekine sahip adlara sahip iki ek sanal makine örneği oluşturur.
Artık oluşturulan tüm örnekleri görebilirsiniz.
$ gcloud compute instances list NAME: myinstance ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-frpl ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING NAME: nginx-ztg4 ZONE: us-central1-f MACHINE_TYPE: n1-standard-1 PREEMPTIBLE: INTERNAL_IP: 10.128.X.X EXTERNAL_IP: X.X.X.X STATUS: RUNNING
9. Ağ Yük Dengeleyici Oluşturma
Google Cloud Platform'da birkaç tür yük dengeleyici bulunur :
- L3 Ağ Yük Dengeleyicisi
- bir L7 HTTP(S) Yük Dengeleyici
Örnek grubumuzu hedefleyen bir bölgesel ağ yük dengeleyici oluşturalım:
$ gcloud compute forwarding-rules create nginx-lb \ --ports 80 \ --target-pool nginx-pool Created [...]. $ gcloud compute forwarding-rules list NAME: nginx-lb REGION: us-central1 IP_ADDRESS: X.X.X.X IP_PROTOCOL: TCP TARGET: us-central1/targetPools/nginx-pool
Ardından, http://IP_ADDRESS/
tarayıcısından yük dengeleyiciyi ziyaret edebilirsiniz. Burada IP_ADDRESS
, önceki komutun çalıştırılması sonucunda gösterilen adrestir.
Belirtilen süre nedeniyle bugün HTTP yük dengeleyici oluşturmayacağız.
10. Kümeyi temizleyin
Kümenizi kapatmayı unutmayın. Aksi takdirde kümeler çalışmaya ve maliyet oluşturmaya devam eder. Aşağıdaki komutlar Google Compute Engine örneklerini, Örnek Grubunu, Hedefleme Grubunu ve Yük Dengeleyici'yi siler.
$ gcloud compute forwarding-rules delete nginx-lb $ gcloud compute instance-groups managed delete nginx-group $ gcloud compute target-pools delete nginx-pool $ gcloud compute instance-templates delete nginx-template $ gcloud compute instances delete nginx $ gcloud compute instances delete myinstance $ gcloud compute firewall-rules delete allow-80
Yukarıdaki komutların her biri, kaynağın silinmesini onaylamanızı istemelidir.
11. Sırada ne var?
Tebrikler, bu Compute Engine codelab'ini tamamladınız.
Diğer Compute Engine özellikleri
Google Compute Engine'in zengin özellikleri vardır. Bunlardan bazılarını öğrenmek isteyebilirsiniz :
- Öncelikli Sanal Makineler: https://cloud.google.com/compute/docs/instances/create-start-preemptible-instance
- Tek kiracılı düğümler - https://cloud.google.com/compute/docs/nodes/create-nodes
- GPU'lar ve TPU'lar: https://cloud.google.com/compute/docs/gpus/add-gpus
- Windows örnekleri: https://cloud.google.com/compute/docs/instances/windows/creating-managing-windows-instances
- Kaynakları Etiketleme: https://cloud.google.com/compute/docs/labeling-resources
- Sanal Makineleri Compute Engine'e Taşıma: https://cloud.google.com/compute/docs/vm-migration/
Google Kubernetes Engine
Google Kubernetes Engine (GKE), Google Cloud'un barındırılan ve tümüyle yönetilen Kubernetes teklifidir. GKE'yi kullanmaya başlamanıza yardımcı olacak çeşitli codelab'ler mevcuttur. İşte bu konuda iyi bir başlangıç :
- Google Kubernetes Engine codelab'i: https://codelabs.developers.google.com/codelabs/cloud-gke-workshop-v2
Geri bildiriminizi paylaşın
- Lütfen çok kısa bir süre ayırarak anketimizi doldurun.