Soru Amazon VPC'de basit ve güvenilir merkezi kayıt


Bir Amazon VPC'de bir grup sunucu için (10-20) merkezi kayıt oluşturmam gerekiyor. Kayıt, herhangi bir tek sunucunun çevrimdışı kalması durumunda veya herhangi bir kullanılabilirlik bölgesinin çevrimdışı kalması durumunda herhangi bir günlük mesajını kaybetmeyecek şekilde olmalıdır. Ayrıca, iletileri kaybetmeden veya çoğaltmadan paket kaybını ve diğer normal ağ koşullarını da tolere etmelidir. Mesajları, en az iki farklı EBS biriminde en az iki noktada kalıcı olarak saklamalıdır, ancak S3 de iyi bir yerdir. Ayrıca mesajlar gerçek zamanlı olmalı, böylece mesajlar üretimlerinin saniyeler içerisinde iki farklı kullanılabilirlik bölgesine varıyor. Ayrıca syslog ile oluşturulmamış günlük dosyalarını da senkronize etmem gerekiyor, bu yüzden syslog sadece bir merkezi loglama çözümü tüm ihtiyaçları karşılamayacaktı, ancak bu sınırlamanın işlenebileceğini tahmin ediyorum.

Birkaç çözümü zaten inceledim ve bunları burada listeleyeceğim:

S3 Flume Flume: Log mesajlarını yerel olarak veya S3'te depolayan Flume ana bilgisayarları olarak iki logserver kurabilir ve uçtan uca güvenilirlik seçeneklerini kullanarak tüm mesajları her iki sunucuya göndermek için Flume ile tüm sunucuları yapılandırabilirim. Bu şekilde, tek bir sunucunun kaybının, kayıp mesajlara neden olmaması ve tüm mesajların gerçek zamanlı olarak iki müsaitlik bölgesine varması gerekir. Bununla birlikte, iki sunucunun günlüklerine katılmanın ve her ikisine de iletilen tüm iletilerin tekilleştirilmesinin bir yolu olması gerekir. Bu, her iletinin gönderen tarafına benzersiz bir kimlik eklenerek yapılabilir ve ardından günlük dosyalarında bazı manuel tekilleştirme işlemleri yazılır. Çoğaltma sorununa kolay bir çözüm bulamadım.

Logstash'dan ElasticSearch'e Logstash: Logstash'ı sunuculara kurabilir ve dayanıklılık seçenekleri açıkken AMQP üzerinden merkezi bir sunucuya teslim edebilirler. Ancak, bunun çalışması için, kümelenme yeteneğine sahip AMQP uygulamalarının bazılarını kullanmam veya Flume davasında olduğu gibi dağıtımı dağıtmam gerekecek. AMQP, birkaç uygulama içeren bir başka hareketli parça gibi görünmektedir ve bu tür bir kurulum için en iyi olan şeyin gerçek bir rehberliği yoktur. Ayrıca, aralarında çökmekte olan sunucuları varsayarak, logstash'dan elasticsearch'e gerçek uçtan uca dayanıklılık alabileceğime ikna olmadım. Fan-out çözümleri tekrar tekilleştirme problemine tekrar girer. Tüm davaları ele alacak en iyi çözüm, bir redis mağazası aracılığıyla yüksek kullanılabilirlik ve tekilleştirme sağladığı görülen Beetle olurdu. Bununla birlikte, bunu Logstash ile nasıl kuracağımıza dair bir rehber görmedim ve Redis, çok zor olmamak zorunda olan bir şey için yine bir daha hareketli bölüm.

ElasticSearch için Logstash: Logstash'ı tüm sunucularda çalıştırabilir, tüm filtreleme ve işleme kurallarını sunucuların kendisinde bulundurabilir ve sadece bir ElastikSearch sunucusundan doğrudan oturum açabilirim. Bunun güvenilir bir günlük getirmesi gerektiğini düşünüyorum ve veritabanını şeffaf bir şekilde paylaşmak için ElasticSearch kümeleme özelliklerini kullanabilirim. Ancak, kurulumun Logstash'ın yeniden başlatılmasından ve kesintili ağ sorunlarından hayatta kalma durumunda veya benzer bir şekilde iki kez kopyalanmadan hayatta kaldığından emin değilim. Ancak bu yaklaşım oldukça umut verici geliyor.

rsync: Tüm ilgili günlük dosyalarını iki farklı sunucuya yeniden senkronize edebilirim. Senkronizasyon bittikten sonra dosyalar kaynak dosyaları ile aynı olması gerektiğinden, güvenilirlik yönü burada mükemmel olmalıdır. Ancak, saniyede birkaç kez rsync yapmak eğlenceli görünmüyor. Ayrıca, gönderildikten sonra kayıtların ayrılmaz olmasını istiyorum, böylece rsynclerin sadece ek modda olması gerekiyordu. Dikkatli olmadıkça, günlük rotasyonları bir şeyleri mahvediyor.

RELP ile rsyslog: RELP aracılığıyla iki uzak ana bilgisayara mesaj göndermek ve mesajları saklamak için yerel bir kuyruğa sahip olmak için rsyslog kurabilirim. Tekrar tekilleştirme sorunu var ve RELP'in kendisi de bazı mesajları kopyalayabilir. Ancak, bu sadece syslog ile oturum açan şeyleri ele alacaktır.

Bu çözümlerin hiçbiri son derece iyi görünmüyor ve hâlâ pek bilinmeyenleri var, bu yüzden, bu amaca ulaşmak için en iyi araçların ne olduğu konusunda merkezi olarak güvenilir bir şekilde oturum açmış olan kişilerden daha fazla bilgi istiyorum.


6
2018-04-14 20:40


Menşei




Cevaplar:


Ben yaratıcısının LogZilla ve yazılımımızın bir Amazon EC2 Cloud çözümünü yayınlamanın hemen köşesindedir. Hedeflerinizi ve bu çözümü size sunma olasılığınızı görüşme fırsatını çok isterim. Eğer ilgileniyorsanız, benimle iletişime geçmekten çekinmeyin.

Rsyslog kullanabileceğine eminim, tcp ile syslog-ng kullanıyoruz (hem şifreli hem de disk tabanlı arabelleğe almayı kullanarak hem güvenli hem de mesaj iletimini sağlamaya yardımcı olabilirsiniz).

Test kutularımız hiç kaybetmeden saniyede 3000 olaya kadar - bir Amazon EC2 mikro kutusu üzerinde gönderiyorlar (aklınızdan çıkarmayın, bu da çoğunlukla depolama ihtiyaçları nedeniyle üretimde işe yaramaz, ancak bu bizim yaptığımız işin bir kanıtıdır) yapılır).

HA için, iki hedef günlük sunucusunu kullanmak daha sonra tekrar denemek ve çıkarılmak için daha kolay olurdu - o zaman, iki sunucu arasında bir kalp atışı kullanın ve birincil çevrimdışı olduğunda bekleme durumuna geçemeyin. İsterseniz, yine de tekilleştirebilirsiniz, ancak eski uygulama yapmak ve çok iyi çalışmak için çok daha kolay olma eğilimindedir.

Syslog olmayan dosyaları senkronize etmek, perl ile ayrıştırmak ve Log :: Syslog :: Fast kullanarak syslog üzerinden göndermek için basit bir meseledir. Bu, yazılımımızın katkıda bulunan dizininde yer alan bunun bir örneğidir (eğer isterseniz kopya). Bunları sadece LogZilla sunucusuna kopyalayabilir ve ön işlemciye doğrudan aktarabilirsiniz.


2
2018-04-15 04:51



Cevabınız için teşekkür ederim. Ancak, LogZilla günlük işlemden daha çok kütük teslimi olmaktan çıkmış gibi görünüyor. Günlük teslimi için, syslog-ng'yi TCP ile kullanmanın sadece genel talimatları vardır. Ancak, ağ sorunları olduğunda ve sunucular çökebilir olduğunda TCP syslog güvenilir değildir. Kalp atışı kullanmak için aynı şey - bir geçişte kayıp veya çoğaltılan mesajlar olacaktır. Bu yüzden şartların gerçekten cevap verdiğini düşünmüyorum. Ancak, Log :: Syslog :: Fast'e işaret ettiğin için teşekkürler, hızlı taklitçiye ulaşmak için nasıl kayıt yaptığını görmek için kaynak kodunu kontrol edeceğim. - Nakedible
Anladım. Cevabınızı bulamazsanız, ilgileniyorsanız :-) kişisel olarak sizinle bir çözüm üzerinde çalışmak isterim - Clayton Dukes