Балансировка в marzban + marzban node

Всем добрейшего времени суток и всех с наступающими.
Столкнулся с проблемой (коротко сама суть):
Имеем сервер 1 в Нидерландах, сервер 2 в Германии (от разных облачных провайдеров), на обоих был поднят 3x-ui (Xray + Reality).
На гите увидел варнинг про 3x-ui, что-то про взятку от Ирана, а я человек беспокойный, поэтому решил не разбираться в вопросе и сразу рассмотреть альтернативу.
Выбор пал на marzban из-за наличия/возможности развернуть панель + отдельно ноды.
Забегая на перед: в голове сразу появилась идея по “автоматической” балансировке через haproxy, поскольку бывает, что кто-то из облачных провайдеров может “тупить”.
В общем, поднял панель (пускай будет panel.sub.domain), развернул marzban-node (пускай будет node-1.sub.domain), в самом marzban подключил node-1.sub.domain. Все ок.
Скажу больше, после создания пользователя в marzban я с этими же кредами могу постучаться напрямую в node-1.sub.domain и все будет работать.
Часа 2-3 я терроризировал конфиг haproxy и документацию самого marzban, выставлял acceptProxyProtocol в true (в конфиге подключения xray) - ничего не получилось.
Дальше я попробовал настроить балансировку через outbounds исключительно средствами xray:

Пример outbounds
"outbounds": [
    {
      "protocol": "vless",
      "tag": "Marzban-node-1",
      "settings": {
        "vnext": [
          {
            "address": "node-1.sub.domain",
            "port": 12000,
            "users": [
              {
                "encryption": "none",
                "id": "<user_id>",
                "flow": "",
                "security": "auto"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "tcpSettings": {},
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "docker.com:443",
          "xver": 0,
          "serverNames": [
            "docker.com",
            "www.docker.com"
          ],
		  "privateKey": "<private_key>",
          "shortIds": [
            "<shorts_id>"
          ]
        }
      }
    },
    {
      "protocol": "freedom",
      "tag": "DIRECT"
    },
    {
      "protocol": "blackhole",
      "tag": "BLOCK"
    },
   {
      "protocol": "vless",
      "tag": "LEAST_PING",
      "settings": {
        "vnext": [
          {
            "address": "node-1.sub.domain",
            "port": 12000,
            "users": [
              {
                "encryption": "none",
                "id": "<user_id>",
                "flow": "",
                "security": "reality"
              }
            ]
          }
        ]
      },
      "streamSettings": {
        "network": "tcp",
        "security": "reality",
        "realitySettings": {
          "show": false,
          "dest": "docker.com:443",
          "xver": 0,
          "serverNames": ["docker.com", "www.docker.com"],
		  "privateKey": "<private_key>",
          "shortIds": [
            "<shorts_id>"
          ]
        },
        "leastPing": true
      }
    }
  ]

Тоже ничего не вышло.

Отсюда вопросы:

  1. Реально ли организовать в xray/marzban автоматическую балансировку между нодами?
  2. Если реально, где найти тутор для “деревянных” в виде меня?

Знаю, что есть способ балансировки в GOST: Selector, Load Balancing.

Удалось все же сделать балансировку через haproxy (на нем же и health check).

1 Like

Здравствуйте. Если Вас не затруднит, скиньте туториал. Или конф, для таких деревянных, как я)))