...
Включить Forwarding трафика (sysctl):
Блок кода |
---|
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf # sysctl -p |
Выполнить настройку перенаправления трафика:
Блок кода |
---|
iptables -P FORWARD ACCEPT |
Установить пакет keepalived:
Блок кода |
---|
sudo apt update && sudo apt install keepalived |
Настроить канал между серверами и выделить отдельный адрес из подсети для VIP
Информация |
---|
VIP - виртуальный IP. Используется keepalived. К этому адресу должны будут подключаться ТД, и по данному IP всегда будет доступен Master/Active сервер. |
Установка Docker
Примечание |
---|
Для установки Docker необходимы права суперпользователя/root |
Войти под пользователем root следующей командой:
Блок кода |
---|
sudo su |
Установить Docker на сервер:
Блок кода |
---|
curl -sSl https://get.docker.com | sh |
Можно выполнить установку через apt-репозиторий. Далее, в качестве примера, приведена установка через apt-репозиторий для Ubuntu 22.04.
Раскрыть | ||||
---|---|---|---|---|
| ||||
2. Установить набор пакетов, который необходим для доступа к репозиторию docker:
|
...
3. Добавить GPG-key для работы с официальным репозиторием Docker:
|
...
4. Добавить официальный репозиторий Docker в локальный список (копировать эту команду необходимо полностью):
|
...
|
...
|
...
5. Обновить список и установить пакеты и запустить Docker:
|
Информация |
---|
При необходимости установки каким-либо другим способом, либо на другую ОС, на сайте https://docs.docker.com/engine/install/ есть подробные инструкции для установки. |
Настройка беспарольного доступа между серверами
Примечание |
---|
ВАЖНО! Это необходимо выполнить на двух машинах! |
Необходимо создать нового пользователя - one
Блок кода |
---|
adduser one |
2. Добавить пользователя one в суперпользователей:
Блок кода |
---|
sudo usermod -a -G sudo one |
3. Войти в систему под этим пользователем:
Блок кода |
---|
su one |
4. Сгенерировать ssh ключ:
Блок кода |
---|
ssh-keygen |
Информация |
---|
После ввода данной команды, следует указать место хранения ключей или нажать Enter для того, чтобы принять путь по умолчанию. Запрос о введении кодовой фразы можно пропустить (может помешать автоматизации некоторых процессов). Далее в выводе указывается место, где хранятся ID и открытый ключ. |
Рисунок 1 - Пример вывода команды ssh-keygen
5. Скопировать ssh-ключ на указанный сервер:
Блок кода |
---|
ssh-copy-id one@{IP} |
Информация |
---|
{IP} - IP сервера, куда будет скопирован ключ. После завершения, следует убедиться, что действительно получилось сделать беспарольный доступ между двумя серверами. Если при подключении запрос пароля не поступил, то всё работает правильно. |
Настройка /etc/hosts для работы БД
Необходимо настроить /etc/hosts таким образом, чтобы резолвились хосты для работы базы данных.
Примечание |
---|
ВАЖНО! Это необходимо выполнить на двух машинах! |
Войти в режим редактирования файла /etc/hosts:
Блок кода |
---|
sudo nano /etc/hosts |
Информация |
---|
CTRL + S - сохранить изменения в файле. CTRL + X - выйти из редактора. |
Выполнить настройки:
Блок кода |
---|
# Настройки для 1-й машины: 127.0.0.1 localhost mongo-rs-1 {IP-2} mongo-rs-2 {VIP} mongo-rs-3 # Настройки для 2-й машины: 127.0.0.1 localhost mongo-rs-2 {IP-1} mongo-rs-1 {VIP} mongo-rs-3 |
Информация |
---|
{IP-1/2} - адрес машины. {VIP} - виртуальный IP, используемый сервисом keepalived. |
Рисунок 2 - Пример настроенного файла /etc/hosts
Установка ПО Wimark One
Необходимо загрузить дистрибутив Wimark One на сервера, где планируется установка ПО.
Примечание |
---|
ВАЖНО! Это необходимо выполнить на двух машинах! |
Загрузить дистрибутив Wimark One на сервер (при наличии доступа в Интернет):
Блок кода |
---|
wget https://storage.wimark.com/api/public/dl/XZqjHaJe \
|
...
-O /tmp/WiMark-ha-1.11.0-2023-10-30-qtech-installer.run sudo chmod +x /tmp/WiMark-ha-1.11.0-2023-10-30-qtech-installer.run |
Для запуска установки необходимо выполнить:
Блок кода |
---|
# Команды для 1-й машины: sudo FIRST_IP={IP-1} SECOND_IP={IP-2} VIP={VIP} NEIGHBOR_IP={IP-2} bash /tmp/WiMark-ha-1.11.0-2023-10-30-qtech-installer.run # Команды для 2-й машины: sudo FIRST_IP={IP-1} SECOND_IP={IP-2} VIP={VIP} NEIGHBOR_IP={IP-1} bash /tmp/WiMark-ha-1.11.0-2023-10-30-qtech-installer.run |
Информация |
---|
/tmp/ - каталог в котором хранятся временные файлы. Файлы удаляются спустя определенное время и после перезагрузки сервера. {IP-1/2} - адрес машины. {VIP} - виртуальный IP используемый сервисом keepalived. https://storage.wimark.com/api/public/dl/XZqjHaJe - пример ссылки на прошивку. WiMark-ha-1.11.0-2023-10-30-qtech-installer.run - пример имени файла, может отличаться в зависимости от сборки и версии ПО. |
Во время установки будет предложено заполнить FQDN (рисунок 3).
Рисунок 3 - Запрос FQDN
Следует указать FQDN. Если FQDN использоваться не будет, то можно указать любое доменное имя, например: one.mydomain.com.
Информация |
---|
FQDN (Fully Qualified Domain Name) полное доменное имя определяющее узел в сети Интернет (имя домена, на которое будет реагировать веб-сервер). |
После установки основных компонентов будет предложено установить SMTP (рисунок 4).
Рисунок 4 - Запрос установки SMTP
Следует указать: y - для запуска установки, N - для отказа от установки.
Информация |
---|
Simple Mail Transfer Protocol (SMTP) - простой протокол передачи почты, применяемый для пересылки электронных писем с сервера отправителя на сервер получателя. |
Рисунок 5 - Пример заполнения установщика SMTP
Примечание |
---|
SMTP_HOST - имя хоста или IP-адрес SMTP-сервера, который будет отправлять сообщения. SMTP_PORT - номер порта для подключения к SMTP-серверу, по умолчанию 25. SMTP_USER - логин УЗ для SMTP. SMTP_PASS - пароль УЗ для SMTP. |
После завершения установки, необходимо создать скрипты для keepalived.
Настройка keepalived
Примечание |
---|
ВАЖНО! Это необходимо выполнить на двух машинах! |
Создать скрипт: /opt/wimark/checker.sh
Блок кода |
---|
sudo nano /opt/wimark/checker.sh |
Информация |
---|
CTRL + S - сохранить изменения в файле. CTRL + X - выйти из редактора. |
2. Вставить содержимое в файл:
Блок кода | ||
---|---|---|
| ||
#!/bin/bash
STATE="$(cat /opt/wimark/ha_state)"
LOG_STR="$(date) $STATE"
WORKDIR="/opt/wimark"
case $STATE in
"MASTER")
cd $WORKDIR/master
bash start.sh
LOG_STR="$LOG_STR: start master"
;;
"BACKUP")
cd $WORKDIR/backup
bash start.sh
LOG_STR="$LOG_STR: start backup"
;;
"FAULT")
LOG_STR="$LOG_STR: fault"
;;
*)
LOG_STR="$LOG_STR: unknown"
;;
esac
echo $LOG_STR >> /var/log/wimark-keepalived.log |
3. Создать скрипт: /opt/wimark/set_state.sh
Блок кода | ||
---|---|---|
| ||
sudo nano /opt/wimark/set_state.sh |
Информация |
---|
CTRL + S - сохранить изменения в файле. CTRL + X - выйти из редактора. |
4. Вставить содержимое в файл:
Блок кода | ||
---|---|---|
| ||
#!/bin/bash
TYPE=$1 NAME=$2 STATE=$3
LOG_STR="$(date) $STATE"
WORKDIR="/opt/wimark"
LOCK_FILE="ha_state"
case $STATE in
"MASTER")
echo "$STATE" > $WORKDIR/$LOCK_FILE
LOG_STR="$LOG_STR: start primary"
;;
"BACKUP")
echo "$STATE" > $WORKDIR/$LOCK_FILE
LOG_STR="$LOG_STR: start secondary"
;;
*)
echo "$STATE" > $WORKDIR/$LOCK_FILE
LOG_STR="$LOG_STR: nothing"
;;
esac |
5. Сделать эти скрипты исполняемыми:
Блок кода |
---|
sudo chmod +x /opt/wimark/checker.sh
sudo chmod +x /opt/wimark/set_state.sh |
keepalived.conf для MASTER (первая машина)
Блок кода |
---|
sudo nano /etc/keepalived/keepalived.conf |
Примечание |
---|
ВАЖНО! Переменные в данном файле необходимо заполнить самостоятельно. |
Информация |
---|
Необходимо изменить: {VIP} - виртуальный IP для keepalived |
Блок кода | ||
---|---|---|
| ||
global_defs {
script_user root
#enable_script_security
}
# Имя VRRP - WIM1
vrrp_instance WIM1 {
# Имя интерфейса на котором работает VRRP: eth0
# ПОМЕНЯТЬ ИМЯ ИНТЕРФЕЙСА НА ТОТ, КОТОРЫМ СОЕДЕНИНЫ МАШИНЫ!!!
interface {INTERFACE}
# Изначальное состояние текущей машины: MASTER или BACKUP
state MASTER
# уникального сегмента VRRP
# Если в вашей сети уже используется VRRP, то проверьте, чтобы ID был уникальным (должен совпадать с backup!)
virtual_router_id 120
# preempt - Всегда назначать MASTER ту машину, которая имеет более высокий приоритет (если возможно)
# nopreempt - Не изменять состояние после выхода из аварийного состояния
# nopreempt
garp_master_delay 1
priority 200
advert_int 1
# Метод аутентификации и пароль (пароль может содержать максимум 8 символов)
authentication {
auth_type PASS
auth_pass {PASSWORD}
}
# Виртуальный IP (VIP)
virtual_ipaddress {
# ПОМЕНЯТЬ IP И ИМЯ ИНТЕРФЕЙСА НА ТЕ, КОТОРЫЕ БЫЛИ УКАЗАННЫ КАК VIP ПРИ УСТАНОВКЕ!!!
{VIP}/24 dev {INTERFACE}
}
# Скрипт, который будет запускаться при изменении STATE - НЕ ТРОГАТЬ!
notify /opt/wimark/set_state.sh
} |
keepalived.conf для BACKUP (вторая машина)
...