Реализация выравнивания нагрузки на любом дистрибутиве Linux

Я думаю, что Вы ищете, уже обеспечивается командой blkid:

/dev/sda1: LABEL="SYSTEM_DRV" UUID="10BE12331238FD148" TYPE="ntfs" 
/dev/sda2: LABEL="Windows7_OS" UUID="5CF2E12AD3438B42" TYPE="ntfs" 
/dev/sda3: LABEL="Lenovo_Recovery" UUID="C43211B2399007C54" TYPE="ntfs" 
/dev/sda5: UUID="4835b90f-4845-1234-8dcd-fbcf332338f8" TYPE="ext4" 
/dev/sda6: UUID="av6WTb-CU69-4Ump-10dD-sudd-fTtC-Gf12AL" TYPE="LVM2_member" 
/dev/mapper/vg_grinchy-lv_root: UUID="75e0a75d-45d3-463c-bd87-9f7e123fd456" TYPE="ext4"

При попытке получить тот определенный список информации, можно получить его использование blkid -o list и некоторые awk команды как так:

$ blkid -o list|tail -n +3|awk '{print "\""$3"\"", $1}'|sed 's/(not//'|column -t
"SYSTEM_DRV"       /dev/sda1
"Windows7_OS"      /dev/sda2
"Lenovo_Recovery"  /dev/sda3
"/boot"            /dev/sda5
""                 /dev/sda6
"/"                /dev/mapper/vg_grinchy-lv_root
""           /dev/mapper/vg_grinchy-lv_swap
"/home"            /dev/mapper/vg_grinchy-lv_home

Посмотрите blkid страница справочника для получения дополнительной информации.

4
25.06.2014, 02:40
3 ответа

Все, что вам нужно для балансировки исходящих соединений, - это стандартный iptables и некоторые политики маршрутизации. Это немного сложно с 4 подключениями, так как вам нужно будет перенастроить и перебалансировать ссылки по мере того, как подключения приходят и уходят.

Необработанная настройка iptables :

  • Создание таблицы маршрутизации для каждого соединения

     ip rule add fwmark 10 table PHONE0 prio 33000
    ip rule add fwmark 11 table PHONE1 prio 33000
    ip rule add fwmark 12 table PHONE2 prio 33000
    ip rule add fwmark 13 table PHONE3 prio 33000
     
  • Добавьте шлюз по умолчанию для каждого подключения в каждую таблицу (IP-адрес шлюза будет отличаться в зависимости от поставщика / настройки каждого телефона)

     IP route добавить по умолчанию через 192.168.1.2 таблицу PHONE0
    ip route добавить по умолчанию через 192.168.9.1 таблицу PHONE1
    ip route добавить по умолчанию через 192.168.13.2 таблицу PHONE2
    ip route добавить по умолчанию через 192.168.7.9 таблицу PHONE3
     
  • Произвольно отметьте все немаркированные потоки, которые будут маршрутизировать поток через определенное соединение. ВЫХОД используется для локальных процессов. Используйте PREROUTING , если вы перенаправляете трафик для других клиентов)

     iptables -t mangle -A OUTPUT -j CONNMARK --restore-mark
    iptables -t mangle -A OUTPUT -m mark!  - отметка 0 -j ПРИНЯТЬ
    iptables -t mangle -A OUTPUT -j MARK --set-mark 10
    iptables -t mangle -A OUTPUT -m statistic --mode random --probability 0,25 -j MARK --set-mark 11
    iptables -t mangle -A OUTPUT -m statistic --mode random --probability 0.25 -j MARK --set-mark 12
    iptables -t mangle -A OUTPUT -m statistic --mode random --probability 0,25 -j MARK --set-mark 13
    iptables -t mangle -A OUTPUT -j CONNMARK --save-mark
     
  • NAT для каждого соединения (интерфейс должен быть тем, что ваше телефонное соединение отображается в системе как)

     iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
    iptables -t nat -A РАЗМЕЩЕНИЕ -o ppp1 -j МАСКЕРАД
    iptables -t nat -A РАЗМЕЩЕНИЕ -o ppp2 -j МАСКАРД
    iptables -t nat -A РАЗМЕЩЕНИЕ -o ppp3 -j МАСКЕРАД
     

Обратите внимание, что одно соединение TCP или UDP не будет ускоряться, так как оно все равно будет проходить по одному каналу. Вы должны использовать несколько одновременных подключений (как минимум 4), чтобы использовать дополнительную пропускную способность. Большинство браузеров делают это скрытно при запросе нескольких объектов. Некоторые менеджеры загрузок позволяют использовать несколько подключений для одного файла.

Как предлагает garethTheRed, ispunity добавляет некоторый «клей» поверх этой настройки iptables , чтобы прокручивать список соединений, проверять, отвечает ли шлюз, повторно балансировать если что-то не так и т. д. Управление «липким сеансом» выглядит как дополнительная настройка для каждого порта поверх его базовой «циклической» балансировки нагрузки соединений. Другое решение - Net-ISP-Balance , сценарий и библиотека Perl, которые автоматизируют iptables и конфигурацию таблицы маршрутизации, отслеживают статус ISP, предупреждают вас о проблемах и перенастраивают маршрутизацию в случае, если один или несколько ISP становятся невозможно.

Также обратите внимание, что запросы, поступающие с нескольких IP-адресов, могут нарушить работу некоторых служб, основанных на согласованном поиске IP-адресов, и вам может потребоваться добавить дополнительные правила для этих служб, чтобы привязать их к соединению. Вы не увидите ускорения при отдельных подключениях, только когда вы выполняете 4 действия одновременно, что большинство браузеров все равно попытаются сделать.

ipvs больше предназначен для создания адресов виртуальных сервисов для вещей, которые вы размещаете, чтобы сервис мог переключаться между несколькими хостами.

2
27.01.2020, 20:56

Возможно - ispunity - это проект, который балансирует нагрузку на ваше интернет-подключение. Написано на Руби. они запустили его на Raspberry Pi, так что он должен работать на любом разумном дистрибутиве.

Единственное различие между их и вашим сценарием заключается в том, что они использовали Ethernet, в то время как вы предлагаете использовать 3G. Я полагаю, что большая часть вашего успеха (или неудачи) зависит от того, как ваши 4 мобильных телефона представляют свой Интернет на USB.

Так как Rasberry Pi обычно запускает вариант Debian, то, возможно, начните с него или с Ubuntu.

.
2
27.01.2020, 20:56

диспетчер-прокси
Используя диспетчер-прокси можно объединить множество сетей Wi-Fi/Ethernet/3G/4G и иметь к ним доступ как к одному большому, высокоскоростному, сбалансированному по нагрузке соединению. Обратите внимание, что для использования более высокой скорости соединения, пользователь должен использовать потоковый менеджер загрузки, который откроет несколько соединений к диспетчеру-прокси и будет эффективно извлекать их, используя несколько интерфейсов, что приведет к комбинированной, более быстрой скорости загрузки.
инструкция по установке для mac, также работает для linux.

Единство провайдера
ISPUnity - это рубин с открытым исходным кодом/программа, основанная на нескольких интернет-балансерах балансировки нагрузки и обхода отказа.

Для мобильного Интернета я рекомендую диспетчер-прокси, так как вы не настраиваете никаких параметров, как в единстве провайдера. этот ссылочный комментарий о исправленном ядре linux для встроенной балансировки нагрузки вы можете посмотреть.

.
0
27.01.2020, 20:56

Теги

Похожие вопросы