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.