Ters Proxy ile DNS Yayılımıyla Mücadele
Sunucuları taşımak, başlı başına bir dizi blog gönderisidir, ancak burada sunucu geçişinizin bir ters proxy kullanılarak büyük ölçüde iyileştirilebilecek bir yönü vardır.
Ters proxy nedir?
Çoğumuz bir proxy sunucusu fikrine aşinayız. Tarifi kutuda: İnternet üzerinde istekleriniz için proxy görevi gören bir sunucu.
Ters proxy benzerdir, ancak tahmin edebileceğiniz gibi tersine çevrilir. Bir ters proxy, internetten istekleri alır, istenen kaynağı vekil olarak hareket ettiği sunucudan alır ve ardından bu kaynağı istekte bulunana geri gönderir.
Apache'nin güçlü özelliklerini kullanmanın bir yolu olarak Nginx'i Apache'nin önüne bile kurmuş olabilirsiniz, ancak yine de Nginx'in hızından yararlanabilirsiniz. Bu senaryoda, Nginx, Apache için bir ters proxy görevi görür.
Bir ters proxy, DNS yayılımına nasıl yardımcı olabilir?
Bir ters proxy, DNS yayılımını gerçekten hızlandıramaz, ancak bunun olmasını beklemekle ilgili birçok baş ağrısını azaltabilir.
Bir müşterinin e-ticaret sitesini bir ana bilgisayardan diğerine taşıdığınızı varsayalım. NixNode'daki VPS'leri ayak uyduramıyor, bu yüzden onları SmigitalSmocean'daki parlak yeni bir bulut sunucusuna taşıyorsunuz. Yeni sunucuda her şeyi ayarladınız ve DNS'yi değiştirmeye hazırsınız, ancak yeni bölge dosyasını bir kez kaydettiğinizde, bazı kullanıcıların yerel DNS önbellekleri güncellenene kadar NixNode sunucunuza ulaşmaya devam edeceğini fark ediyorsunuz. .
Bu senaryoda, eski sunucudan alınan tüm siparişlerin manuel olarak yeni sunucuya taşınması gerekecektir. Bu nispeten yüksek trafikli bir sitedir ve DNS'nin yayılması birkaç saat sürebileceğinden, düzinelerce hatta yüzlerce siparişi yeni sunucuya taşıyabilirsiniz.
Bariz çözüm, güvenli olması için eski sunucuda sipariş vermeyi devre dışı bırakmak olabilir, ancak müşteriniz için bu geliri kaybetme riskiyle karşı karşıya kalırsınız. Alternatif olarak, eski NixNode sunucunuzu SmigitalSmocean kutunuz için bir ters proxy'ye dönüştürerek geçişin anında gerçekleşmesini sağlayabilirsiniz.
Ters proxy'yi ayarlama
Eski NixNode sunucusunun Ubuntu 14.04'te modern bir LAMP yığını çalıştırdığını varsayalım. NixNode sunucunuzda SSH aracılığıyla oturum açtıktan sonra, öncelikle proxy_http Apache modülünün etkinleştirildiğinden emin olmanız gerekir:
$ sudo a2enmod proxy_http
Bu aslında temel proxy modülünü de etkinleştirecek, eğer proxy_http dayandığından beri değilse.
Ardından, seçtiğiniz metin düzenleyicide, sites_available klasörünüzde yeni bir yapılandırma dosyası oluşturmanız gerekir. Vim'i severim, bu yüzden komut şöyle görünür:
$ sudo vim /etc/apache2/sites-available/my-proxy.conf
Ardından VirtualHost yapılandırmasına yapıştırabilirsiniz:
<VirtualHost *:80> ServerName mydomain.com ServerAlias www.mydomain.com ErrorLog ${APACHE_LOG_DIR}/proxy-error.log CustomLog ${APACHE_LOG_DIR}/proxy-access.log combined ProxyRequests Off ProxyPass / http://555.867.530.9/ ProxyPassReverse / http://555.867.530.9/ </VirtualHost>
Kendi ters proxy'nizi kurmak için bu kılavuzu izliyorsanız, mydomain.com sitenizin alan adıyla ve 555.867.530.9 yeni sunucunuzun IP adresiyle değiştirdiğinizden emin olun.
Devam etmeden önce VirtualHost yapılandırmasını satır satır inceleyelim:
-
<VirtualHost *:80>, 80 numaralı bağlantı noktasında bu sunucudaki tüm IP'ler için yeni bir sanal ana bilgisayar tanımladığımız anlamına gelir. -
ServerName proxy.otherdomain.com, bu sanal ana bilgisayarın işleyeceği etki alanını tanımlar. -
ServerAlias www.mydomain.com, istekleriwwwalt etki alanına da proxy yaptığımızdan emin olacaktır. -
ErrorLogveCustomLogsatırları, Apache'nin bu sanal ana bilgisayar için hata ve erişim günlüklerini nereye yazacağını bilmesini sağlar. Daha sonra herhangi bir şeye bakmak istersem, onları sunucudaki diğer ana bilgisayarlardan ayırmayı seviyorum. -
ProxyRequests Off, her ihtimale karşı ileri proxy'yi açıkça devre dışı bırakır. -
ProxyPass / http://555.867.530.9/sihrin gerçekleştiği yerdir, çünkü bu satır proxy'ninServerNameadresine gönderilen istekleri nereye ileteceğini bilmesini sağlar. İstediğin buysa, bir alt dizin bile olabilir. -
ProxyPassReverse / http://555.867.530.9/Apache'nin proxy olarak hareket ettiği sunucudan gelen yanıtları değiştirmesine izin verir. Örneğin,http://555.867.530.9/adresine yapılan bir istek, sizihttp://555.867.530.9/index.phpadresine yönlendiren bir üstbilgi gönderirse, üstbilgi değiştirilir, böylece etkialanim.com'a yönlendiriliriz. /index.php yerine.
Artık dosyayı kaydedebilir ve metin düzenleyicinizden çıkabilirsiniz. Şu anki sitemiz için VirtualHost'u devre dışı bırakmamız, ters proxy için VirtualHost'u etkinleştirmemiz ve son olarak Apache'yi yeniden başlatmamız gerektiğinden henüz hiçbir şey değişmedi.
Hangi sitenin devre dışı bırakılacağını bulmak için hangi yapılandırmaların etkinleştirildiğini kontrol edebilirsiniz:
$ ls /etc/apache2/sites-enabled > 000-default.conf
Bu sunucuyu hemen hemen kutudan çıkardığım için, etkinleştirilen tek 'site', varsayılan yapılandırma olan 000-default.conf . Bu yüzden, bunu devre dışı bıraktığımdan emin olmak, proxy'mi etkinleştirmek ve ardından yaptığım her şeyin yürürlüğe girdiğinden emin olmak için Apache'yi yeniden başlatmak isteyeceğim:
$ sudo a2dissite 000-default $ sudo a2ensite my-proxy $ sudo service apache2 restart
Artık mydomain.com ziyaret eden herkese http://555.867.530.9 adresindeki sunucu tarafından oluşturulan bir site sunulacak ve henüz DNS'yi bile güncellemedik!
Artık etki alanınızı yeni sunucunuza yönlendirmek için DNS kayıtlarınızı güncellemeye devam edebilirsiniz. DNS yayılırken, bazı ziyaretçiler NixNode'daki sunucuya yönlendirilecek ve bazıları SmigitalSmocean'daki yeni sunucuya gönderilecek, ancak ters proxy'miz sayesinde tüm istekler aslında SmigitalSmocean'daki sunucu tarafından yerine getirilecek.
Hususlar
Ters proxy, yeni bir sunucunun tüm istekleri alanınıza sunmaya başladığı anın tam kontrolünü size geri verdiğinden, sunucuları taşıma sürecini basitleştirmede inanılmaz derecede yardımcı olabilir, ancak önceden bilmeniz gereken birkaç şey var. bu çözümü uygulamak:
-
Ters proxy yalnızca HTTP bağlantıları için geçerlidir. MX kayıtları ve HTTP olmayan istekler gibi diğer tüm kayıtlar, DNS'nin belirttiği IP adresine yönlendirilmeye devam edecektir. Yeni ad sunucularına geçiyorsanız, geçiş yapmayı planlamadan birkaç gün önce TTL değerlerini düşürerek ve NS kayıtlarını güncellemeden önce A kayıtlarınızı yeni sunucunuzu gösterecek şekilde güncelleyerek yayılma süresini azaltabilirsiniz. Çoğu DNS sunucusu, önbelleklerini TTL değerlerine göre güncelleyecektir, ancak yayılma yine de biraz zaman alabilir ve 300 saniyelik bir TTL'ye sahip bir kaydın, dünyadaki arama isteği alan her DNS sunucusunda güncellenmesi birkaç saat sürebilir.
-
HTTPS kullanıyorsanız, 80 numaralı bağlantı noktasında HTTP trafiği için ayarladığınız proxy'ye ek olarak 443 numaralı bağlantı noktası için bir ters proxy kurmanız gerekir.
-
Ters proxy, bir MySQL veya başka bir veritabanını proxy yapmaz. Çoğu durumda, WordPress gibi bir web uygulaması, veritabanınıza
localhostveya127.0.0.1gibi bir adres aracılığıyla erişir ve bu, ters proxy'nizle gayet iyi çalışmalıdır. Öte yandan, veritabanınızasql.mydomain.comgibi bir alt etki alanı aracılığıyla bağlanırsanız, DNS sunucularının önbelleği olmayan yeni, benzersiz bir alt etki alanı kullandığınızdan ve güncellemeyi unutmayın. Orijinal sunucunuzdaki kayıtlar, taşınmanızdan çok önce. -
Taşıdığınız ana bilgisayar, bir ters proxy etkinleştirmek için sunucu yapılandırmanızı düzenlemenize izin vermiyorsa, bu mutlaka birinden yararlanamayacağınız anlamına gelmez. Bu durumda, karışıma üçüncü bir sunucu getirmeniz gerekir: Yalnızca ters proxy görevi görecek bir sunucuyu başlatmak için DigitalOcean gibi bir ana bilgisayar kullanırdım.
İlk başta bu sunucuyu eski siteniz için bir ters proxy olacak şekilde ayarladınız. Ardından, alan adınızın A kaydını, orijinal ana makinenizden kaynak sunmaya devam edecek proxy'yi işaret edecek şekilde güncelleyebilirsiniz. Birkaç gün sonra, DNS'nin yayıldığından emin olduğunuzda, dosyalarınızı ve veritabanınızı yeni sunucunuza aktarabilir ve proxy sunucunuzu yeni ana makineniz için bir ters proxy olacak şekilde güncelleyebilirsiniz. Yeni ana bilgisayarı işaret etmek için DNS kayıtlarınızı tekrar güncelleyin ve birkaç gün sonra trafik proxy'niz üzerinden yönlendirmeyi bıraktığında kapatabilirsiniz.
TMTOWTDI
Yıllar önce bir Perl geliştiricisiyken, genellikle telaffuz edilemeyen bir kısaltmaya indirgenen bir mantra öğrenmiştim: Bunu Yapmanın Birden Fazla Yolu Var .
Bir ters proxy, trafiği zorlu durumlarda ve çevresinde yönlendirmek için inanılmaz derecede güçlü bir araç olabilir – ancak bunu yapmanın her zaman birden fazla yolu vardır. Sunucuları taşımak veya ters proxy'nin yaratıcı kullanımları için en iyi ipuçlarınız nelerdir? Yorumlarda bize bildirin!
ev borcu WordPress sitesi