paint-brush
MinIO'da Hata Ayıklamaya Yönelik Profesyonel İpuçları: Kubernetes ve Bare Metal Ortamlarında Yaygın Sorunların Aşılmasıile@minio
8,004 okumalar
8,004 okumalar

MinIO'da Hata Ayıklamaya Yönelik Profesyonel İpuçları: Kubernetes ve Bare Metal Ortamlarında Yaygın Sorunların Aşılması

ile MinIO8m2024/04/12
Read on Terminal Reader

Çok uzun; Okumak

Bu blog yazısında size Kubernetes'te çalışan bir MinIO kurulumunda nasıl hata ayıklayacağınızı ve ayrıca çıplak donanım kurulumu yaparken karşılaşabileceğiniz bazı genel sorunları ve bunların nasıl düzeltileceğini göstereceğiz.
featured image - MinIO'da Hata Ayıklamaya Yönelik Profesyonel İpuçları: Kubernetes ve Bare Metal Ortamlarında Yaygın Sorunların Aşılması
MinIO HackerNoon profile picture
0-item
1-item


MinIO dağıtımları her şekil ve boyutta mevcuttur. Linux'un herhangi bir sürümünde çıplak donanım kurulumlarını, Kubernetes'in herhangi bir sürümünde (Red Hat OpenShift dahil) kapsayıcılı kurulumları destekliyoruz ve küçük, hafif, tek bir ikili programı dağıtabileceğiniz hemen hemen her yere kurulum yapıyoruz. Ancak esneklikle birlikte uç durum sorunlarının hata ayıklama gerektirmesi kaçınılmaz hale gelir.


Bu blog yazısında size Kubernetes'te çalışan bir MinIO kurulumunda nasıl hata ayıklayacağınızı ve ayrıca çıplak donanım kurulumu yaparken karşılaşabileceğiniz bazı genel sorunları ve bunların nasıl düzeltileceğini göstereceğiz.


Kubernetes Hata Ayıklayıcı Pod

Kubernetes kümesinde çalışan MinIO API'sine erişmenin birkaç yolu vardır. API'ye erişebilmek için kubectl port-forwarding kullanabilir veya NodePort bir Dinleme Service ayarlayabiliriz. Bu yöntemlerin her ikisi de hizmete ağ dışından erişmenin bir yolunu sunar, ancak bunların büyük bir dezavantajı vardır: Yalnızca NodePort veya Bağlantı Noktası Yönlendirmenin referans verdiği Hizmete kullanılabilir bir bağlantı noktasından erişebilirsiniz (uygulamanın olağan yapılandırması değil). ). Örneğin, genellikle 9000 bağlantı noktasında bulunan MinIO API'sine rastgele atanmış bir 3xxxx bağlantı noktası aracılığıyla erişmeniz gerekir.


Ya size daha iyi bir yol olduğunu ve bunun yeni olmadığını söylesem? Uygulamalarda hata ayıklarken, yerel çalışma zamanı ortamına tam erişime sahip olmak istersiniz, böylece kümedeki sorunları gidermek ve hata ayıklamak için çeşitli araçları kullanabilirsiniz. Bunu yapmanın bir yolu, "meşgul kutusu" tarzı bir bölmeyi başlatmak ve uygulamada hata ayıklamak için gereken tüm gerekli araçları yüklemektir.


Öncelikle MinIO kurulumunuzla aynı ad alanına bir Pod başlatın. Bunu yapmak için aşağıdaki yaml ile debugger-pod.yaml adında bir yaml dosyası oluşturun.


 apiVersion: v1 kind: Pod metadata: name: mc labels: app: mc spec: containers: - image: minio/mc:latest command: - "sleep" - "604800" imagePullPolicy: IfNotPresent name: mc restartPolicy: Always


Yukarıdaki Pod yapılandırması, MinIO mc yardımcı programı için görüntüyü çekiyor. Pod'un sadece başlatılıp çıkmamasını sağlamak için bir sleep komutu ekledik.


Yaml kaydedildikten sonra yapılandırmayı MinIO kümesinin çalıştığı Kubernetes ad alanına uygulayın


kubectl apply -f debugger-pod.yaml


Pod çalışmaya başladığında ona kabuk yoluyla erişin


 $ kubectl exec -i -t -n default mc -c mc -- sh -c "(bash || ash || sh)" [root@mc /]#


Daha sonra mc ile MinIO kümesine erişebilirsiniz


 [root@mc /]# mc alias set myminio --insecure Added `myminio` successfully.


Artık bir hata ayıklayıcı podu hazır ve çalışır durumda olduğuna göre, aynı ağ içerisinde doğrudan küme üzerinde eylem gerçekleştirebilirsiniz. Örneğin, çoğaltma bir sitenin çevrimdışı olması veya donanım arızası nedeniyle bozulduysa aşağıdaki komutu kullanarak çoğaltılacak bekleyen nesneleri yeniden eşitleyebilirsiniz.


 [root@mc /]# mc admin replicate resync start minio1 minio2 [root@mc /]# mc admin replicate resync status minio1 minio2 ✔ ✔ ✔ ResyncID: 2248d1d1-633f-4d61-b938-d8ea0b9b2d31 Status: Completed Objects: 2225 Versions: 2225 FailedObjects: 0 Throughput: 5.3 MiB/s IOPs: 124.23 objs/s Transferred: 94 MiB Elapsed: 17.909833202s CurrObjName: testbucket/web-app/tsconfig.json



Hata ayıklayıcı bölmesini çalıştırmanızın başka bir nedeni de, bölmenizde bazı dosya sistemi izinleri veya geçersiz grup yapılandırmaları varsa bunları hata ayıklayıcı bölmesini kullanarak güncelleyebilmenizdir.


 [root@mc /]# chgrp -R 1000780050 .minio.sys/


Yukarıdaki hata ayıklama yöntemi çıplak metal ortamlarda da kullanılabilir. Örneğin, mc kurulu olduğu bir meşgul kutusu veya bastion düğümünü başlatabilir ve yukarıdaki talimatların aynısını takip edebilirsiniz.

Çıplak Metalde Hata Ayıklama

Çıplak donanım Linux kurulumları en basit olanıdır. Aslında MinIO'nun SystemD ile kurulup çalıştırılması için sadece birkaç komut yeterli. Ayrıntılar için lütfen bkz. MinIO'yu SystemD ile yapılandırma .


Bazen çıplak metal kurulumları ters gider. İşte bize sorulan (çok yaygın olmayan) tuzaklardan bazıları: ALT AĞ veya Gevşek . Bu tuzaklar donanıma veya işletime özgü değildir ancak her türlü ortamda bilinmesi faydalı olabilir.

Dosya İzni

En yaygın tuzaklardan biri MinIO ikili dosyasının ve yapılandırma dosyasının dosya izinleridir. Böyle bir durumda MinIO'yu SystemD kullanarak başlattığınızda şunu göreceksiniz:


Assertion failed for MinIO. ve işte tam yığın izlemesi


 # systemctl status minio.service ● minio.service - MinIO Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled) Active: inactive (dead) Assert: start assertion failed at Tue 2023-12-26 18:21:38 PST; 8s ago AssertFileIsExecutable=/usr/local/bin/minio was not met Docs: https://docs.min.io Dec 26 18:13:37 minio1 systemd[1]: minio.service: Starting requested but asserts failed. Dec 26 18:17:50 minio1 systemd[1]: Assertion failed for MinIO. Dec 26 18:21:38 minio1 systemd[1]: minio.service: Starting requested but asserts failed. Dec 26 18:21:38 minio1 systemd[1]: Assertion failed for MinIO.


Bunun birkaç nedeni olabilir; listeye göz atalım ve her birini kontrol edelim.


MinIO İkili : Bu örnekte /usr/local/bin/minio konumunda bulunan ikili dosyanın sırasıyla kullanıcı ve grup için root:root iznine sahip olması gerekir.


 # ll /usr/local/bin/minio total 93804 -rwxr-xr-x 1 root root 96018432 Nov 15 16:35 minio*


MinIO Hizmet Kullanıcısı ve Grubu : MinIO hizmetinin güvenlik amacıyla benzersiz bir Linux kullanıcısı ve grubu altında çalışması gerekir, asla root kullanıcı olarak çalıştırılmaz. Varsayılan olarak kullanıcı ve grup adları için minio-user kullanırız. SystemD hizmeti yapılandırma dosyasında buna benzer bir şey görmelisiniz


 User=minio-user Group=minio-user


MinIO Veri Dizini : MinIO verilerinin saklanacağı dizinin minio-user:minio-user veya yukarıdaki gibi MinIO hizmetini çalıştırmaya karar verdiğiniz kullanıcıya ait olması gerekir.


 # ls -l /mnt total 4 drwxrwxr-x 2 minio-user minio-user 4096 Dec 27 09:58 data


SystemD ve MinIO yapılandırması : Her iki yapılandırma dosyası da kullanıcı ve grup için root:root izinlerine sahip olmalıdır.


 # ls -l /etc/default/minio -rw-r--r-- 1 root root 1330 Dec 27 09:52 /etc/default/minio # ls -l /etc/systemd/system/minio.service -rw-r--r-- 1 root root 941 Dec 26 17:13 /etc/systemd/system/minio.service


Kök Olarak Çalıştır : Tüm yükleme işlemi root olarak çalıştırılmalıdır. Kullanıcınızın izinleri varsa sudo da deneyebilirsiniz, ancak kurulumun dosyaları yalnızca root kullanıcının erişebileceği bir dizi yere yerleştirmesi gerektiğinden, öneri kök olarak çalıştırılmasıdır. Bash komut isteminizde bunun gibi bir $ değil, # olmalıdır


# vs $


Yukarıdakilerin hiçbiri işe yaramazsa en iyi yaklaşım uygulamayı, dizinleri ve yapılandırmaları kaldırmak ve kök kullanıcı olarak yeni bir yükleme başlatmaktır.

Bağlantı noktası çakışması

Silinen dosyalarla ilgili diğer bir yaygın sorun ise hâlâ işlemin devam etmesidir ve bu da bağlantı noktası çakışmalarına neden olur. Bir hizmet çalışmadığında bile mevcut bağlantı noktasında yeni bir hizmet başlatamayabilirsiniz veya çalışan hizmet hatalı davranabilir (oturum açmanıza izin vermemek gibi).


 # lsof -n | grep (deleted) COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME nginx 13423 root 5u REG 253,3 42949672960 17 (deleted) minio 13423 minio 6u REG 253,3 0 18 (deleted) minio 13423 minio 7u REG 253,3 0 19 (deleted)



MinIO kurulumunda aşağıdaki gibi hatalar görebilirsiniz


  • Giriş Başarısız oldu net::ERR_FAILED
  • 500 Dahili Sunucu Hatası
  • 401 Yetkisiz



Yukarıdaki ekran görüntüsünde dahili bir sunucu hatası ve yetkisiz bir hata gösterilmektedir. Yüzeye baktığımızda bu hataya neyin sebep olduğu belirsiz görünüyor, biraz linux bilgisiyle hata ayıklayabiliriz, buna neden olabilecek neye bakmalıyız, bir bakalım.


Bu sorunda hata ayıklamanın birkaç yolu vardır; öncelikle aynı düğümde birden fazla MinIO işleminin çalışıp çalışmadığını kontrol edelim.


 # ps aux | grep -i minio minio-u+ 5048 0.3 1.7 1594008 144384 ? Ssl 11:03 0:01 /usr/local/bin/minio server --console-address :9001 /mnt/data/disk1/minio minio-u+ 9276 0.3 1.7 1594208 144301 ? Ssl 11:25 0:01 /usr/local/bin/minio server --console-address :9001 /mnt/data/disk1/minio


Yukarıda gördüğümüz gibi çalışan 2 MinIO işlemi var. Daha eski veya en uzun süre çalışan işlemi sonlandırarak başlayın, bu durumda işlem kimliği 5048 gibi görünüyor.


kill -9 5048


Bazen, işlemi sonlandırdıktan sonra bile hizmet hala başlamayabilir veya bir işlem numarası ayırdığı ancak buna izin vermediği için hizmet hala kapatılabilir. Bunun nedeni, silinmiş ancak işletim sistemi tarafından hâlâ izlenmekte olan dosyalar olabilir. Silinen dosyaları LSOF aracılığıyla bulabilirsiniz.


lsof -n | grep '(deleted)'


Son fakat bir o kadar da önemli olarak, geride silinmiş dosyalar veya askıda kalan işlemler kalmadıysa ve her şey tamamen temiz görünüyorsa son çare, düğümü hızlı bir şekilde yeniden başlatmaktır. Bu, yeni bir yükleme başlatmanız için bekleyen dosyaları ve işlemleri kapatıp temizleyen mantıklı bir yöntemdir.

SUBNET kurtarmaya geliyor

Nadir de olsa, uç kurulum durumları her zaman mevcut olacaktır. MinIO müşterileri endişelenecek bir şeylerinin olmadığını biliyorlar çünkü kodu yazan mühendislerimize hızlı bir şekilde mesaj gönderebiliyorlar. ALT AĞ portal. Neredeyse her şeyi gün ışığına çıkardık, bu nedenle sorun ilk bakışta gizemli veya akıllara durgunluk verici görünse de, çok çeşitli ortamlardaki hata ayıklama kurulumlarındaki uzun yıllara dayanan uzmanlığımızı işe koyacağız ve size hemen yardımcı olacağız.


Sorun giderme ve hata ayıklamayla ilgili sorularınız varsa MinIO kurulumlar için bizimle iletişime geçmeyi unutmayın Gevşek !