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 içeren dağıtılmış, yüksek oranda kullanılabilir ve veri merkezi kullanan bir hizmet bulma platformudur. Veri merkezindeki her düğümün bir Consul aracısını sunucu veya istemci olarak çalıştırdığı varsayımına dayanır. 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 Consul hakkında ayrıntılı bir genel bakış.

Consul, Go yazılır ve açık kaynak ; derlenmiş indirmeler macOS X, FreeBSD, Linux, Solaris ve Windowsiçin kullanılabilir.

Neden Konsolos'u seçmelisiniz?

Orleans Üyelik Sağlayıcısı olarak, 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 Konsolos 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. Mikro hizmetlerinizi keşfetmek, denetlemek ve sürdürmek için Consul çözümünüz olduğunda, kolaylık ve kullanım kolaylığı için Orleans üyelikle tam olarak tümleştirmek mantıklıdır. Ayrıca Consul'da Orleans'ın Küme Yönetimiile tam olarak tümleşen bir üyelik tablosu ("Orleans Özel Sistem Mağazası" olarak da bilinir) vardır.

Consul'un kurulumu

Consul.io üzerinde kararlı bir Konsolos kümesi ayarlama hakkında kapsamlı belgeler mevcuttur ve bunu burada tekrarlamanız mantıklı değildir. Ancak, sizi kolaylaştırmak amacıyla, Orleans'ı bağımsız bir Consul ajanı ile hızlıca çalıştırabilmeniz için bu kılavuzu ekliyoruz.

  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ı işlemi çalıştırmasını talimat verir. Bu anahtar olmadan, Consul süreci çalışan bir ajanı yapılandırmak için RPC'yi kullanmayı dener.
    • -server: Etemeni sunucu olarak tanımlar, istemci olarak değil (Bir Consul istemcisi tüm hizmetleri ve verileri barındıran, ancak karar vermede oy hakkı olmayan ve küme lideri olamayan bir etmenidir.
    • -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 Konsolos verilerinin depolandığı yolu belirtir.
    • -client='0.0.0.0': Consul'a hizmetin açıldığı IP'yi 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. http://localhost:8500/v1/catalog/servicesadresinde tarayıcınızda hizmet uç noktasını açarak Consul'ün çalıştığını ve Orleans'dan üyelik 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": []
    }
    

Orleans'ı yapılandır

Orleans projenizi, Consul'u üyelik sağlayıcısı olarak kullanacak şekilde yapılandırmak için silo projenizin Microsoft.Orleans.Clustering.Consul NuGet paketine referans eklemesi gerekir. 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();

Ö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 keşfiniz için Consul kullanmak istiyorsanı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şlevselliğinden yararlanı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. Buradaki "Yaşıyorum" girişleri, tanılama ile ilgilidir ve doğrudan silolar arasında gönderilip tabloya yazılmayan hata algılama sinyallerini ifade etmez. Tabloya yapılan tüm yazma işlemleri, OrleansKüme Yönetimi Protokolügerektirdiği şekilde eşzamanlılık denetimi sağlamak için CAS ile gerçekleştirilir.

Silo çalıştırıldıktan sonra, bu girdileri web tarayıcınızda http://localhost:8500/v1/kv/?keys&prettyadresinde görüntüleyebilirsiniz. Bu girişler aşağıdaki gibi bir görüntüye sahiptir:

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

Tüm anahtarlar, sağlayıcıda sabit kodlanmış olan ve diğer Consul kullanıcılarıyla anahtar alanı çakışmasını önlemeye yönelik orleansön ekine sahip olur. Bu anahtarlardan herhangi birini kullanarak daha fazla bilgi alabilirsiniz. Anahtar adları (tırnak işaretleri olmadan) http://localhost:8500/v1/kv/konumundaki 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ış dize 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 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ırlama

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ü & ETag)

Consul KV şu anda atomik güncellemeleri desteklememektedir. Bu nedenle, Orleans Konsolos Üyeliği Sağlayıcısı, Orleans'dakiKüme yönetimi bölümünde açıklandığı gibi yalnızca Orleans temel üyelik protokollerini uygular 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 Consul veri merkezleri arasında çoğaltılmıyor. Bu çoğaltma çalışmasını ele almak için ayrı bir proje var, ancak henüz Orleansdesteklendiği kanıtlanmamıştır.

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. Konsolos'un sizin için doğru seçim olup olmadığını belirlemeden önce tartışma okuyun.

Gelecekteki olası geliştirmeler

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