Aracılığıyla paylaş


Consul'un üyelik sağlayıcısı olarak kullanılması

Consul basit hizmet kaydı, sistem durumu denetimi, hata algılama ve anahtar-değer depolama dahil olmak üzere dağıtılmış, yüksek oranda kullanılabilir ve veri merkezi kullanan bir hizmet bulma platformudur. Veri merkezindeki her düğümün bir sunucu veya istemci olarak işlev gören bir Consul ajanı çalıştırmasını gerektiren bir ilke üzerine inşa edilmiştir. Her ajan ölçeklenebilir bir dedikodu protokolü aracılığıyla iletişim kurar.

Benzer çözümlerle karşılaştırmalar da dahil olmak üzere Konsolos'a ayrıntılı bir genel bakış için Bkz. Konsolos nedir?.

Consul Go dilinde yazılmıştır ve açık kaynaktır. Derlenmiş indirmeler macOS X, FreeBSD, Linux, Solaris ve Windows için kullanılabilir.

Neden Konsolos'u seçmelisiniz?

Orleans Üyelik Sağlayıcısı olarak Consul, müşterilerin mevcut altyapıya veya işbirliğine sahip bir BT sağlayıcısına sahip olmasını gerektirmeyen şirket içi çözümler sunmak için iyi bir seçimdir. Consul, bağımlılıkları olmayan basit bir tek yürütülebilir dosyadır ve ara yazılım çözümü oluşturmayı kolaylaştırır. Mikro hizmetleri bulmak, denetlemek ve korumak için Consul kullanırken üyelikle Orleans tam olarak tümleştirme basitlik ve kullanım kolaylığı sağlar. Consul, Orleans ile Orleans tam olarak entegre olan bir üyelik tablosu sağlar (aynı zamanda "" olarak da bilinir).

Consul'un kurulumu

Tutarlı bir Konsolos kümesi ayarlamaya ilişkin kapsamlı belgeler, burada bilgilerin tekrar edilmemesi için Konsolos belgelerinde mevcuttur. Ancak, kolaylık sağlamak için bu kılavuzda bağımsız bir Consul aracısıyla Orleans'ı hızlıca çalıştırmanın gösterildiği gösterilmektedir.

  1. Içine Consul yüklemek için bir klasör oluşturun (örneğin C:\Consul).

  2. Alt klasör oluşturma: C:\Consul\Data (Consul yoksa bu dizini oluşturmaz).

  3. indirin ve Consul.exeC:\Consuluzantısı olarak açın.

  4. C:\Consul konumunda komut istemini açın ve aşağıdaki komutu çalıştırın:

    ./consul.exe agent -server -bootstrap -data-dir "C:\Consul\Data" -client='0.0.0.0'
    

    Önceki komutta:

    • agent: Consul'a hizmetleri barındıran aracı süreci çalıştırması için komut verir. Bu anahtar olmadan, Consul süreci çalışan bir ajanı yapılandırmak için RPC'yi kullanmayı dener.
    • -server: Aracıyı istemci olarak değil sunucu olarak tanımlar. (Consul müşteri, hizmetleri ve verileri barındıran bir agent'tır, ancak oy kullanma haklarına sahip değildir ve küme lideri olamaz).
    • -bootstrap: Küme liderliğini varsaymak için kümedeki ilk (ve yalnızca ilk!) düğümün önyüklemesi yapılmalıdır.
    • -data-dir [path]: Küme üyelik tablosu da dahil olmak üzere tüm Consul verilerinin depolandığı yolu belirtir.
    • -client='0.0.0.0': Consul'a hizmetin açıldığı IP adresini bildirir.

    JSON yapılandırma dosyası kullanma seçeneği de dahil olmak üzere diğer birçok parametre vardır. Tam liste için Konsolos belgelerine bakın.

  5. Consul'un çalıştığını ve Orleans üyelik isteklerini kabul etmeye hazır olduğunu doğrulamak için http://localhost:8500/v1/catalog/services adresindeki hizmet uç noktasını tarayıcınızda açın. Doğru çalıştığında, tarayıcı aşağıdaki JSON'yi görüntüler:

    {
        "consul": []
    }
    

Orleans'ı yapılandır

Consul'u üyelik sağlayıcısı olarak kullanacak şekilde Orleans'yi yapılandırmak için, silo projesinin Microsoft.OrleansClustering.Consul NuGet paketine referans vermesi gerekiyor. Başvuruyu ekledikten sonra, silonun Program.cs dosyasında üyelik sağlayıcısını aşağıda belirtildiği şekilde yapılandırın:

IHostBuilder builder = Host.CreateDefaultBuilder(args)
    .UseOrleans(silo =>
    {
        silo.UseConsulSiloClustering(options =>
        {
            // The address of the Consul server
            var address = new Uri("http://localhost:8500");
            options.ConfigureConsulClient(address);
        });
    })
    .UseConsoleLifetime();

using IHost host = builder.Build();
host.Run();

Önceki kod:

İstemciyi yapılandırmak için aynı NuGet paketine başvurun ve UseConsulClientClustering uzantısı yöntemini çağırın.

İstemci SDK'sı

Hizmet bulma için Consul'un kullanımıyla ilgileniyorsanız, istemci SDK'ları en popüler dillerde kullanılabilir.

Uygulama ayrıntıları

Üyelik Tablosu Sağlayıcısı, Check-And-Set (CAS) işlemleriyle Consul'un Anahtar/Değer deposu işlevini kullanır. Her Silo başlatıldığında iki anahtar-değer girdisi kaydeder: biri Silo ayrıntılarını içeren ve diğeri Silo'nun canlı olduğunu son bildirdiği zamanı tutan. İkincisi, tanılama "Yaşıyorum" kayıtlarını ifade eder; bu kayıtlar silolar arasında doğrudan gönderilir ve tabloya yazılmaz, oysa hata algılama kalp atışlarının tabloya yazılmadığı belirtilmelidir. Tabloya yapılan tüm yazma işlemleri, Orleans gerektirdiği şekilde eşzamanlılık denetimi sağlamak için CAS kullanır.

Silo çalıştırıldıktan sonra, bu girdileri http://localhost:8500/v1/kv/?keys&pretty adresinde bir web tarayıcısında görüntüleyin. Çıktı şu şekilde görünüyor:

[
    "orleans/default/192.168.1.11:11111@43165319",
    "orleans/default/192.168.1.11:11111@43165319/iamalive",
    "orleans/default/version"
]

Tüm anahtarlara ön ek eklenir orleans. Bu ön ek sağlayıcıda sabit kodlanmıştır ve diğer Consul kullanıcılarıyla anahtar alanı çakışmalarını önlemeyi amaçlar. Consul KV kökünde http://localhost:8500/v1/kv/ konumuna adını (tırnak işaretleri olmadan) ekleyerek her anahtar için ek bilgi alın. Bunu yaptığınızda aşağıdaki JSON sunulur:

[
    {
        "LockIndex": 0,
        "Key": "orleans/default/192.168.1.11:11111@43165319",
        "Flags": 0,
        "Value": "[BASE64 UTF8 Encoded String]",
        "CreateIndex": 321,
        "ModifyIndex": 322
    }
]

Base64 UTF-8 kodlanmış dizesinin Value kodunun çözülmesi, gerçek Orleans üyelik verilerini sağlar:

http://localhost:8500/v1/KV/orleans/default/[SiloAddress]

{
    "Hostname": "[YOUR_MACHINE_NAME]",
    "ProxyPort": 30000,
    "StartTime": "2023-05-15T14:22:00.004977Z",
    "Status": 3,
    "SiloName": "Silo_fcad0",
    "SuspectingSilos": []
}

http://localhost:8500/v1/KV/orleans/default/[SiloAddress]/IAmAlive

"2023-05-15T14:27:01.1832828Z"

İstemciler bağlandığında, URI'sini http://localhost:8500/v1/KV/orleans/default/?recursekullanarak kümedeki tüm siloların KV'lerini tek bir HTTP GET isteğinde okurlar.

Sınırlama

Konsolos'un üyelik sağlayıcısı olarak kullanılmasıyla ilgili bazı sınırlamalara dikkat edin.

Orleans genişletilmiş üyelik protokolü (tablo sürümü ve ETag)

Consul KV şu anda atomik güncellemeleri desteklememektedir. Bu nedenle, Orleans Konsolos üyelik sağlayıcısı yalnızca içindeki Orleansbölümünde açıklandığı gibi temel üyelik protokollerini uygularOrleans. Genişletilmiş Üyelik Protokolü'ne destek vermez. Bu Genişletilmiş protokol, gerekli olmasa da, silo bağlantı doğrulaması ve henüz uygulanmamış işlevlerin temeli olarak sunulmuştur.

Birden çok veri merkezi

Konsolos'taki anahtar-değer çiftleri şu anda Konsolos veri merkezleri arasında çoğaltılamaz. Bu çoğaltma çalışmasını ele almak için ayrı bir proje var, ancak desteği henüz kanıtlanmadı Orleans.

Windows'da çalışırken

Consul Windows'ta çalışmaya başladığında, aşağıdaki iletiyi günlüğe kaydeder:

==> WARNING: Windows is not recommended as a Consul server. Do not use in production.

Bu uyarı iletisi, bilinen gerçek sorunlar nedeniyle değil, Windows ortamında çalışırken teste odaklanmama nedeniyle görüntülenir. Consul'un doğru seçim olup olmadığını belirlemeden önce tartışmayı okuyun.

Gelecekteki olası geliştirmeler

  1. Consul KV çoğaltma projesinin birden çok Consul veri merkezi arasındaki WAN ortamındaki bir Orleans kümeyi destekleyebebileceğini kanıtlayın.
  2. Consul'da Anımsatıcı Tablosu'nu uygulayın.
  3. Uzatılmış Üyelik Protokolü'nü uygulayınız. Konsolos'un arkasındaki ekip atomik işlemleri uygulamayı planlıyor. Bu işlev kullanıma sunulduktan sonra sağlayıcıdaki sınırlamaların kaldırılması mümkün olabilir.