Hideez Enterprise Solution (UA)
Інформація о Hideez Authentication Service
В деяких випадках, необхідно забезпечити відмовостійкість серверу HES Взагалі, можна розділити відмовостійкість серверу бази даних (MySQL) та відмовостійкість самого HES.
Що стосується відмовостійкості баз даних, то цей процес детально розписаний у відповідній документації, наприклад - тут.
Тут будемо вести мову тільки про HES, і далі йде невелика інструкція як це зробити.
Розглянемо приклад, коли маємо окремий сервер MySQL, три окремих сервера HES, та проксі Nginx, через який кінцевий клієнт має доступ до групи серверів HES. Розподіл навантаження, у даному випадку буде полягати в тому, що nginx буде намагатися рівномірно розподіляти запити до трьох серверів HES, а відмовостійкість у тому, що при "падінні" якогось із серверів, користувачі будуть продовжуваити користуватись сервером HES.
В такому разі, в доповнення до нашої інструкцій до встановлення, потрібно зробити наступне:
  • в налаштуваннях серверу MySQL потрібно дозволити віддалене підключення користувачів. За замовчуванням, доступ до бази мають тільки локальні користувачі, тому у файлі налаштувать MySQL /etc/mysql/mysql.conf.d/mysqld.cnf треба внести зміни - замість
1
bind-address = 127.0.0.1
Copied!
потрібно зробити
1
bind-address = 0.0.0.0
Copied!
(можна просто додати цей рядок до секції [mysqld], якщо його там немає).
Після перезавантаження серверу MySQL ви зможете мати до нього доступ з віддалених серверів HES.
  • при створенні користувача MySQL замість команди
1
CREATE USER 'user'@'127.0.0.1' IDENTIFIED BY '<user_password>';
Copied!
слід використовувати
1
CREATE USER 'user'@'%' IDENTIFIED BY '<user_password>';
Copied!
це дасть змогу користувачу user’ підключитись до бази з будь-якого комп'ютера.
  • При редагуванні файлу /opt/HES/appsettings.Production.json слід зробити наступне:
1) у рядку
1
"ConnectionStrings":
2
{
3
"DefaultConnection":
4
"server=127.0.0.1;
5
port=3306;
6
database=db;
7
uid=user;
8
pwd=<user_password>"
9
},
Copied!
127.0.0.1 потрібно змінити на ip Вашого серверу MySQL
appsettings.Production.json має бути однаковим, на всіх серверах!
Однак, якщо ви хочете візуально “бачити” який сервер зараз обробляє Ваші дані, то допускається невеликі відмінності в параметрах ServerFullName та ServerShortName.
1
"ServerFullName": "Hideez Enterprise Server",
2
"ServerShortName": "HES",
Copied!
2) за замовчуванням сервер HES отримує запити тільки з localhost, але оскільки проксі з nginx у нас може бути розміщений за іншою адресою, то потрібно дозволити доступ з інших адрес. Зробити це можна, додавши в /opt/HES/appsettings.Production.json наступні рядки, after "AllowedHosts": "*" add the following (via comma):
1
,
2
"Kestrel": {
3
"Endpoints": {
4
"Http": {
5
"Url": "http://0.0.0.0:5000"
6
}
7
}
8
}
Copied!
  • в файлі nginx.conf на сервері nginx, потрібно закоментувати рядок
1
server localhost:5000;
Copied!
та розкоментувати рядки
1
#ip_hash;
2
#server <ip or name of hes1 server>:5000 weight=3;
3
#server <ip or name of hes2 server>:5000;
4
#server <ip or name of hes1 server>:5000;
Copied!
та ввівши відповідні ip-адреси своїх трьох серверів HES.
Звичайно необхідно також налаштувати правила файрволів. Зважайте на те, що MySQL зазвичай використовує TCP порт 3306 а HES порт TCP 5000.
Copy link