Балансування навантаження за допомогою Round Robin DNS в Ubuntu 22.04

Round Robin DNS — це технологія, яка дозволяє розподілити навантаження між кількома серверами, використовуючи DNS-запис. Коли клієнт запитує IP-адресу у DNS-сервера, він повертає список IP-адрес, які обслуговують дану запис. Якщо DNS-сервер повертає декілька IP-адрес, клієнт обирає одну з них і встановлює з’єднання. Цей метод працює, поки всі сервери доступні. Але якщо один із серверів виходить з ладу, клієнти продовжуватимуть запитувати його IP-адресу, що може призвести до збоїв у роботі додатка. Щоб уникнути цього, необхідно використовувати відмовостійкий Round Robin DNS на базі PowerDNS.

Вступ

Round Robin DNS — це один із елементів, який допомагає створити відмовостійкий кластер, забезпечуючи балансування навантаження та високу доступність веб-серверів. Коли ви створюєте кластер, ви використовуєте кілька серверів для обробки запитів та розподілу навантаження між ними, щоб запобігти простоям і забезпечити безперервність роботи додатків. У цій статті ми розглянемо, як встановити Round Robin DNS на базі PowerDNS в Ubuntu, щоб створити відмовостійку систему DNS для вашого кластера і забезпечити балансування навантаження між серверами. Якщо ви зацікавлені у створенні відмовостійкого кластера, то дана стаття буде корисною для вас.

PowerDNS (оф. сайт https://www.powerdns.com/) — це сучасний DNS-сервер, який забезпечує високу продуктивність і масштабованість. Він має модульну архітектуру, що дозволяє легко розширювати його функціональність. PowerDNS підтримує різні бекенди, включаючи MySQL, PostgreSQL, LDAP, BIND, CSV та інші.

Встановлення та налаштування Round Robin DNS на базі PowerDNS

Крок 1. Встановлення PowerDNS

Першим кроком є встановлення PowerDNS на сервери, які будуть використовуватися в якості DNS-серверів. Для цього в Ubuntu виконайте наступну команду:

sudo apt-get install pdns-server pdns-backend-mysql

Ця команда встановить PowerDNS сервер і його бекенд MySQL.

Крок 2. Створення бази даних для PowerDNS

Для зберігання DNS-записів PowerDNS використовує базу даних MySQL. Для створення бази даних виконайте наступні команди:

sudo mysql -u root -p

Введіть пароль користувача root і виконайте наступні команди:

CREATE DATABASE powerdns;
GRANT ALL ON powerdns.* TO 'pdns'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

У цих командах створюється база даних powerdns, створюється новий користувач pdns з паролем password і надаються йому всі привілеї для роботи з базою даних.

Крок 3. Налаштування PowerDNS

Після встановлення PowerDNS і створення бази даних необхідно налаштувати його для роботи в якості DNS-сервера. Для цього відредагуйте файл конфігурації /etc/powerdns/pdns.conf і внесіть наступні зміни:

launch=gmysql
gmysql-host=localhost
gmysql-user=pdns
gmysql-password=password
gmysql-dbname=powerdns

У цьому блоці конфігурації вказується, що PowerDNS буде використовувати MySQL як бекенд, і визначаються параметри підключення до бази даних, яку ми створили на попередньому кроці.

Далі, відредагуйте файл /etc/powerdns/pdns.d/pdns.local і внесіть наступні зміни:

setgid=pdns
setuid=pdns

Крок 4. Створення DNS-записів

Після налаштування PowerDNS необхідно створити DNS-записи для кожного сервера, який буде використовуватися в якості DNS-сервера. Для цього виконайте наступні команди:

sudo mysql -u root -p

Введіть пароль користувача root і виконайте наступні команди:

USE powerdns;
INSERT INTO domains (name) VALUES ('example.com');
INSERT INTO records (domain_id, name, type, content, ttl) VALUES ((SELECT id FROM domains WHERE name = 'example.com'), 'www', 'A', '192.168.0.1', 3600);
INSERT INTO records (domain_id, name, type, content, ttl) VALUES ((SELECT id FROM domains WHERE name = 'example.com'), 'www', 'A', '192.168.0.2', 3600);

У цьому блоці команд створюється нова зона з іменем example.com і додаються два DNS-записи типу A для серверів www.example.com з IP-адресами 192.168.0.1 та 192.168.0.2 відповідно.

Крок 5. Налаштування Round Robin DNS

Для налаштування Round Robin DNS необхідно додати декілька DNS-записів типу A для кожного сервера, використовуючи одне й те саме ім’я. У нашому прикладі ми додали два DNS-записи для серверів www.example.com з різними IP-адресами.

Коли клієнт запитує IP-адресу для www.example.com, DNS-сервер повертає список IP-адрес у випадковому порядку. Клієнт обирає одну з них і встановлює з’єднання. Якщо один із серверів виходить з ладу, клієнти продовжуватимуть запитувати його IP-адресу, але тепер він не буде включений до списку IP-адрес, що повертаються DNS-сервером, поки знову не стане доступним.

Крок 6. Тестування Round Robin DNS

Для перевірки роботи Round Robin DNS виконайте наступну команду:

dig www.example.com

Ця команда запитає IP-адресу для www.example.com у DNS-сервера і виведе список IP-адрес, що повертаються сервером. Якщо все працює правильно, ви повинні побачити два IP-адреси, що відповідають двом серверам, які ми додали в DNS-записи.

Ви можете повторити цю команду кілька разів, і ви помітите, що порядок IP-адрес змінюється щоразу. Це означає, що Round Robin DNS працює правильно, і кожного разу, коли клієнт запитує IP-адресу для www.example.com, він отримує список IP-адрес у випадковому порядку.

Якщо один із серверів виходить з ладу, наприклад, якщо його відключили від мережі, клієнти продовжуватимуть запитувати його IP-адресу, але він не буде включений до списку IP-адрес, що повертаються DNS-сервером, поки знову не стане доступним. Коли сервер знову стає доступним, він автоматично включається до списку IP-адрес, що повертаються DNS-сервером.

Вам також буде корисно ознайомитися з написанням Telegram бота на Python для моніторингу стану Ubuntu сервера.

Висновок

Round Robin DNS — це простий і ефективний спосіб створення відмовостійкої системи DNS. За допомогою PowerDNS та Ubuntu ви можете легко створити і налаштувати систему Round Robin DNS, яка забезпечить високу доступність і відмовостійкість для ваших додатків.

Сподіваюсь, що дане керівництво допомогло вам встановити Round Robin DNS на базі PowerDNS в Ubuntu. Якщо у вас виникнуть питання або проблеми, не соромтеся звернутися до документації PowerDNS або до спільноти користувачів PowerDNS для отримання додаткової допомоги. Створення відмовостійкої системи DNS допоможе вам захистити свої додатки від простоїв і забезпечить безперервність їх роботи.

Оцініть статтю