Bulut Sunucularına Consul ile Nomad Kümesi Kurulumu

0 Hisse senetleri
0
0
0
0

giriiş

Bu eğitimde, servis ve node keşfi için Consul ile bir HashiCorp Nomad kümesi kuracağız.
3 sunucu düğümü ve isteğe bağlı sayıda istemci düğümüyle bu kurulum, büyüyen projeler için bir temel oluşturabilir.
Ayrıca, manuel yapılandırmaya gerek kalmadan daha fazla istemcinin eklenmesine olanak sağlayacak şekilde, istemciler için Hetzner Bulutunun bir Anlık Görüntüsünü de oluşturacağız.
Küme, sunucular arasında özel bir ağ üzerinde çalışır ve hizmet keşfi ve birim yönetimi gibi tüm Nomad ve Consul özelliklerini anında destekler.

Bu eğitim kısmen Consul and Nomad'ın resmi dağıtım kılavuzunda önerilen adımları takip etmektedir.

Ön koşullar
  • Bir Hetzner Cloud hesabı
  • Linux ve kabuk komutlarının temel bilgisi
  • Sunucuya ssh ile bağlanma yeteneği
  • Bir Hetzner sunucunuz var

Bu eğitim Ubuntu 24.04 Hetzner Cloud sunucularında Nomad 1.9.3 ve Consul 1.20.1 sürümlerinde test edilmiştir.

Terimler ve semboller

Komutlar
local$ <command> این دستور باید روی ماشین محلی اجرا شود.
server$ <command> این دستور باید به‌عنوان root روی سرور اجرا شود.

Adım 1 – Temel görüntüyü oluşturun

Bu adımda aşağıdaki kaynak kullanılacaktır:

  • 1 Hetzner Bulut Sunucusu Türü CX22

Yeni bir CX22 sunucusunda bir Consul/Nomad sunucusu kurarak başlayacağız. Oluşturulan anlık görüntü, aşağıdaki adımlarda tüm küme sunucuları ve istemcileri için temel görüntü görevi görecektir.

Bu kılavuz, 3 sunucu için kurulumu göstermektedir. Bu, kümenin yüksek erişilebilirlikli olmasını sağlar, ancak çok pahalı değildir. Tek bir sunucu kurmak önerilmez, ancak mümkündür. Eğitimde, ilgili adımlarda 3 sunucudan biri veya daha fazlası için gereken değişiklikler hakkında yorumlar yer alacaktır.

Hetzner Cloud web arayüzüne gidin ve Ubuntu 24.04 ile yeni bir CX22 sunucusu oluşturun.

Adım 1.1 – Consul'u Yükleme

Consul'u yükleyin

Mevcut sürümler hakkında daha fazla bilgi için resmi web sitesini ziyaret edin.

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install consul

Artık Consul'a otomatik tamamlama işlevselliğini ekleyebiliriz (isteğe bağlı)

server$ consul -autocomplete-install

Konsolosluk için TLS sertifikalarının hazırlanması
server$ consul tls ca create
server$ consul tls cert create -server -dc dc1
server$ consul tls cert create -server -dc dc1
server$ consul tls cert create -server -dc dc1
server$ consul tls cert create -client -dc dc1

Consul kümesinde 3'ten az veya çok sunucu çalıştırmak istiyorsanız, komutu tekrarlayın konsolos tls cert create -server -dc dc1 Uyum sağlayın.
Bir küme sunucusu için sadece bir sertifika yeterli olurken, 5 sunucu için 5 sertifikaya ihtiyacınız var.

Bu komutlar 3 adet sunucu sertifikası ve bir adet istemci sertifikası oluşturacaktır.
Dosya /kök/ Artık en azından aşağıdaki dosyaları içermesi gerekir:

server$ ls
consul-agent-ca.pem
consul-agent-ca-key.pem
dc1-server-consul-0.pem
dc1-server-consul-0-key.pem
dc1-server-consul-1.pem
dc1-server-consul-1-key.pem
dc1-server-consul-2.pem
dc1-server-consul-2-key.pem
dc1-client-consul-0.pem
dc1-client-consul-0-key.pem

Adım 1.2 – Nomad ikili dosyasının kurulumu

Nomad'ı yükleyin

Mevcut sürümler hakkında daha fazla bilgi için resmi web sitesini ziyaret edin.

server$ wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
server$ echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/hashicorp.list
server$ apt update && apt install nomad

Nomad için otomatik tamamlamayı ekle (isteğe bağlı):

server$ nomad -autocomplete-install

Aşağıdaki yapılandırma dosyası /etc/nomad.d/nomad.hcl Eklemek:

datacenter = "dc1"
data_dir = "/opt/nomad"

Adım 1.3 - systemd servislerini hazırlama

Consul ve Nomad yeniden başlatmanın ardından otomatik olarak başlayacaktır. Bunu yapmak için her biri için bir systemd servisi oluşturun.

Öncelikle tüm izinleri ayarlayın:

server$ chown consul:consul dc1-server-consul*
server$ chown consul:consul dc1-client-consul*
server$ chown -R consul:consul /opt/consul
server$ chown -R nomad:nomad /opt/nomad
server$ mkdir -p /opt/alloc_mounts && chown -R nomad:nomad /opt/alloc_mounts

Aşağıdaki yapılandırma dosyası /etc/systemd/system/consul.service Eklemek:

[Unit]
Description="HashiCorp Consul - A service mesh solution"
Documentation=https://www.consul.io/
Requires=network-online.target
After=network-online.target
ConditionFileNotEmpty=/etc/consul.d/consul.hcl
[Service]
EnvironmentFile=-/etc/consul.d/consul.env
User=consul
Group=consul
ExecStart=/usr/bin/consul agent -config-dir=/etc/consul.d/
ExecReload=/bin/kill --signal HUP $MAINPID
KillMode=process
KillSignal=SIGTERM
Restart=on-failure
LimitNOFILE=65536
[Install]
WantedBy=multi-user.target

ve aşağıdaki yapılandırma dosyasını /etc/systemd/system/nomad.service Eklemek:

[Unit]
Description=Nomad
Documentation=https://www.nomadproject.io/docs/
Wants=network-online.target
After=network-online.target
[Service]
User=nomad
Group=nomad
ExecReload=/bin/kill -HUP $MAINPID
ExecStart=/usr/bin/nomad agent -config /etc/nomad.d
KillMode=process
KillSignal=SIGINT
LimitNOFILE=65536
LimitNPROC=infinity
Restart=on-failure
RestartSec=2
OOMScoreAdjust=-1000
TasksMax=infinity
[Install]
WantedBy=multi-user.target

Kurulum henüz tamamlanmadığından bu hizmetleri henüz etkinleştirmeyin.

Adım 1.5 – Temel Bir Anlık Görüntü Oluşturun

Son olarak, Hetzner Cloud konsolunda sunucuyu durdurun ve bir Anlık Görüntü oluşturun. Bu Anlık Görüntü, sunucu ve küme istemcilerini yapılandırmanın temeli olarak kullanılacaktır.

Anlık görüntü oluşturma işlemi başarılı olduktan sonra, bu adımdan CX22 örneğini silin.

Adım 2 – Küme sunucularını kurma

Bu adımda, 1. adımda oluşturulan temel imajdan 3 adet küme sunucusu oluşturacaksınız.
Bu sunucular kümenizin temelini oluşturur ve dinamik olarak bir küme lideri seçer.

  • 1 Hetzner Bulut Ağı
  • 3 Hetzner Bulut Sunucusu Tip CX22

Hetzner Cloud Konsolunda, 1. Adımda oluşturulan Snapshot'tan 3 adet CX22 sunucusu ve paylaşımlı bir Cloud Network oluşturun.
Bu kılavuz 10.0.0.0/8 ağını kullanır, ancak daha küçük ağlar da işe yarar.

Eğitimin ilerleyen adımlarında 10.0.0.2, 10.0.0.3 ve 10.0.0.4 dahili adreslerine sahip sunuculardan bahsedilecektir.
Sunucularınızın farklı dahili adresleri varsa, bunları bir sonraki adımlarda değiştirin.

Adım 2.1 – Simetrik bir şifreleme anahtarı oluşturun

Öncelikle, tüm sunucular arasında paylaşılacak simetrik bir şifreleme anahtarı oluşturun. Bu anahtarı güvenli bir yerde saklayın; sonraki adımlarda buna ihtiyacımız olacak.

server$ consul keygen

Adım 2.2 – Consul'u Yapılandırma

Her sunucu için bir Consul yapılandırma dosyası oluşturun. Bu dosya, diğer sunucuların dahili IP adreslerini içerecektir.
Yoldaki her sunucu için /etc/consul.d/consul.hcl Aşağıdaki dosyayı oluşturun:

datacenter = "dc1" data_dir = "/opt/consul" encrypt = "" ca_file = "/root/consul-agent-ca.pem" cert_file = "/root/dc1-server-consul-0.pem" key_file = "/root/dc1-server-consul-0-key.pem" verify_incoming = true verify_outgoing = true verify_server_hostname = true performance { raft_multiplier = 1 } retry_join = ["10.0.0.2", "10.0.0.3", "10.0.0.4"] bind_addr = "0.0.0.0" client_addr = "0.0.0.0" server = true bootstrap_expect = 3 ui = true

 

Yer değiştirmek <CONSUL_KEY> komuttan üretilen anahtarla konsül keygen.
Diğer sunucular için, sertifika_dosyası Ve anahtar_dosyası Bunu, o sunucunun sertifikasıyla eşleşecek şekilde değiştirin.

Adım 2.3 – Nomad'ı Yapılandırma

Her sunucu için bir Nomad yapılandırma dosyası oluşturun. Bu dosya, yol bölümünde bulunur. /etc/nomad.d/nomad.hcl Olacak:

datacenter = "dc1"
data_dir = "/opt/consul"
encrypt = "your-symmetric-encryption-key"
tls {
defaults {
ca_file = "/etc/consul.d/consul-agent-ca.pem"
cert_file = "/etc/consul.d/dc1-server-consul-0.pem"
key_file = "/etc/consul.d/dc1-server-consul-0-key.pem"
verify_incoming = true
verify_outgoing = true
},
internal_rpc {
verify_server_hostname = true
}
}
retry_join = ["10.0.0.2"]
bind_addr = "{{ GetPrivateInterfaces | include \"network\" \"10.0.0.0/8\" | attr \"address\" }}"
acl = {
enabled = true
default_policy = "allow"
enable_token_persistence = true
}
performance {
raft_multiplier = 1
}

Adresleri değiştir 10.0.0.x Her sunucunun dahili adresiyle.

Adım 2.4 – Hizmetleri etkinleştirin ve başlatın

Yapılandırma dosyalarını oluşturduktan sonra Consul ve Nomad'ı systemd servisleri olarak etkinleştirin ve başlatın:

server$ systemctl enable consul server$ systemctl start consul server$ systemctl enable nomad server$ systemctl start nomad

Aşağıdaki komutları kullanarak her bir servisin durumunu kontrol edin:

server$ systemctl status consul
server$ systemctl status nomad

Adım 2.5 – Consul kümesini doğrulayın

Consul kümesinin durumunu kontrol etmek için aşağıdaki komutu çalıştırın:

server$ consul members

Kümedeki tüm sunucuların ve istemcilerin bir listesini görmelisiniz. Herhangi bir sorun varsa, yapılandırma dosyalarını tekrar kontrol edin ve günlükleri okuyun:

server$ journalctl -u consul

Adım 2.6 – Nomad Kümesinin Doğrulanması

Aşağıdaki komutu kullanarak Nomad kümesinin durumunu kontrol edin:

server$ nomad server members

Kümedeki Nomad sunucularının bir listesini görmelisiniz. Herhangi bir sorun varsa, yapılandırma dosyalarını kontrol edin ve günlükleri okuyun:

server$ journalctl -u nomad

Adım 2.7 – Web arayüzünü kontrol edin

Consul ve Nomad web arayüzleri artık kullanılabilir olmalı:

  • Konsolos: http:// :8500
  • Göçebe: http:// :4646

Yer değiştirmek <SERVER_IP> sunucunun genel veya özel IP adresiyle.

Adım 3 – Müşterileri Ekleyin

Artık Nomad istemcileri ekleyebilirsiniz. Bu adım, sunucu kurulumuna benzer, ancak istemci rolüyle.

Adım 3.1 – İstemcileri yükleyin ve yapılandırın

Nomad istemcileri için kurulum adımları, sunucular için olanlara benzerdir. İlk olarak, istemci makinelerine Consul ve Nomad'ı kurun.
Bu adımlar paketlerin indirilmesi ve kurulmasını içerir.

Adım 3.2 – Müşteriler için Consul'u kurma

Yoldaki bir Consul yapılandırma dosyası /etc/consul.d/consul.hcl Oluşturun. İstemciler için yapılandırma daha basittir:

client {
enabled = true
network_interface = "{{ GetPrivateInterfaces | include \"network\" \"10.0.0.0/8\" | attr \"name\" }}"
}
acl {
enabled = true
}

IP adreslerinin şu şekilde olduğunu unutmayın: yeniden_katılmayı_dene Bunlar Consul sunucularının dahili adresleridir.
Sertifika ve anahtar dosyaları (cert ve key) istemciye özel olmalıdır.

Adım 3.3 – Müşteriler için Nomad'ı kurma

Nomad yapılandırma dosyasını yola yerleştirin /etc/nomad.d/nomad.hcl Oluştur. İstemciler için bu yapılandırma aşağıdaki ayarları içerir:

datacenter = "dc1" data_dir = "/opt/nomad" bind_addr = "0.0.0.0" advertise { http = "10.0.1.2:4646" rpc = "10.0.1.2:4647" serf = "10.0.1.2:4648" } client { enabled = true network_interface = "eth0" servers = ["10.0.0.2:4647", "10.0.0.3:4647", "10.0.0.4:4647"] } tls { http = true rpc = true ca_file = "/root/consul-agent-ca.pem" cert_file = "/root/dc1-client-consul-0.pem" key_file = "/root/dc1-client-consul-0-key.pem" verify_server_hostname = true }

Adres reklam vermek Bu istemcinin dahili adresini göstermelidir. Ayrıca, adresler sunucular Bunlar Nomad sunucuları ile aynıdır.

Adım 3.4 – Hizmetleri etkinleştirin ve başlatın

Sunucularda olduğu gibi, istemciler için Consul ve Nomad servislerini etkinleştirin ve yapılandırın:

client$ systemctl enable consul
client$ systemctl start consul
client$ systemctl enable nomad
client$ systemctl start nomad

Hizmetlerin durumunu kontrol edin:

client$ systemctl status consul 
client$ systemctl status nomad

Adım 3.5 – İstemci Bağlantısını Kontrol Etme

İstemcilerin Consul kümesine bağlı olduğundan emin olun. Bir sunucudan aşağıdaki komutu çalıştırın:

server$ consul members

Müşteriler listede görünür olmalıdır. Ayrıca Nomad için:

server$ nomad node status

İstemciler "hazır" durumunda olmalıdır. Bir sorun varsa, yapılandırma dosyalarını kontrol edin ve günlükleri okuyun:

client$ journalctl -u consul
client$ journalctl -u nomad

Adım 4 – Nomad'da görevleri çalıştırma

Doğru kurulumu sağladıktan sonra Nomad üzerinde işlerinizi tanımlayıp çalıştırabilirsiniz.
Örneğin bir görev yapılandırma dosyası oluşturun:

job "example" { datacenters = ["dc1"] group "example-group" { task "example-task" { driver = "docker" config { image = "nginx:latest" } resources { cpu = 500 memory = 256 } } } }

Yukarıdaki dosyanın adını yazın örnek.göçebe Aşağıdaki komutla kaydedip çalıştırın:

server$ nomad job run example.nomad

Görev yürütme durumunu kontrol edin:

server$ nomad job status example

Sonuç

Consul ve Nomad kümesini başarıyla kurdunuz. Artık bu altyapıyı görevlerinizi ve hizmetlerinizi yönetmek için kullanabilirsiniz.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ayrıca Şunları da Beğenebilirsiniz