После некоторых советов относительно проблемы я использую программное обеспечение на базе Linux для балансировки трафика между двумя серверами.
В основном у нас есть производственный веб-сайт и система резервного копирования (на удаленном сайте). производство постоянно зеркалируется в резервной копии, чтобы поддерживать их синхронизацию. наше доменное имя указывает на сервер Linux Ubuntu 9.04 (чистая установка ничего, кроме программного обеспечения для балансировки нагрузки). на котором установлена последняя версия Crossroads (также известная как XR).
XR настроен на передачу всех подключений к действующему веб-серверу до тех пор, пока он не потеряет свое «пульсирующее» соединение с этим сервером, как только это произойдет, он отклонит подключения к нашей системе резервного копирования.
Проблема, которую я получаю, проявляется в отсутствии ответа от нашего веб-сервера, в основном клиент передает правильно сформированное сообщение XML в веб-службу .NET, эта служба выполняет некоторые вычисления и изменяет данные, а затем отвечает ответом XML, однако кажется, что клиент никогда не получает ответа.
Я использовал wirehark для исследования этой проблемы, и похоже, что на полпути к ответу соединение прерывается или разрывается (не совсем уверен из-за отсутствия опыта работы с wirehark).
Я разговаривал с авторами программного обеспечения XR, и они не могут найти никаких причин или проблем в самом программном обеспечении, которые могли бы объяснить такое поведение, и верю, что это может быть связано с дистрибутивом Linux, который я использую, или проблемой ядра.
может ли кто-нибудь помочь мне решить эту проблему, поскольку мы должны запустить эту систему в ближайшие несколько недель, и эта проблема сдерживает нас.
Теперь я перешел с Ubuntu на CentOS 4 и попробовал снова, теперь я получаю случайные ответы от систем, когда использую wirehark. иногда я получаю полностью сформированный ответ XMl от сервера, и при следующей попытке я могу получить только частичный ответ до того, как Linux-сервер отправит пакет RST.
Хорошо, это оказалось совсем не связано с ОС, а возникла проблема с программным обеспечением (xr aka Crossroads), которое я использовал. ввод некоторых значений тайм-аута в файл конфигурации xml (благодаря предложениям автора программного обеспечения), и это, похоже, решило проблему.
Вот пример записей, которые вам нужно добавить в файл конфигурации между символами #, указанное время ожидания немного чрезмерно (1 минута)
<service>
<name>web_http</name>
<server>
<address>x.x.x.x:80</address>
<type>tcp</type>
<dispatchmode>first-available</dispatchmode>
<clienttimeout>60:60</clienttimeout>
<backendtimeout>60:60</backendtimeout>
</server>
<backend>
<address>x.x.x.x:80</address>
</backend>
<backend>
<address>x.x.x.x:80</address>
</backend>
<backend>
<address>x.x.x.x:80</address>
</backend>
</service>
Наверное, не самый полезный ответ, но пробовали ли вы другой балансировщик нагрузки? Только предлагаю это, потому что вы не получали ответа уже 6+ дней :-)
Что-то вроде HAproxy (http://haproxy.1wt.eu) довольно хороша и не требует огромного количества настроек для выполнения большинства задач, вот пример конфигурации сайта:
listen corporate_web_live
bind 1.2.3.4:80 # www.site.com
bind 1.2.3.5:80 # www.site.net
option httpchk HEAD /server.txt HTTP/1.0
cookie HAPSRV insert postonly indirect
server webapp-corp-1 10.0.0.1:80 weight 50 maxconn 150 slowstart 30s cookie WAC1 check
server webapp-corp-2 10.0.0.2:80 weight 50 maxconn 150 slowstart 30s cookie WAC2 check
Он написан Вилли Тарро, который поддерживает дерево ядра Linux 2.4 и постоянно тестируется на пропускную способность 10 Гбит / с на относительно обычном оборудовании. Обработка завершения SSL с помощью Apache + mod_ssl или stunnel тоже очень возможен.
При обработке HTTP-трафика он также может делать некоторые очень забавные вещи Layer7, и он также поддерживает балансировку других протоколов, поддержка SMTP мне очень полезна!