Varnish Başlangıç — 2

oguzhaninan
Devops Türkiye☁️ 🐧 🐳 ☸️
5 min readAug 18, 2019

--

Başlangıç Seçenekleri

Bundan önceki yazıda yapılandırma dosyasının tek amacının başlangıç seçeneklerini Varnish’e aktarmak olduğunu gördük. Teoride, bir servis yöneticisine ihtiyacınız yok: Varnish’i kendiniz çalıştırarak ve başlangıç seçeneklerini manuel olarak atayarak Varnish’i manuel olarak başlatabilirsiniz.

Ağ Bağlantısı

En önemli ağ seçeneği -a seçeneğidir. Varnish ile bağlanmak için kullanılan adresi, port ve protokolü tanımlar. Varsayılan olarak, değeri: 6081. Bu, Varnish’in 6081 numaralı TCP bağlantı noktasındaki kullanılabilir tüm ağ arabirimlerine bağlı olacağı anlamına gelir. Çoğu durumda, değeri hemen, geleneksel HTTP bağlantı noktası olan 80’e çevirirsiniz.

Hangi protokolün kullanılacağına da karar verebilirsiniz. Varsayılan olarak, bu HTTP’dir, ancak bunu PROXY olarak da ayarlayabilirsiniz. PROXY protokolü, TCP bağlantınıza “başlangıç” olarak adlandırılır ve istemcinin gerçek IP adresini içerir. Bu, yalnızca Varnish, PROXY protokolünü destekleyen başka bir proxy sunucusunun arkasında oturuyorsa çalışır.

Birden fazla -a seçeneğini kullanarak birden fazla dinleme adresini tanımlayabilirsiniz. Daha önce gösterildiği gibi HTTP ve PROXY desteğini birleştiriyorsanız, birden fazla dinleme adresi anlamlı olabilir.

CLI Bağlantısı

İnceleyeceğimiz ikinci seçenek -T seçeneğidir. Varnish CLI’nin dinlediği adres ve portu tanımlamak için kullanılır. Varnish CLI varsayılan olarak 6082 numaralı bağlantı noktasındaki localhost’a bağlanır. Bu, CLI’nin yalnızca yerel olarak erişilebilir olduğu anlamına gelir.

CLI’yı uzaktan erişilebilir kılarken dikkatli olun, çünkü CLI’ye erişim kimlik doğrulaması gerektirse de, hala şifrelenmemiş bir bağlantı üzerinden gerçekleşir.

Güvenlik Seçenekleri

-j seçeneği, Varnish örneğinizin yetkilerini kısıtlamaya ve alt işlemleri belirtilen kullanıcı altında çalıştırmanıza olanak tanır. Varsayılan olarak, tüm işlemler varnish kullanıcısı kullanılarak gerçekleştirilir.

Jailing seçeneği, özellikle tek bir sunucuda birden fazla Varnish örneği kullanıyorsanız kullanışlıdır. Bu şekilde, örnekler arasında daha iyi bir izolasyon yapılmış olur.

-S seçeneği, gizli anahtarı içeren dosyanın konumunu tanımlamak için kullanılır. Bu gizli anahtar, Varnish CLI ile doğrulama yapmak için kullanılır. Varsayılan olarak, bu dosyanın konumu /etc/varnish/secret şeklindedir. Otomatik olarak rastgele bir değer içerir.

CLI’ye kimliği doğrulanmamış erişime izin vermek için -S parametresini eklememeyi seçebilirsiniz. Gizli anahtar değerinin konumunu değiştirmek istiyorsanız, -S parametresinin değerini değiştirin. Yalnızca gizli anahtarı değiştirmek istiyorsanız, /etc/varnish/secret dosyasını düzenleyin ve Varnish’i yeniden yükleyin.

Depolama Seçenekleri

Önbellekteki nesnelerin bir yerde depolanması gerekir. -s seçeneği devreye giriyor. Varsayılan olarak, nesneler bellekte depolanır (malloc) ve önbellek boyutu 256 MiB’dir.

Önbelleğinizin ve depolama türünün boyutu, büyük ölçüde depolayacağınız nesne sayısına bağlıdır. Tüm önbellek dosyalarınız belleğe sığarsa, her şey çok güzel. RAM hızlı ve basittir, ne yazık ki, RAM boyut bakımından sınırlı olacaktır. Varnish örneğinizin belleği tükenirse, önbellekten gelen öğeleri çıkarmak için Least Recently Used (LRU) stratejisini uygular.

Depolamanın boyutunu belirtmezseniz ve yalnızca malloc değeri verirseniz, önbellek boyutu sınırsız olacaktır. Bu, Varnish’in potansiyel olarak sunucunuzun tüm hafızasını kullanabileceği anlamına gelir. Sunucunuzda bellek yetersizse, işletim sisteminin takas alanını kullanır. Bu, temel olarak fazla verileri diskte saklar. Bu, eğer diskleriniz yavaşsa, tüm sisteminizde önemli bir yavaşlamaya neden olabilir.

Varnish, önbelleklenen nesne başına kullanım sayısını yazar. Kullanılabilir hafızanın yetersizliği nedeniyle nesneleri çıkarması gerektiğinde, bir sonraki istenen nesneyi saklamak için yeterli alana sahip olana kadar en az kullanılan nesneleri çıkarır. Özel bir Varnish sunucunuz varsa, mevcut hafızanızın yaklaşık %80'ini Varnish’e atamanız önerilir. Bu, -s başlangıç ​​seçeneğini değiştirmeniz gerekeceği anlamına gelir.

Dosya depolama da desteklenir. Bellekten daha yavaş olmasına rağmen, yine de bellekte ara belleğe alınacaktır.

Örnek kullanımlar;

-s statik=file,/var/cache/depo.bin,1g-s malloc,256m

VCL Dosya Yolu

VCL dosyasının konumu -f seçeneği kullanılarak ayarlanır. Varsayılan olarak /etc/varnish/default.vcl. VCL dosyanızın konumunu başka bir dosya ile değiştirmek istiyorsanız, bu seçeneği değiştirebilirsiniz.

Bir -f seçeneği belirtmezseniz, Varnish’in kullanacağı arka uç sunucusunu tanımlamak için -b seçeneğini eklemeniz gerekir.

Paylaşılan Günlük Belleği

Varnish yalnızca nesnelerini saklamaz; Ayrıca, log ve istatistikler için bellekte ayrılan alan da vardır. Bu bilgi varnishlog, varnishtop, ve varnishstat yardımcı programlar tarafından kullanılır.

Varsayılan olarak, Varnish İstatistikleri Sayaçlarına (Varnish Statistics Counters, VSC) 1 MiB ve Varnish Paylaşılan Bellek Günlüklerine (Varnish Shared Memory Logs, VSL) 81 MiB tahsis edilmiştir.

-l seçeneğinin değerini değiştirerek VSC ve VSL’nin boyutunu değiştirebilirsiniz.

Varsayılan Yaşama Süresi (TTL)

Varnish, bir nesnenin kullanım ömrünü belirlemek için zaman aşımına veya önbellek kontrol başlıklarına bakar. VCL dosyasında herhangi bir başlık yoksa ve açık bir yaşam süresi belirtilmemişse, Varnish, varsayılan olarak 120 saniyelik bir yaşam süresi kullanır. -t başlangıç ​​seçeneğini ayarlayarak başlangıçta yaşam süresini varsayılan olarak değiştirebilirsiniz. Bu seçeneğin değeri saniye cinsinden ifade edilir.

TLS/SSL Hakkında

Transport Layer Security (TLS), aynı zamanda Secure Sockets Layer (SSL) olarak da adlandırılan, ağ üzerinden veri iletişimini şifrelemek için kullanılan bir şifreleme protokolü kümesidir. Bir web bağlamında, TLS ve SSL HTTPS’deki “S” dir. TLS, iletişimi şifreleyerek ve sertifikalar vererek bir güven düzeyi oluşturarak bağlantının güvence altına alınmasını sağlar.

Geçtiğimiz birkaç yıl boyunca, TLS, şifrelenmemiş HTTP trafiğinin birkaç yıl içinde artık normal kabul edilmeyeceği için giderek daha popüler hale geldi. Güvenlik, BT endüstrisinde hala önemli bir konudur ve internet üzerindeki hemen hemen her marka, sitelerinde HTTPS önererek güvenli ve güvenilir olduklarını göstermek istemektedir. Google Arama’nın bile HTTPS web sitelerine daha iyi bir sayfa sırası verdiği söyleniyor.

Varnish, yerel olarak TLS desteğini içermez, çünkü şifreleme zordur ve projenin ana faaliyetinin bir parçası değildir. Varnish, tamamen önbellekleme ile ilgilidir.

TLS kullanmak için trafik Varnish’e gelmeden önce bir proxy ile TLS trafiği çözümlemeniz gerekir. Bu, kurulumunuza TLS bağlantısını sonlandıran ve HTTP üzerinden Varnish ile iletişim kuran bir TLS/SSL çözümleyici eklemek anlamına gelir. Normal koşullar altında Varnish, TLS boşaltıcı tarafından gönderilen X-Forwarded-For HTTP istek başlığının değerini eklemeli ve bu değeri kendi X-Forwarded-For başlığında saklamalıdır. Bu şekilde, arka uç hala kaynak IP’yi alabilir.

Varnish 4.1’de PROXY protokol desteği eklendi. PROXY protokolü, önde gelen açık kaynaklı yük dengeleme yazılımı olan HAProxy tarafından sunulan küçük bir protokoldür. Bu PROXY protokolü, orijinal istemcinin IP adresini içeren TCP bağlantısına küçük bir başlangıç ​​ekler. Bu bilgi aktarılır ve Varnish tarafından yorumlanabilir. Varnish bu değeri kullanacak ve otomatik olarak arka uçlara gönderdiği X-Forwarded-For başlığına ekleyecektir.

Ek olarak, Varnish’teki PROXY protokol uygulaması, VCL’de birkaç değişken ayarlamak için bu yeni kaynak IP bilgisini kullanır:

  • client.ip değişkenini PROXY protokolü aracılığıyla gönderilen IP adresini belirtir.
  • server.ip değişkenini ilk bağlantıyı kabul eden sunucunun IP adresine ayarlanır.
  • local.ip değişkenini Varnish sunucusunun IP adresine ayarlanır.
  • remote.ip değişkenini Varnish’in önünde bulunan makinenin IP adresine ayarlanır.

HAProxy, PROXY’yi destekleyen tek TLS çözümleyici değildir. Varnish Software, TLS bağlantısını sonlandıran ve HTTP üzerinden Varnish ile iletişim kuran bir TLS vekili olan Hitch’i piyasaya sürdü. HAProxy, öncelikle TLS çözümlemesi sunan bir yük dengeleyicisi olmasına rağmen, Hitch yalnızca TLS çözümlemesi yapıyor. Kullanım durumunuza ve kurulumunuzda yük dengelemesi gerekip gerekmediğine bağlı olarak, HAProxy veya özel bir TLS proxy’si seçebilirsiniz. Varnish Software tarafından geliştirilen Varnish’in gelişmiş versiyonu Varnish Plus, hem sunucu hem de müşteri tarafında TLS/SSL desteği sunuyor. Varnish Plus’taki TLS / SSL proxy’si, Varnish ile sıkı bir şekilde tümleşiktir ve üçüncü taraf çözümlere güvenmeden web sitesi güvenliğini artırmaya yardımcı olur.

--

--