Балансировка и Ротация Трафика
Обновление Xray
Скачать последнюю версию:
- Перейдите по ссылке на последнюю версию Xray и скачайте соответствующий файл для вашей архитектуры (например,
Xray-linux-mips32le.zipилиXray-linux-arm64-v8a.zip)
Чтобы узнать архитектуру процессора роутера, выполните команду xkeen -restart:
Распаковать архив:
- Извлеките содержимое архива на вашем устройстве.
Резервное копирование старого бинарника:
- Переименуйте старый бинарник в
/sbinEntware вxray.bakдля возможности восстановления предыдущей версии при необходимости.
Остановить xkeen:
- Выполните команду
xkeen -stop, чтобы остановить текущий экземпляр.
Заменить бинарник:
- Скопируйте новый бинарник из распакованной папки (Xray-linux-arm64-v8a/xray) в директорию
/sbinEntware.
Запустить xkeen:
- Выполните команду
xkeen -start, чтобы запустить обновленный Xray.
Настройка балансировки трафика
Подготовка нескольких рабочих outbounds:
- Убедитесь, что у вас есть несколько настроенных outbounds на разных серверах.
Добавление новых outbounds:
- Если нужно добавить новый outbound, сделайте это по аналогии с предыдущими конфигурациями. Каждый outbound должен иметь уникальный tag.
Пример конфигурации для 04_outbounds.json:
{
"outbounds": [
{
"protocol": "vless",
"tag": "de-1"
},
{
"protocol": "vless",
"tag": "de-2"
},
{
"protocol": "vless",
"tag": "gb-1"
},
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block",
"settings": {
"response": {
"type": "http"
}
}
}
]
}
Добавление балансировщиков в 05_routing.json:
- В конфигурационный файл 05_routing.json добавьте секцию balancers, в которой укажите все outbounds, которые вы хотите использовать для балансировки.
Стратегии Распределения Нагрузки:
- leastPing:
- Описание: Выбирает сервер с наименьшим временем отклика (ping). Это позволяет снизить задержки при подключении к серверу.
- Когда использовать: Когда важно минимизировать задержки и обеспечить быструю реакцию сервера.
2. leastLoad:
- Описание: Выбирает сервер с наименьшей текущей загрузкой. Это помогает распределить нагрузку равномерно, избегая перегрузки отдельных серверов.
- Когда использовать: Когда нужно сбалансировать нагрузку и предотвратить ситуацию, когда один сервер становится перегруженным.
3. random:
- Описание: Случайным образом выбирает один из доступных серверов. Нет предпочтения по задержкам или нагрузке.
- Когда использовать: Когда нет критических требований к задержкам или загрузке, и требуется простое распределение запросов.
4. roundRobin:
- Описание: Последовательно перебирает серверы по кругу. Каждый запрос обрабатывается сервером по очереди, начиная с первого и переходя к следующему.
- Когда использовать: Когда требуется равномерное распределение нагрузки среди всех серверов, независимо от их состояния.
Эти стратегии помогают оптимизировать работу прокси и балансировщиков в зависимости от конкретных потребностей и условий.
Пример настройки для стратегий leastPing, leastLoad, random, и roundRobin:
{
"balancers": [
{
"tag": "leastPingBalancer",
"fallbackTag": "de-1",
"strategy": {
"type": "leastPing"
},
"selector": [
"gb-1",
"de-1",
"de-2"
]
},
{
"tag": "leastLoadBalancer",
"fallbackTag": "de-1",
"strategy": {
"type": "leastLoad"
},
"selector": [
"gb-1",
"de-1",
"de-2"
]
},
{
"tag": "randomBalancer",
"fallbackTag": "de-1",
"strategy": {
"type": "random"
},
"selector": [
"gb-1",
"de-1",
"de-2"
]
},
{
"tag": "roundRobinBalancer",
"fallbackTag": "de-1",
"strategy": {
"type": "roundRobin"
},
"selector": [
"gb-1",
"de-1",
"de-2"
]
}
]
}
Настройка leastPing с использованием observatory:
Создайте файл 06_observatory.json с содержимым:
{
"observatory": {
"subjectSelector": [
"gb-1",
"de-1",
"de-2"
],
"probeURL": "URL для измерения стабильности",
"interval": 300,
"tolerance": 2
}
}
Параметры:
- subjectSelector: список тегов outbound, которые нужно отслеживать.
- probeURL: URL для измерения пинга.
- interval: интервал проверки в секундах.
- tolerance: допустимое количество ошибок перед отключением сервера.
Настройка leastLoad с использованием burstObservatory:
Создайте файл 07_burstObservatory.json с содержимым:
{
"burstObservatory": {
"subjectSelector": [
"gb-1",
"de-1",
"de-2"
],
"probeURL": "URL для измерения стабильности",
"interval": 300,
"tolerance": 2,
"maxConcurrency": 10,
"minRTT": 100
}
}
Параметры:
- subjectSelector: список отслеживаемых outbound.
- probeURL: URL для измерения стабильности.
- interval: интервал проверки.
- tolerance: допустимое количество ошибок.
- maxConcurrency: максимальное количество одновременных запросов.
- minRTT: минимальное время отклика (Round-Trip Time), считаемое нормальным.
Примеры конфигурации правил
Добавление правил маршрутизации в 05_routing.json:
{
"rules": [
{
"inboundTag": ["dokodemo-in"],
"domain": [
"ext:geosite_antifilter.dat:antifilter-community",
"ext:geosite_v2fly.dat:google",
"ext:geosite_v2fly.dat:openai",
"ext:geosite_v2fly.dat:github",
"ext:geosite_v2fly.dat:paypal",
"ext:geosite_v2fly.dat:facebook",
"ext:geosite_v2fly.dat:discord",
"ext:geosite_v2fly.dat:instagram",
"ext:geosite_v2fly.dat:netflix",
"ext:geosite_v2fly.dat:spotify",
"ext:geosite_v2fly.dat:x"
],
"balancerTag": "leastPingBalancer", // Замените на нужный тег балancer
"type": "field"
},
{
"inboundTag": ["dokodemo-in"],
"domain": [
"ext:geosite_v2fly.dat:news",
"ext:geosite_v2fly.dat:social-media"
],
"balancerTag": "leastLoadBalancer", // Замените на нужный тег балancer
"type": "field"
},
{
"inboundTag": ["dokodemo-in"],
"outboundTag": "direct",
"type": "field"
}
]
}
Перезапуск Xray
- После всех изменений, перезапустите Xray с помощью команды
xkeen -restart.