Virtual IP nedir ve nerelerde kullanılır?
Bu flood’da Virtual IP (Sanal IP)’nin ne olduğunu ve hangi işlerde kullanıldığını anlatacağım.
IP adresleri genel olarak -sanal veya fiziksel- bir ağ arayüzü (network interface) ile ilişkilendirilir. İlgili IP’ye gelen istekler bu ağ arayüzünde karşılanarak işletim sistemine iletilir. Virtual IP - (VIP) ise mevcut bir ağ arayüzüne ekstra IP adresi olarak eklenmektedir.
VIP'ler bir ağ arayüzünün mevcut IP'sine ek olarak atanan IP'ler olduklarından çok farklı kullanım alanlarına sahip olarak çözülmesi zor karmaşık problemleri rahatlıkla çözerler. İlgili kullanım senaryolarına geçmeden önce Linux özelinde VIP'leri daha yakından tanıyalım.
Linux’ta bir VIP oluşturmak için ifconfig veya ip komutları kullanılabilir. ifconfig komutu artık yerini ip - iproute2 komut ailesine bırakacağı için örneklerde ip komutunu kullanalım. Aşağıda enp0s8 ağ arayüzüne bir VIP - 192.168.33.200 eklenmiştir.
Yukarıdaki ekran çıktısından görüldüğü üzere 192.168.33.200 IP'si VIP olarak enp0s8 ağ arayüzüne eklenmiştir. Aşağıdaki ekran görüntüsünden görüldüğü üzere bu IP'ye dışarıdaki bir bilgisayardan da erişebilmektedir.
VIP eklenen bilgisayar ilgili IP için ağ üzerinden yayınlanan ARP - Address Resolution Protocol mesajlarına cevap vererek o IP'ye ilişkin paketlerin kendisine gelmesini sağlamaktadır. Bu mekanizmayı bir flood'da incelemiştik https://medium.com/@gokhansengun/45824b166908
En basit kullanım alanında VIP, bir sunucuda aynı port üzerinden yayın yapan servisleri tanımlamamıza olanak tanır. Örnek olarak VIP yardımıyla tek sunucu üzerinde birden fazla web sitesi için 80 portundan farklı IP'lerle web sunucu hizmeti verilebilir.
Aşağıdaki ekran çıktısında iki farklı web sunucu biri VIP olmak üzere iki farklı IP'den fakat aynı porttan (80) yayın yapmaktadır.
Bir bilgisayarda birden fazla web sitesi sunmak için aslında VIP'ye ihtiyaç yoktur çünkü birçok web sunucu yazılımında (Apache, Nginx) Virtual Host desteği vardır ve aynı porttan birçok web sitesini sunabilirler. Virtual Host kavramını ilerleyen flood'larda ele alacağız.
Servisin HTTP/S yerine TCP/UDP olması durumunda aynı TCP/UDP portundan yayın yapmak veya bu portlardan başka bir sunucuya proxy (vekil) görevi görmek için VIP kullanılmak zorundadır çünkü TCP/UDP'de HTTP/HTTPS gibi gelen istekten sunucuyu tanımlayabilecek bir bilgi bulunmaz.
Bu kullanım alanına örnek olarak aynı sunucu kullanılarak farklı IP’lerden hizmet verecek iki adet TCP/UDP bazlı sunucu (MongoDB, PostgreSQL, vb) çalıştırılması verilebilir. Bu yöntem özellikle test ve geliştirme sistemlerinde kaynak tasarrufu açısından gayet faydalıdır.
Son olarak VIP, Aktif-Pasif şekilde yedekli çalışan sistemlerde yüksek erişilebilirliğin sağlanmasında kullanılır. Bu sistemlerde Floating IP adındaki VIP o anda Aktif olarak belirlenen sunucuya atanır ve bütün istemciler ilgili sisteme Floating IP üzerinden erişir. Aktif olarak işaretlenen sunucuda bir problem olması ve servis veremeyecek hale gelmesi durumunda Floating IP, VIP olarak Pasif durumdaki sunucuya atanır ve Pasif sunucu aktiviteyi üzerine alarak Aktif sunucu olmuş olur bu sayede de yüksek erişilebilirlik sağlanır.
VIP ve diğer bazı yöntemlerle yüksek erişilebilirliğin nasıl sağlandığına bir sonraki flood'da detaylı olarak değineceğiz.