CentOS 7’de Memcached Kurulumu ve Güvenliği
Memcached, yüksek performanslı, dağıtık bir bellek içi nesne önbellekleme sistemidir. Web uygulamalarının veritabanı yükünü azaltarak ve yanıt sürelerini iyileştirerek performansını önemli ölçüde artırmak için yaygın olarak kullanılır. Bu makalede, CentOS 7 sunucularına Memcached’in nasıl kurulacağını ve güvenliğinin nasıl sağlanacağını adım adım ele alacağız.
Memcached Nedir ve Neden Kullanılır?
Memcached, veritabanı sorguları, API çağrıları veya karmaşık hesaplamalar gibi tekrarlayan ve hesaplama açısından pahalı işlemleri önbelleğe alarak çalışan bir anahtar-değer depolama sistemidir. Verilerin RAM’de saklanması sayesinde, disk tabanlı depolamaya göre çok daha hızlı erişim sağlar.
Memcached kullanmanın temel avantajları şunlardır:
* Performans Artışı: Veritabanı ve uygulama sunucularının yükünü azaltarak web sitelerinin ve uygulamaların daha hızlı yüklenmesini sağlar.
* Ölçeklenebilirlik: Dağıtık bir yapıya sahip olduğundan, birden fazla sunucuya ölçeklenebilir, bu da büyük ölçekli uygulamalar için idealdir.
* Basitlik: Kullanımı ve entegrasyonu nispeten basittir.
* Maliyet Etkinliği: Donanım maliyetlerini düşürerek sunucu kaynaklarının daha verimli kullanılmasını sağlar.
Memcached, özellikle yüksek trafikli web siteleri, e-ticaret platformları, sosyal medya uygulamaları ve API hizmetleri gibi performansın kritik olduğu senaryolarda tercih edilir.
CentOS 7’de Memcached Kurulumu
CentOS 7’de Memcached’i kurmak oldukça basittir. Genellikle varsayılan depolarda bulunur.
1. Depoları Güncelleme
Kuruluma başlamadan önce, sisteminizin paket depolarını güncellediğinizden emin olun:
sudo yum update -y
Bu komut, mevcut tüm paketlerin en son sürümlerini indirir ve sisteminizi güncel tutar.
2. Memcached’i Kurma
Memcached paketini kurmak için aşağıdaki komutu kullanın:
sudo yum install memcached -y
Bu komut, Memcached sunucusunu ve gerekli bağımlılıkları kuracaktır.
3. Memcached’i Başlatma ve Etkinleştirme
Kurulum tamamlandıktan sonra, Memcached hizmetini başlatabilir ve sistem başlangıcında otomatik olarak çalışacak şekilde ayarlayabilirsiniz:
sudo systemctl start memcached
sudo systemctl enable memcached
start komutu Memcached hizmetini hemen başlatır. enable komutu ise sistem yeniden başlatıldığında Memcached’in otomatik olarak başlamasını sağlar.
4. Memcached Durumunu Kontrol Etme
Memcached hizmetinin çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
sudo systemctl status memcached
Çıktıda “active (running)” ifadesini görmelisiniz.
5. Memcached Yapılandırması
Memcached’in varsayılan yapılandırması genellikle çoğu kullanım durumu için yeterlidir. Ancak, bellek boyutu, dinleme portu ve erişim ayarları gibi parametreleri değiştirmek isteyebilirsiniz.
Memcached’in ana yapılandırma dosyası /etc/sysconfig/memcached‘dir. Bu dosyayı bir metin düzenleyici ile açarak ayarları değiştirebilirsiniz.
sudo vi /etc/sysconfig/memcached
Dosya içinde aşağıdaki gibi satırlar göreceksiniz:
PORT="11211"
USER="memcached"
MAX_CONNECTIONS="1024"
CACHESIZE="64"
OPTIONS=""
* PORT: Memcached’in dinleyeceği TCP portunu belirtir. Varsayılan olarak 11211’dir.
* USER: Memcached işleminin çalışacağı kullanıcıyı belirtir. Varsayılan olarak memcached‘dir.
* MAX_CONNECTIONS: Maksimum eşzamanlı istemci bağlantı sayısını belirler.
* CACHESIZE: Memcached’in kullanacağı bellek miktarını megabayt (MB) cinsinden belirtir. Varsayılan olarak 64 MB’dir. Bu değeri sunucunuzun kullanılabilir RAM’ine göre artırabilirsiniz. Örneğin, 512 MB için CACHESIZE="512" olarak ayarlayabilirsiniz.
* OPTIONS: Ek Memcached seçeneklerini belirtmek için kullanılır. Güvenlik ve ağ yapılandırması için bu alan önemlidir.
Yapılandırma dosyasında değişiklik yaptıktan sonra, Memcached hizmetini yeniden başlatmanız gerekir:
sudo systemctl restart memcached
Memcached’i Güvenli Hale Getirme
Varsayılan olarak Memcached, ağ üzerinden kimlik doğrulama veya şifreleme mekanizması içermez. Bu, Memcached’in yalnızca güvenli bir ağ içinde, örneğin yalnızca yerel ağınızdaki uygulamalar tarafından erişilebilir olması gerektiği anlamına gelir. Eğer Memcached’i internete açık bir şekilde çalıştırırsanız, ciddi güvenlik riskleriyle karşı karşıya kalırsınız.
İşte Memcached’i güvenli hale getirmenin başlıca yolları:
1. Güvenlik Duvarı (Firewall) Yapılandırması
Memcached’in varsayılan portu olan 11211’e yalnızca belirli IP adreslerinden veya ağlardan erişime izin vermek, en temel ve etkili güvenlik önlemidir. CentOS 7’de firewalld kullanılır.
1.1. Belirli Bir IP Adresinden Erişime İzin Verme
Eğer Memcached’i yalnızca belirli bir uygulama sunucusundan (örneğin, 192.168.1.100 IP adresli sunucu) erişilebilir kılmak istiyorsanız, aşağıdaki komutları kullanabilirsiniz:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100/32" port port="11211" protocol="tcp" accept'
sudo firewall-cmd --reload
Bu komut, public bölgesinde TCP 11211 portuna yalnızca 192.168.1.100 IP adresinden gelen trafiğe izin verir. --permanent bayrağı, bu kuralın yeniden başlatmalardan sonra da kalıcı olmasını sağlar. firewall-cmd --reload ise değişikliklerin hemen geçerli olmasını sağlar.
1.2. Belirli Bir Ağdan Erişime İzin Verme
Eğer Memcached’i belirli bir yerel ağdan (örneğin, 192.168.1.0/24) erişilebilir kılmak istiyorsanız:
sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="11211" protocol="tcp" accept'
sudo firewall-cmd --reload
1.3. Tüm Erişimi Engelleme (Varsayılan Davranış)
Eğer herhangi bir özel erişim kuralı tanımlamazsanız ve genel erişimi kapatırsanız, Memcached yalnızca yerel makineden (localhost) erişilebilir olur. Bu, en güvenli varsayılan durumdur.
2. Yerel Ağda Çalıştırma (Loopback Arayüzü)
Memcached’i yalnızca yerel sunucu üzerinden erişilebilir kılmak istiyorsanız, yapılandırma dosyasındaki OPTIONS parametresini kullanarak bunu belirtebilirsiniz.
/etc/sysconfig/memcached dosyasını açın:
sudo vi /etc/sysconfig/memcached
OPTIONS="" satırını bulun ve aşağıdaki gibi değiştirin:
OPTIONS="-l 127.0.0.1"
Bu ayar, Memcached’in yalnızca 127.0.0.1 (localhost) adresinden gelen bağlantıları dinlemesini sağlar. Bu, Memcached’i yalnızca aynı sunucudaki uygulamaların kullanabileceği anlamına gelir.
Değişiklikleri kaydettikten sonra Memcached’i yeniden başlatın:
sudo systemctl restart memcached
Bu yöntem, Memcached’i en güvenli şekilde çalıştırmanın bir yoludur, ancak yalnızca tek bir sunucuda çalışan uygulamalar için uygundur. Dağıtık sistemlerde, Memcached’in farklı sunuculardan erişilebilir olması gerekir.
3. SASL Kimlik Doğrulama Kullanma (Daha Gelişmiş Güvenlik)
Memcached’in kendisi yerleşik bir kimlik doğrulama mekanizmasına sahip değildir. Ancak, SASL (Simple Authentication and Security Layer) kullanarak Memcached’e kimlik doğrulama katmanı ekleyebilirsiniz. Bu, daha karmaşık bir kurulum gerektirir.
SASL kurulumu için genellikle aşağıdaki adımları izlemeniz gerekir:
* SASL Paketlerini Kurma:
sudo yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-md5 -y
* Memcached’i SASL Desteğiyle Derleme veya Kurma: Bu genellikle Memcached’in önceden derlenmiş paketlerinde bulunmaz. SASL desteğiyle Memcached’i kendiniz derlemeniz gerekebilir. Bu, özellikle CentOS 7’de standart paket deposundan kurduğunuzda ek bir adımdır ve daha fazla teknik bilgi gerektirir.
* SASL Yapılandırması: /etc/sasl2/memcached.conf gibi bir SASL yapılandırma dosyası oluşturmanız ve kullanıcı kimlik bilgilerini (kullanıcı adı/parola) ayarlamanız gerekir.
* Memcached Servisini SASL ile Başlatma: Memcached’i başlatırken SASL seçeneklerini belirtmeniz gerekir.
Not: SASL kurulumu, standart kurulumdan daha karmaşıktır ve genellikle üretim ortamlarında daha fazla bakım gerektirir. Eğer sadece yerel ağınızdaki uygulamalar Memcached’e erişiyorsa ve bu ağ güvence altındaysa, SASL’ye gerek olmayabilir.
4. TLS/SSL Şifrelemesi (Daha Gelişmiş Güvenlik)
Memcached, verileri şifrelemek için yerleşik bir TLS/SSL desteği sunmaz. Eğer Memcached trafiğini şifrelemeniz gerekiyorsa, bunu bir ters proxy (örneğin, Nginx veya HAProxy) kullanarak yapmanız gerekir.
Ters proxy, istemcilerden gelen şifreli (HTTPS) bağlantıları alır, bunları şifresiz hale getirir, Memcached sunucusuna gönderir, Memcached’ten gelen yanıtı alır ve tekrar şifreleyerek istemciye gönderir.
Bu kurulum, ek bir ters proxy sunucusunun yapılandırılmasını gerektirir ve karmaşıklığı artırır.
Memcached’i Uygulamalarla Kullanma
Memcached’i kurup güvenliğini sağladıktan sonra, onu web uygulamalarınızla entegre edebilirsiniz. Çoğu modern web framework’ü (PHP, Python, Node.js, Ruby vb.) Memcached için istemci kütüphaneleri sunar.
Örneğin, PHP’de Memcached kullanmak için php-memcached paketini kurmanız gerekebilir:
sudo yum install php-memcached -y
Ardından, uygulamanızda Memcached sunucunuzun IP adresini ve portunu belirterek bir Memcached istemcisi oluşturabilirsiniz.
<?php
$memcached = new Memcached();
$memcached->addServer('127.0.0.1', 11211); // Veya Memcached sunucunuzun IP adresi
// Veri Ekleme
$memcached->set('my_key', 'my_value', 3600); // 1 saat (3600 saniye) sonra silinir
// Veri Alma
$value = $memcached->get('my_key');
if ($value) {
echo "Değer: " . $value;
} else {
echo "Anahtar bulunamadı veya süresi doldu.";
}
?>
Bu basit örnek, Memcached’e nasıl veri yazılacağını ve okunacağını göstermektedir. Gerçek uygulamalarda, bu önbellekleme mekanizması, veritabanı sorgu sonuçlarını veya hesaplanmış verileri depolamak için kullanılır.
Performans Ayarları ve İzleme
Memcached’in performansını optimize etmek ve sorunları tespit etmek için bazı ek adımlar atılabilir:
* CACHESIZE Optimizasyonu: Sunucunuzun RAM’ini verimli kullanmak için CACHESIZE ayarını dikkatlice yapın. Çok küçük bir önbellek yetersiz kalırken, çok büyük bir önbellek sistemin genel performansını olumsuz etkileyebilir.
* İstemci Kütüphaneleri: Uygulamanızda kullanılan Memcached istemci kütüphanesinin en son sürümünü kullandığınızdan emin olun.
* Ağ Gecikmesi: Eğer Memcached sunucusu ile uygulama sunucusu farklı makinelerdeyse, ağ gecikmesini minimize etmek önemlidir.
* İzleme Araçları: Memcached’in istatistiklerini izlemek için memcached-tools gibi araçları kullanabilirsiniz. Bu araçlar, önbellek isabet oranları (hit rates), eksik oranları (miss rates), bellek kullanımı gibi önemli metrikleri sağlar.
memcached-tools paketini kurmak için:
sudo yum install memcached-tools -y
Ardından, Memcached’in istatistiklerini görmek için aşağıdaki komutu kullanabilirsiniz:
echo "stats" | nc 127.0.0.1 11211
Bu komut, Memcached sunucusuna stats komutunu gönderir ve sonuçları gösterir.
Özet ve En İyi Uygulamalar
CentOS 7’de Memcached kurmak ve güvenliğini sağlamak, web uygulamalarınızın performansını artırmanın etkili bir yoludur. İşte en iyi uygulamalar:
1. Varsayılan Güvenlik: Memcached’i yalnızca güvenli ve kontrollü ağlardan erişilebilir kılın. İnternete açık bir şekilde çalıştırmaktan kaçının.
2. Firewall Kullanımı: firewalld ile Memcached portuna (varsayılan 11211) erişimi yalnızca gerekli IP adresleri veya ağlarla sınırlayın.
3. Loopback Arayüzü: Mümkünse, Memcached’i yalnızca 127.0.0.1 (localhost) üzerinden erişilebilir hale getirin.
4. Bellek Boyutu: CACHESIZE ayarını sunucunuzun RAM kapasitesine ve uygulamanızın ihtiyaçlarına göre optimize edin.
5. İzleme: Memcached’in performansını ve bellek kullanımını düzenli olarak izleyin.
6. SASL/TLS: Eğer çok yüksek güvenlik gereksinimleriniz varsa, SASL kimlik doğrulaması veya ters proxy ile TLS/SSL şifrelemesi gibi daha gelişmiş yöntemleri araştırın. Ancak bu, kurulumu karmaşıklaştıracaktır.
Bu adımları izleyerek, CentOS 7 sunucularınızda hem güvenli hem de yüksek performanslı bir Memcached kurulumu gerçekleştirebilirsiniz.