FastNetMon

Wednesday, 13 October 2010

Балансировка сервисов посредством Bind / named.

Уверен, многим известно, что доменная запись может резолвится в несколько IP адресов. Так, например, сделано у Google и Yandex:

nslookup google.com
Server: 192.168.155.1
Address: 192.168.155.1#53

Non-authoritative answer:
Name: google.com
Address: 74.125.232.19
Name: google.com
Address: 74.125.232.16
Name: google.com
Address: 74.125.232.17
Name: google.com
Address: 74.125.232.20
Name: google.com
Address: 74.125.232.18

nslookup ya.ru
Server: 192.168.155.1
Address: 192.168.155.1#53

Non-authoritative answer:
Name: ya.ru
Address: 213.180.204.3
Name: ya.ru
Address: 77.88.21.3
Name: ya.ru
Address: 87.250.250.3
Name: ya.ru
Address: 87.250.251.3
Name: ya.ru
Address: 93.158.134.3

Для чего это делается? Крайне просто - для балансировки нагрузки по множеству машин и для повышенной отказоустойчивости (если какой-то из серверов упадет, часть клиентов будет уходить на другие машины, а когда IP отказавшей машины будет изъят из DNS, то через некоторое время на отказавший сервер клиенты идти перестанут совсем).

Как же реализовать такой механизм, имея в арсенале лишь обычный DNS сервис Bind? Крайне просто - достаточно добавить две идентичных ресурсных А записи, указывающих на разные IP адреса:
testzone IN A 82.11.22.33
testzone IN A 77.11.22.33

И перезапустить Bind. После этого IP адреса начнут выдаваться в циклическом порядке (то есть, сначала первым в выдаче nslookup будет первый IP, потом второй, при следующем запросе они поменяются местами, потом еще раз и т.д. и т.п.). Если же Вам интересен более сложный порядок выдачи адресов, то рекомендую вот эту статью.

Выглядеть это будет так:
nslookup testzone.domain.ru ns1.domain.ru
Server: ns1.domain.ru
Address: 78.xx.xx.xx#53

Name: testzone.domain.ru
Address: 82.11.22.33
Name: testzone.domain.ru
Address: 77.11.22.33


nslookup testzone.domain.ru ns1.domain.ru
Server: ns1.domain.ru
Address: 78.xx.xx.xx#53

Name: testzone.domain.ru
Address: 77.11.22.33
Name: testzone.domain.ru
Address: 82.11.22.33

nslookup testzone.domain.ru ns1.domain.ru
Server: ns1.domain.ru
Address: 78.xx.xx.xx#53

Name: testzone.domain.ru
Address: 82.11.22.33
Name: testzone.domain.ru
Address: 77.11.22.33

Ну вот и все :)

Источник: http://www.zytrax.com/books/dns/ch9/rr.html#services

No comments :

Post a Comment

Note: only a member of this blog may post a comment.