Несколько серверов выравнивания нагрузки, слушающих на единственном IP/порте?

Вы, вероятно, не должны волноваться о входящей электронной почте SMTP, которая должна добраться до Вашего почтового сервера, потому что, если у Вас есть опытный ISP, они могут действие как Ваш резервный диспетчер почты (MX) для буферизации входящей электронной почты SMTP для Вас, в то время как Ваше интернет-соединение снижается. Если Ваш ISP не так опытен, можно использовать сервис как MXSave.com как @taspeotis указанный. Когда Ваше соединение вернется, Ваш резервный MX в Вашем ISP или в сервисе как MXSave установит связь SMTP с Вашим Сервером Snow Leopard и не буферизует всю почту, что это стояло в очереди.

Кроме того, не волнуйтесь об удаленной пользовательской способности послать электронное письмо, в то время как Ваше интернет-соединение снижается. Они могут использовать реле SMTP своего собственного домашнего ISP для этого.

Единственное реальное беспокойство было бы то, что Ваши удаленные пользователи будут не мочь прочитать свои новые сообщения через POP или IMAP, в то время как Ваше интернет-соединение снижается.

1
задан 21 February 2012 в 21:06
2 ответа

Я делал это каждый раз для клиентов, и я не нашел развитой системы, чтобы сделать это, поэтому я когда-либо катал свой Собственные, шаги, которые дал вам Manwe, примерно соответствуют тому, что я делаю, когда они мне нужны, но я вставлю сюда любые грубые сценарии bash, которые я использую (когда у меня будет время, я хочу сделать это намного лучше на python).

В основном я проверяю, есть ли у меня Интернет или нет, и использую ли я резервную копию WAN, и вношу необходимые изменения

#!/bin/bash
PATH="/bin:/sbin:/usr/bin:/usr/sbin"
primary_gw="192.168.1.1" #for example.
check_one="8.8.8.8"
check_two="8.8.4.4"

#first we check internet connection.
if `ping -c 1 -W 1 $check_one |grep -E '(unreachable|100\%\ packet\ loss)' &> /dev/null` &&\
   `ping -c 1 -W 1 $check_two |grep -E '(unreachable|100\%\ packet\ loss)' &>/dev/null`
  then #if we don't have internet
    if [ -e /tmp/wan_backup ]
      #if we are using backup right now we try to change to primary connection
      then ./script_change_to_primary.sh && rm /tmp/wan_backup
      #else we change to wan backup.
      else ./script_change_to_backup.sh && touch /tmp/wan_backup
    fi
fi

#if we are using wan backup right now we check if primary connection works.
if [ -e /tmp/wan_backup ]
  then
    if `ip route add $check_one via $primary_gw; ip route add $check_two via $primary_gw;\
        sleep 2; ping -c 1 -W 1 $check_one | grep -E '(unreachable|100\%\ packet\ loss)' &> /dev/null &&\
        ping -c 1 -W 1 $check_two | grep -E '(unreachable|100\%\ packet\ loss)' &> /dev/null`
      then #don't works we clean the routes and stay using backup
        ip route del $check_one via $primary_gw
        ip route del $check_two via $primary_gw
      else #it works so we change active connection 
        ip route del $check_one via $primary_gw
        ip route del $check_two via $primary_gw
        ./script_change_to_primary.sh
        rm /tmp/wan_backup
    fi
fi

Учитывая, что вы хотите, чтобы ваш сервер использовал 3G, только если ADSL выходит из строя, я бы использовал только iptables snat или masquerade только в adsl iface, и я бы заблокировал доступ к squid в ./script_change_to_secondary.sh, ваши файлы могут быть:

script_change_to_secondary.sh

#!/bin/bash
pon 3gIsp #this one it is going to change the default route of server anyway
#drop squid connections, you could disable here the boot snat or masquerade for adsl
#but given your adsl is not active i don't see the need anyway
iptables -I INPUT -s LAN_IP_RANGE -d SERVER_IP -p tcp --dport 3128 -j DROP

script_change_to_primary.sh

#!/bin/bash
poff 3gIsp
iptables -D INPUT -s LAN_IP_RANGE -d SERVER_IP -p tcp --dport 3128 -j DROP
/etc/init.d/openvpn restart

Вы также должны иметь в / etc / ppp / ip -up.d / сценарий bash с "/etc/init.d/openvpn restart", таким образом каждый раз, когда вы подключаетесь к провайдеру ppp, ваш openvpn перезапускается автоматически.

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

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

Если вы предпочитаете интегрированное решение для самостоятельной работы, вы можете использовать такой дистрибутив, как zentyal , он поддерживает то, что вы хотите использовать, но это полный дистрибутив, предназначенный для создания сервера SmallBusiness, Обычно я предпочитаю настраивать свои серверы самостоятельно, но это хороший дистрибутив, которым можно управлять через Интернет.

Если вы предпочитаете интегрированное решение для самостоятельной работы, вы можете использовать такой дистрибутив, как zentyal , он поддерживает то, что вы хотите использовать, но это полный дистрибутив, предназначенный для создания сервера SmallBusiness, Обычно я предпочитаю настраивать свои серверы самостоятельно, но это хороший дистрибутив, которым можно управлять через Интернет.

оба из них предлагают виртуальный IP-адрес, совместно используемый несколькими серверами. Синхронизацию ваших конфигураций можно выполнить с помощью DFS-R для балансировки сетевой нагрузки, или же кластеризация фактически имеет возможность совместно использовать куст реестра и перенастроить его в случае аварийного переключения.

5
ответ дан 3 December 2019 в 16:50

Я, вероятно, через несколько дней протестирую следующее в качестве балансировщика нагрузки высокой доступности для некоторых «реальных» веб-серверов:

  • два сервера Archlinux (очень «базовая» установка)
  • каждый из них работает Pound как обратный прокси, а балансировщик нагрузки
  • Keepalived заботится о переключении IP при отказе

Я буду запускать активную / пассивную конфигурацию, т.е. каждый IP (у меня около 20) является активен только на одном из этих серверов. Если один из этих серверов выходит из строя, другой обрабатывает все IP-адреса. Pound может определить, выходит ли из строя один из веб-серверов, и ведет себя соответствующим образом: Pound не перенаправляет запросы к нему, пока он снова не станет здоровым.

Не уверен, можно ли применить подобное решение к вашим серверам приложений, но я полностью цитирую Марка Хендерсон

Хотя концепция во многом такая же, «аппаратные» балансировщики нагрузки обычно просто использовать частные реализации вышеуказанных концепций

1
ответ дан 3 December 2019 в 16:50

Теги

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