Балансировка нагрузки запросов на сервер RMI сервера WebLogic 10gR3 на Amazon ЕС2
Я участвую в разработке распределенного решения, основанного на RMI и развернутого на нескольких узлах Weblogic 10gR3 (10.3.0.0). На одном из узлов размещается сервер RMI, а другие узлы обращаются к нему через иностранного поставщика JNDI. Пытаясь улучшить нашу инфраструктуру путем добавления дополнительных серверов RMI, мы столкнулись с некоторыми проблемами.
Детали нашей инфраструктуры:
- Сервер RMI работает на управляемом сервере, на порту 7005.
- Клиенты RMI получают доступ к нему через удаленный JNDI провайдер, который указывает на что-то вроде: t3: / / имя хоста: 7005
Я публикую то, что мы пробовали до сих пор, при создании дополнительных серверов RMI, и почему это не сработало:
1) Использование Amazon ELB --> это не вариант, потому что он требует открытия нашего порта времени выполнения (7005) для всего интернета, что, очевидно, было бы недостатком безопасности.
2) Настройка поставщика JNDI с несколькими конечными точками (что-то вроде: t3: / / hostname1: 7005, hostname2: 7005), который, по-видимому, работает для очередей JMS -- >все запросы были направлены на сервер RMI, работающий на hostname1, и приложение фактически работало нормально. Однако при преднамеренном сбое сервера за hostname1 запросы к hostname2 не направлялись. (Следует ли их вообще перенаправлять?)
3) использование программного балансировщика нагрузки, такого как HAproxy --> при балансировке на уровне HTTP запросы интерпретировались как "t3 10.3.0.0", что приводило к ошибке HTTP 502 на HAproxy. При балансировании над На TCP-уровне мы получили несколько ошибок "отсутствующего объекта", как будто одно TCP-соединение использовалось для нескольких HTTP-запросов, и после завершения первого запроса последующие запросы не могли получить доступ к удаленным объектам (просто угадывание).
4) мы не хотели использовать кластеризованную Веблогическую среду. 5) мы еще не рассматривали использование фреймворков высокого уровня, таких как spring-remoting-cluster.Какие-нибудь подсказки / предложения? Заранее спасибо!