Kategori: Araçlar

Neden Applerimizi Containerıza Ederiz?

Container öncesinden anlatmaya başlar isek, Kullandığımız bilgisayarlarda bir çok program aynı anda çalışmaktaydı. Küçük bir forum sitemizin olduğunu varsayarsak, aynı Sanal (veya gerçek makine içinde) Hem Veri tabanı sunucumuz hem Web Server yazılımımız hem Forum Yazılımımız hem de Diğer bütün işleri yönetmek için bir çok program içermekteydi. Bu yapı bize interaktif ve oldukça performanslı bir deneyim sunuyordu ancak.

Her Programın dependencyleri olması ve dependenclerinin birbiri ile çakışması gibi olaylar sıklıktan yaşanmaktaydı. Örnek vermek gerekirse, yaptığınız bir java 6- Java 8 güncellemesi Web Severınızın down olmasına yapmamanız kullandığınız kuyruk yapısının yeni versiyonunu kullanamamanıza yol açabiliyordu. Sistemde aynı anda 6 farklı python versiyonun yüklü olması ve zaman zaman bu farklılıklar nedeni ile yaşadığımız downtimelar da oldukça fazla idi. Containerlar sayesinde kendi iç yapılarında işlemler yaptıkları için problemsiz çalışmaktadırlar. İstediğimiz kadar farklı dependency destekleyen servisi Containerlar yardımı ile kullanabilir hale geldik. Dependency çakışmalarının önüne geçmiş oluyoruz.

Tek bir servise olan aşırı yüklenme sebebi ile bütün bir sistemimiz down olmaktaydı. Containerlarımıza Resource limitleri vererek ve yazdığımız servislerde limitlere uygun yapılar kurarak sorunun üstesinden gelmekteyiz.

Containerlarımız üzerinde gelişirme yaptığımız ve mümkünse bütün sistemin bir kopyasında geliştirme yaptığımız için Work on My Machine durumu ile karşılaşma olasılığımızı ciddi oranda azaltırız.

Containerlarımızı kolay bir şekilde Scale edebiliyoruz. Swarm gibi Kubernetes gibi araçlar ile bu durumu sağlayabildiğimiz gibi basit bir load balancing mekanizması kurarak da işlemimizi gerçekleştirebiliriz.

En kolay Deployment yöntemlerinden biridir. Containerların hazılanması ve deploymentı saniyeler seviyesinde ve doğru mekanizmalar ile 0 downtime ile yaşanamaktadır.

Şimdilik bu kadar. Yazı güncellenecektir.

AlmaLinux’ta Firewall ile Oynamak

AlmaLinux’ta firewall’da listelemek değişiklik yapmak ve işlemlerini görmek için firewall-cmd komutunu kullanmamız gerekmektedir. Default olarak firewall açık olarak gelmektedir ve 80 portu dahil hepsini engellemiş halde gelmektedir.

Basit şekilde firewallın çalışıp çalışmadığını görmek için:

systemctl status firewalld

Evde bildiğiniz gibi systemctl ile stop edebilirsiniz ancak önermemekteyiz. Yerine firewall’a rulelar ekleyip isteklerimizi karşılayacak hale getirebiliriz Örnek olarak 80 tcp portunu açmak için:

sudo firewall-cmd –zone=public –add-port 80/tcp –permanent

Ardından reload yaptıktan sonra kullanabilir hale gelmektesiniz:

sudo firewall-cmd –reload

Port kurallarını listelemek için:

sudo firewall-cmd –zone=public –list-ports

kullanmanız yeterlidir.

AlmaLinux komple bir şekilde, içinde podman vb olduğu halde gelmektedir. Özellikle development environmenti olarak yeni işe giren kişilere verip mümkün olduğunca zarar vermeden kullanmasını sağlayabiliriz. Benim bu tarz işler için önerdiğim distro olmaya aday gözüküyor.

Jellyfin/FFMpeg’in Docker Container’ı ile çalışmak

Jellyfin FFMpeg FFmpeg’i docker yardımı ile kullanmanın en kolay yolu olarak karşımıza çıkmaktadır. Nispeten maintain edilen ve kullanılan bir container image olarak karşımıza çıkmaktadır.

Biraz özensiz yazılmış bir Dockerfile’ı vardır ve dolayısı ile bu bilerek kullanmakta fayda vardır.

Örnek olarak ffmpeg yazdığı yol bildiğiniz: /tmp/workdir‘dir Dolayısı ile o klasarü mount etmeniz gerekmektedir.

Oldukça tamamlanmış bir ffmpeg içermektedir. Benim kullandığım her encoder ve decoder yüklüydü. Diğer bazı ffmpeg containerları imageleri gibi container boyutunu küçültmek için bir yığın özelliği atmamışlar.

Kullanım örneğine:

 sudo docker container run --rm -v /home/anilkay/ffmpegsonuc:/tmp/workdir jellyfin/ffmpeg -i https://ssltest.anilkay.com/movies/adalet.mp4  -c:a copy -c:v libx265 bilmemne4.mp4
imajın boyutu 270 mb nginixten sadece 130mb daha büyük. Gerçekten başarılı.

Evet belkide ilerleyen yıllarda bütün Applerimiz container içinde çalışacak hale gelecek. Flatcar Container Linux ve benzeri distrolar ile başlayan bu akım ile daha korunaklı yapılara ve daha az çakışmaya maruz kalacağımız bir dünyaya merhaba diyebiliriz. Hadi bakalım bekliyoruz 🙂