DNS балансировка

Thank you for reading this post, don't forget to subscribe!

DNS сер­вер — это пер­вый узел, кото­рый при­ни­ма­ет запрос от посе­ти­те­ля и воз­вра­ща­ет IP-адрес при­ло­же­ния. После это­го бра­у­зер посе­ти­те­ля посы­ла­ет HTTP запрос на сер­вер при­ло­же­ния и полу­ча­ет ответ.

IP адрес ука­зы­ва­ет­ся в A запи­си доме­на, напри­мер так:

Обыч­но ука­зы­ва­ет­ся одна А запись, сле­до­ва­тель­но DNS все­гда воз­вра­ща­ет один и тот же IP адрес. Одна­ко суще­ству­ет воз­мож­ность изме­нять отда­ва­е­мый IP адрес. Это поз­во­ля­ет направ­лять раз­ных посе­ти­те­лей на раз­ные сер­ве­ра с одно­го домена.

Round Robin

DNS поз­во­ля­ет ука­зы­вать более одно­го IP адре­са в А записях:

# x.x.x.x и y.y.y.y — IP адре­са дру­гих фронтендов

В этом слу­чае, раз­ные кли­ен­ты будут полу­чать раз­ные IP адре­са при обра­ще­нии к наше­му доме­ну. Это поз­во­лит рас­пре­де­лить нагруз­ку меж­ду несколь­ки­ми сер­ве­ра­ми, кото­рые обслу­жи­ва­ют при­ло­же­ние. Round Robin пред­по­ла­га­ет, что IP адре­са будут выда­вать­ся по оче­ре­ди (сна­ча­ла пер­вый, потом — вто­рой и т.п.). Одна­ко, это нигде не стан­дар­ти­зи­ро­ва­но, поэто­му не сто­ит на это полагаться.

IP адре­са доме­нов кэши­ру­ют­ся в локаль­ных DNS'ах. При выхо­де из строя одно­го из сер­ве­ров, будет дли­тель­ная задерж­ка перед тем, как обно­вят­ся все кэши. Поэто­му схе­ма Round Robin долж­на исполь­зо­вать­ся сов­мест­но с меха­низ­ма­ми обес­пе­че­ния отказоустойчивости.

Уста­нав­ли­вай­те неболь­шой ttl для А запи­сей, что­бы иметь воз­мож­ность быст­ро их изме­нять. Опти­маль­ные зна­че­ния — несколь­ко минут.

Geo DNS

DNS сер­ве­ра так­же поз­во­ля­ют отда­вать раз­ные IP адре­са для кли­ен­тов на осно­ве их место­по­ло­же­ния. Это очень полез­но для сай­тов с высо­ким раз­бро­сом гео­гра­фии посетителей.

Допу­стим у Вас есть суще­ствен­ное коли­че­ство посе­ти­те­лей из США и Евро­пы, а сер­вер при­ло­же­ния нахо­дит­ся толь­ко в Евро­пе. Тогда будет полез­но сде­лать копию сер­ве­ра в США. При обра­ще­нии посе­ти­те­лей из США, отправ­лять их на сер­вер в США. Из Евро­пы — на сер­вер в Европе.

Эту воз­мож­ность исполь­зу­ют при постро­е­нии CDN.

Bind GeoDNS

Для попу­ляр­но­го сер­ве­ра BIND суще­ству­ет GeoDNS Patch. Он поз­во­ля­ет ука­зы­вать раз­лич­ные настрой­ки для зон на осно­ве гео­дан­ных. В каче­стве базы гео­дан­ных исполь­зу­ет­ся Max Mind:

[codesyntax lang="php"]

[/codesyntax]

# Раз­ные запи­си для одно­го доме­на с исполь­зо­ва­ни­ем GeoDNS.

Исполь­зуй­те DNS Round Robin для рас­пре­де­ле­ния нагруз­ки меж­ду несколь­ки­ми сер­ве­ра­ми. Уста­нав­ли­вай­те неболь­шой ttl, а так­же озна­комь­тесь с балан­си­ров­кой нагруз­ки на фронтенды.