diff --git a/README.md b/README.md index 29576cf..47860bd 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,65 @@ # mtproto-docker-haproxy -mtproto-docker-haproxy +# Гайд как сбалансировать нагрузку на mtproto (гайд c faketls и без него) +## 0. Если нету докера ставим скприптом на все ноды +```bash +curl -fsSL https://get.docker.com -o get-docker.sh && sh get-docker.sh +``` +## 1. Поднимаем в докере mtproto +### 1.1 Генерация единого секрета, по которому будут подключатся клиенты + +```bash +head -c 16 /dev/urandom | xxd -ps +``` +### 1.2 Запуск MTProto ноды (без faketls) +```bash +docker run -d --name mtproto-proxy --restart always \ + -p 443:443 -p 8888:8888 \ + -e SECRET=ТВОЙ_СЕКРЕТ_ИЗ_ШАГА_1.1 \ + -e AES_PWD=$(openssl rand -hex 16) \ + telegrammessenger/proxy:latest +``` +P.S: `-p 443:443` порт, на который будет стучатся балансировщик. -p 8888:8888: Внутренний порт статистики (опционально). + +--- +## 2. Установка и настройка HAProxy. +### 2.1 Установка +```bash +sudo apt update && sudo apt install haproxy -y +``` +### 2.2 Настройка конфига c rounrobin +* В конец файла `/etc/haproxy/haproxy.cfg ` добавляем то что написано снизу, конечно же меняя ip нод на свои + +то что нужно добавить в конец файла `/etc/haproxy/haproxy.cfg`: +```haproxy +frontend mtproto_in + bind *:443 + mode tcp + option tcplog + default_backend mtproto_nodes + +backend mtproto_nodes + mode tcp + balance roundrobin + # Проверка доступности порта (check) + server node1 1.1.1.1:443 check + server node2 2.2.2.2:443 check + server node3 3.3.3.3:443 check + +``` +### 2.3 Если работает не очень стабильно, то можно использовать с leastconn. +сам файл будет выглядеть так: +```haproxy +frontend mtproto_in + bind *:443 + mode tcp + option tcplog + default_backend mtproto_nodes + +backend mtproto_nodes + mode tcp + balance leastconn + option tcp-check + server node_local 1.1.1.1:443 check inter 2s rise 2 fall 3 + server node2 2.2.2.2:443 check inter 2s rise 2 fall 3 + server node3 3.3.3.3:443 check inter 2s rise 2 fall 3 +```