Ağustos 15, 2022
İçindekiler
Bu makale, kaos mühendisliği ilkeleri hakkında bir çalışma bilgisi sağlar, yazılım geliştirmedeki kullanımını tartışır ve kullanımının blok zinciri geliştirmeye nasıl genişletilebileceğini araştırır.
Bu makalenin öğretici kısmı, Ethereum istemcilerinin test edilmesi için kaos mühendisliğinden yararlanmak için ChaosETH çerçevesinin nasıl kullanılacağını gösterir. Bu strateji, sözleşme ağ üyeleri tarafından geniş çapta benimsenmeden önce akıllı sözleşmelerdeki kusurları (bazen “karanlık borçlar” olarak anılır) belirlemek için yardımcı olabilir.
Kaos mühendisliği, bir üretim ortamında meydana gelebilecek türbülanslı koşullara dayanıklı ve hataya daha dayanıklı hale getirmek için dağıtılmış bir sistem üzerinde deneyler yapma uygulamasıdır. Konsept, Casey Rosenthal liderliğindeki bir ekibin yazılım kullanılabilirliğini ve sistem esnekliğini test etmekten sorumlu olduğu Netflix'e kadar kolayca izlenebilir .
Kaos mühendisliği, kaos mühendislerine rehberlik edecek beş ileri ilkeye sahiptir. Kaos mühendisliğini düzgün bir şekilde uyguladığınızdan emin olmak için bu ilkeleri izleyin:
Gördüğünüz gibi, bu ilkeler geleneksel test tekniklerinden çok farklıdır.
Blockchain teknolojisi, dağıtılmış defter teknolojisinin bir alt kümesidir ve dağıtılmış merkezi olmayan uygulamalar oluşturmak için kullanılır. Bu dağıtılmış durum, aslında bilgisayarlar olan eşler arası bir düğüm ağı oluşturularak elde edilir. Bir sistem daha yaygın olarak benimsendikçe ve daha fazla bilgisayara bağlandıkça karmaşıklığı artar.
Cardano Quick News on Twitter: "E-posta hizmetinizde bir hata varsa, insanlar ciddi bir şey değil sadece şikayet edeceklerdir. Ancak bir blok zincirinde bir hata varsa, insanlar para kaybedebilir. Şimdi bu ciddi. blockchain.Ve onlar Cardano'nun kalbindeler.#Cardano $ada #ada / Twitter”
E-posta hizmetinizde bir hata varsa, insanlar sadece şikayet edecek, ciddi bir şey değil. Ancak bir blok zincirinde bir hata varsa, insanlar para kaybedebilir. Şimdi bu ciddi. Güvenlik ve istikrar bir blok zinciri için en önemli şeylerdir. Ve onlar en önemli şeydir. Cardano'nun kalbi.#Cardano $ada #ada
Aşırı yüklenmiş işletim sistemleri, bellek yönetiminden kaynaklanan hatalar veya ağ bölümleri nedeniyle istemciler aracılığıyla bir blok zincirinde hatalar ve zayıflıklar meydana gelebilir. Bir Ethereum istemcisini dağıtmak, yalnızca kendisine önemli kaynaklar sağlayan bir işletim sisteminde mümkündür.
Kaos mühendisliğinin dağıtılmış sistemlere çok uygun olduğu göz önüne alındığında, Ethereum ağı gibi bir blok zincirinde katılan her müşterinin esnekliğini sağlamada faydalı olabilir.
Bir blok zincirine kaos mühendisliği ilkelerini enjekte etmek için deneyler tasarlarken akılda tutulması gereken bazı noktalar şunlardır:
Bu makale özellikle kaos mühendisliğini Ethereum istemci uygulamalarına dahil etmeyi kapsar. Bununla birlikte, Web3'te kaos enjekte etme kavramının, tüm blok zincirlerinin tüm merkezi olmayan uygulamaları için geçerli olduğunu belirtmek önemlidir.
Ethereum, büyük merkezi olmayan platformların operasyonel omurgası haline geldi ve şunlara sahip:
Canlı bir Ethereum istemcisinde kaos testi için uygun planlama aşağıdakileri içermelidir:
Bu öğreticide, bir Ethereum istemcisinin üretimde ne kadar esnek olduğunu ölçen yeni bir çerçeve olan ChaosETH'nin bir Go-Ethereum (Geth) istemcisinde kaos mühendisliği deneyleri yürütmek için nasıl kullanılacağını göstereceğiz.
ChaosETH, Long Zhang ve İsveç'teki KTH Kraliyet Teknoloji Enstitüsü'ndeki meslektaşları tarafından oluşturuldu . ChaosETH, Ethereum istemcilerinin esnekliğini değerlendirmek ve böylece Ethereum blok zincirini daha güvenilir hale getirmek için tasarlandı. Çalışma yoluyla, ChaosETH:
Başlayalım!
Sanal makineyi barındıracağınız bir bulut hizmeti sağlayıcısı seçin veya Docker'ı kurup yapılandırın . İşletim sistemi olarak Ubuntu çalıştıran bir sanal makine örneği oluşturun ve 30303 numaralı bağlantı noktasını açın. Bu, Ethereum istemcisinin dinlediği varsayılan bağlantı noktasıdır.
Ardından, Ethereum istemcisinin en son kararlı sürümünü edinin. Geth istemcisiyle gidelim.
Belgelerin sağladığı yükleme adımlarını izleyerek istemciyi oluşturun. Kaos mühendisliği bazı gözlemlenebilirlik özellikleri gerektirir, bu nedenle Geth'in metrikler için dokümantasyon desteğinde izleme özelliklerini etkinleştirmek için seçenekler eklemeniz gerekir.
İşletim sisteminize veya araçlarınıza bağlı olarak Geth istemcisini kurmanın birçok yolu vardır. Bu yazıda Docker'ı kullanacağız ve komutu bir kabuk üzerinde çalıştıracağız:
liman işçisi ethereum/istemci-go çekin # ve şununla çalıştırma:\ docker run -it -p 30303:30303 ethereum/client-go
İzleme işlevlerini etkinleştirmek için Geth istemcisinin yanında InfluxDB kullanacağız. Aşağıdaki komutu kullanın:
docker run -p 8086:8086 -d --name influxdb -v influxdb:/var/lib/influxdb influxdb:1:8
Şimdi, aşağıdaki komutları yürüterek InfluxDB kapsayıcısını yapılandırın:
docker exec -it influxdb bash
Bu komutu kapsayıcının içinde çalıştırın:
akın
Ardından, InfluxDB kabuğunda şu komutları yürütün:
CREATE DATABASE kaosu "KAOSET" ÜZERİNDE SAKLAMA POLİTİKASI "rp_chaoseth" OLUŞTUR SÜRE 999d ÇOĞALTMA 1 VARSAYILAN TÜM AYRICALIKLARLA ŞİFRE xxx İLE USER geth OLUŞTURUN
Artık konteyner hazır. Geth istemcisini, gözlemlenebilirlik ölçümleri ve diğer seçeneklerle birlikte çalıştırmaya devam edebilirsiniz. Geth, aralarından seçim yapabileceğimiz 500'den fazla farklı ölçüm sağlar.
İstemci, önceki denemelerden sonra yeniden başlatılsa bile bir kök kullanıcı tarafından çalıştırılmalıdır. Bu nedenle, sistem çağrısı izleme ve hata enjektörü için
sudo gereklidir.
Veri dizini, örneğin ekstra disk alanı göz önüne alındığında, komutta bir seçenek olarak belirtilmelidir. Bu yapılmazsa, bunun yerine örneğin işletim sistemi sürücüsünde kalıcı hale gelir.
Bir müşterinin eşlerinden tutarlı yapılandırmalar gereklidir, bu nedenle bir hedef eş sayısı belirteceğiz; Geth istemcisi için varsayılan maksimum eş sayısı olduğundan
50 kullanacağız.
Uygulama düzeyinde izleme için gözlemlenebilirlik metrikleri dahil edilmiştir.
Son olarak, terminali boşaltmak için Geth istemcisini arka planda çalıştırabilir ve çıktıyı istediğiniz yere yönlendirebilirsiniz.
Ortaya çıkan komut şöyle görünecektir:
sudo nohup ./geth --datadir=/data/eth-data \ --maxpeers 50 \ --metrics --metrics.pahalı \ --metrics.influxdb --metrics.influxdb.database DB_NAME --metrics.influxdb.username geth --metrics.influxdb.password DB_PASS \ >> geth.log 2>&1 &
Tüm senkronizasyon süreci yaklaşık üç gün sürer ve durum https://ethernodes.org/ adresinden izlenebilir.
Dağıtıldığında, eşitleme tamamlandıktan sonra istemcinin sabit durum davranış ölçümlerini gözlemleyen bir
client_monitor.py betiği vardır. Aşağıdaki komut, istemci monitörünü sürece ekleyecek ve ayrıca metrik verileri 8000 bağlantı noktasındaki Prometheus'ta bir uç nokta olarak besleyecektir:
nohup sudo ./client_monitor.py -p CLIENT_PID -m -i 15 --data-dir=CLIENT_DATA_DIR >/dev/null 2>&1 &
Metrik verilerini Prometheus'tan sıyırmak için aşağıdaki komut dosyasını
config dosyanıza ekleyin:
scrape_configs: - iş_adı: 'client_monitoring' static_configs: - hedefler: ['172.17.0.1:8000']
Alternatif olarak, aşağıdaki gibi bir Grafana panosu oluşturarak verileri görselleştirebilirsiniz:
./visualization/Grafana - Syscall Monitoring.json dosyası.
Orijinal deneydeki kararlı durum analizi, iki farklı izleme oturumu sırasında yakalanan verilerin ölçümlerini gösterir.
Kaos mühendisliği ve blok zinciri teknolojisi nispeten yenidir, ancak bunların önemi geniş çapta benimsenerek kanıtlanmış ve onaylanmıştır.
Bu makalede, kaos mühendisliği ilkelerine genel bir bakış sağladık, ChaosEth çerçevesini tanıttık ve bir GETH istemcisinin dayanıklılık testi için ChaosETH çerçevesinden nasıl yararlanılacağını gösterdik.
Ethereum istemcileri üzerinde kaos mühendisliği uygulamak, bir DApp veya akıllı sözleşmenin yaşam döngüsü sırasında meydana gelebilecek olası hataları belirlemek için kritik öneme sahiptir.
Ethereum istemcilerini test etmek için kaos mühendisliğinden yararlanma yazısı ilk olarak LogRocket Blog'da yayınlandı.
Ethereum istemcilerini test etmek için kaos mühendisliğinden yararlanma