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 içeren dağıtılmış, yüksek oranda kullanılabilir ve veri merkezi kullanan bir hizmet bulma platformudur. Veri merkezindeki her düğümün sunucu veya istemci olarak çalışan bir Consul aracısı çalıştırdığını şirket içinde yerleşik olarak bulunur. Her ajan ölçeklenebilir bir dedikodu protokolü aracılığıyla iletişim kurar.

Burada benzer çözümlerle karşılaştırmalar da dahil olmak üzere Konsolos'a ayrıntılı bir genel bakış sağlanır.

Consul Go dilinde yazılmış ve açık kaynak; 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 Konsolos, potansiyel müşterilerinizin mevcut altyapıya ve işbirliğine sahip bir BT sağlayıcısına sahip olmasını gerektirmeyen bir şirket içi çözüm sunmanız gerektiğinde iyi bir seçimdir. Consul basit bir tek yürütülebilir dosyadır, bağımlılıkları yoktur ve bu nedenle ara yazılım çözümünüzde kolayca yerleşik olarak bulunabilir. Consul mikro hizmetlerinizi keşfetmek, denetlemek ve bakımını yapmak için çözümünüz olduğunda, kolaylık ve kullanım kolaylığı için üyelikle Orleans tam olarak tümleştirmek mantıklıdır. Ayrıca Consul'da ("Özel Sistem Deposu"Orleans olarak da bilinir) 's Cluster Management ile Orleanstamamen tümleşen bir üyelik tablosu da vardır.

Konsolos'un kurulumunu

Consul.io üzerinde kararlı bir Konsolos kümesi ayarlama hakkında kapsamlı belgeler mevcuttur ve bunu burada tekrarlamanız mantıklı değildir. Ancak, size kolaylık sağlaması için, tek başına bir Konsolos aracısı ile hızla çalışmaya başlamanız Orleans için bu kılavuzu dahil ediyoruz.

  1. Consul'u 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. C:\Consul'a Consul.exe indirip sıkıştırmasını açın.

  4. C:\Consul'da bir komut istemi 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'
    

    Yukarıdaki komutta:

    • agent: Consul'a hizmetleri barındıran aracı işlemini çalıştırmasını emreder. Bu anahtar olmadan, Konsolos işlemi çalışan bir aracıyı yapılandırmak için RPC'yi kullanmayı dener.
    • -server: Aracıyı istemci olarak değil sunucu olarak tanımlar (Konsolos istemcisi , tüm hizmetleri ve verileri barındıran, ancak karar vermek için oy hakları olmayan ve küme lideri olabilen bir aracıdır.
    • -bootstrap: Kümedeki ilk (ve yalnızca ilk!) düğüm, küme liderliğini varsayacak şekilde önyüklenmelidir.
    • -data-dir [path]: Küme üyelik tablosu da dahil olmak üzere tüm Consul verilerinin depolandığı yolu belirtir.
    • -client='0.0.0.0': Hizmeti açması gereken IP'yi Konsolos'a bildirir.

    Başka birçok parametre ve JSON yapılandırma dosyası kullanma seçeneği vardır. Seçeneklerin tam listesi için Konsolos belgelerine bakın.

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

    {
        "consul": []
    }
    

Yapılandırmak Orleans

Konsolos'u üyelik sağlayıcısı olarak kullanacak şekilde yapılandırmak Orleans için silo projenizin Microsoft..Orleans. Clustering.Consul NuGet paketi. Bunu yaptıktan sonra, silonuzun Program.cs dosyasında üyelik sağlayıcısını aşağıdaki gibi yapılandırabilirsiniz:

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();

Yukarıdaki kod:

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

İstemci SDK’sı

Hizmet keşfiniz için Consul'un kullanımıyla ilgileniyorsanız, en popüler diller için İstemci SDK'ları vardır.

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, biri Silo ayrıntılarını içeren, diğeri de Silo'nun canlı olduğunu en son bildirdiği zamanı tutan iki anahtar-değer girdisi kaydeder. İkincisi, doğrudan silolar arasında gönderilen ve tabloya yazılmayan hata algılama sinyallerini değil, "Yaşıyorum" girişlerini tanılamayı ifade eder. Tabloya yapılan tüm yazma işlemleri, 's Cluster Management Protocol tarafından Orleansgerekli kılındığı şekilde eşzamanlılık denetimi sağlamak için CAS ile gerçekleştirilir.

Silo çalıştırıldıktan sonra, web tarayıcınızda http://localhost:8500/v1/kv/?keys&prettyşu girişleri görüntüleyebilirsiniz:

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

Tüm anahtarların ön eki orleans, sağlayıcıda sabit kodlanmış olan ve diğer Consul kullanıcılarıyla anahtar alanı çakışmasını önlemeye yöneliktir. Bu anahtarlardan herhangi birini kullanarak bu anahtarlardan her biri hakkında ek bilgi alabilirsiniz. Anahtar adları (tırnak işaretleri olmadan) konumundaki http://localhost:8500/v1/kv/Consul KV köküne eklenerek okunabilir. Bunu yaptığınızda size 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 kodunu çözmek size gerçek Orleans üyelik verilerini verir:

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://192.168.1.26:8500/v1/KV/orleans/default/?recursekullanarak kümedeki tüm siloların KV'lerini tek bir HTTP GET'de okurlar.

Sınırlamalar

Konsolos'un üyelik sağlayıcısı olarak kullanılmasıyla ilgili dikkat edilmesi gereken birkaç sınırlama vardır.

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

Konsolos KV şu anda atomik güncelleştirmeleri desteklememektedir. Bu nedenle, Orleans Konsoloslu Üyelik Sağlayıcısı yalnızca içinde Küme yönetimiOrleans bölümünde açıklandığı gibi temel üyelik protokollerini uygular Orleans ve Genişletilmiş Üyelik Protokolü'ne destek vermez. Bu Genişletilmiş protokol, ek, ancak gerekli olmayan silo bağlantı doğrulaması ve henüz uygulanmamış işlevlerin temeli olarak sunulmuştur.

Birden çok veri merkezi

Consul'daki anahtar-değer çiftleri şu anda Konsolos veri merkezleri arasında çoğaltılamaz. Bu çoğaltma çabasını ele almak için ayrı bir proje vardır, ancak desteği henüz kanıtlanmamıştır Orleans.

Windows'da çalışırken

Konsolos Windows'ta 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. Konsolos'un sizin için 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 kümeyi destekleyebildiğini Orleans kanıtlayın.
  2. Consul'da Anımsatıcı Tablosu'nu uygulayın.
  3. Genişletilmiş Üyelik Protokolü'ne uygulayın. Konsolos'un arkasındaki ekip atomik işlemleri uygulamayı planlamaktadır. Bu işlev kullanılabilir olduğunda sağlayıcıdaki sınırlamaları kaldırmak mümkündür.