2013-03-15 2 views
1

У меня есть служба WCF, размещенная в режиме балансировки нагрузки. Служба размещается с использованием IIS. Есть два сервера, которые сбалансированы по нагрузке.Как клиент может использовать функцию WCF с балансировкой нагрузки

Ниже перечислены end points на сервере. https://labA.myCompany.com:44330/MyService/InternalService.svc https://labB.myCompany.com:44330/MyService/InternalService.svc

Я держу базовый адрес host base address, как

baseAddress=" https://test-LoadBalanced.myCompany.com/MyService". 

Этот хост от нагрузки сбалансированного адреса.

Когда я набираю https://test-LoadBalanced.myCompany.com/MyService/InternalService.svc, я могу получить служебную страницу. Внутри этого иногда я получаю ссылку wsdl для адреса конечной точки окна ServerA и некоторого адреса конечной точки сервера B.

Ссылка

Ответ на вопрос WCF Service Endpoints vs Host Base address говорит

При размещении службы WCF на IIS, базовый адрес может быть только URL в SVC-файл.

Ниже от WCF Addressing In Depth

Клиенты не имеют понимания базового адреса службы и нет необходимости поддерживать что-то похожее на их стороне провода. В результате вы не найдете ничего, что связано с базовыми адресами в клиентской стороне объекта или в разделе конфигурации. Клиенты просто выбирают конкретную конечную точку, которая всегда поставляется с абсолютным адресом, а абсолютный адрес определяет адрес, который он будет использовать во время передачи.

От Load Balancing

По умолчанию BasicHttpBinding посылает заголовок HTTP соединения в сообщениях с Keep-Alive значение, которое позволяет клиентам устанавливать постоянные подключения к службам, которые поддерживают их. Эта конфигурация обеспечивает повышенную пропускную способность, поскольку ранее установленные соединения можно повторно использовать для отправки последующих сообщений на один и тот же сервер. Однако повторное использование соединений может привести к тому, что клиенты будут сильно привязаны к определенному серверу в балансированной нагрузкой ферме, что снижает эффективность балансировки нагрузки с круговым движением. Если это поведение нежелательно, HTTP Keep-Alive можно отключить на сервере, используя свойство KeepAliveEnabled с помощью CustomBinding или пользовательского привязки.

Клиент

Я создал клиент, используя нагрузки сбалансированный адрес. Однако в конфигурации клиента адрес конечной точки имеет адрес сервера A; а не сбалансированный адрес нагрузки.

Вопрос

Итак, как клиент может использовать балансировки нагрузки преимущество в производительности? Он будет атаковать сервер A всегда для получения обслуживания, не так ли?

ответ

1

Измените код/​​конфигурацию вашего клиента, чтобы указать конечную точку балансировки нагрузки.

Базовый адрес относится только к серверу. Это дает вам возможность указать базовый URI, на котором основаны все другие относительные URI.

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

Он также может быть мудрым, чтобы отключить HTTP keep-alive на сервере тоже для того, чтобы предотвратить ваши клиент от формирования липких отношений с серверами за вашу ЛБ

1

WSDL используется только во время разработки вашего клиентского приложения. Как только мастер создал все клиентские классы, вы можете вместо этого указать свое клиентское приложение на балансировщике нагрузки.

Смежные вопросы