Добрый день!необходимо реализовать работу следующей схемы:
у нас в dmz есть сервер1 (ip 172.16.0.1) и сервер2 (ip 172.16.0.2).
снаружи есть внешние клиент1 (ip 1.1.1.1) и клиент2 (ip 2.2.2.2)(на самом деле серверов ОЧЕНЬ много, клиентов тоже очень много)
по сути каждый клиент работает со своим сервером (т.е. клиент1 с сервером1, клиент2 с сервером2). каждому клиенту выдаётся наше (самописное) ПО для работы с своим сервером. затыка состоит в том, чтобы облегчить поддержку этого ПО при обновлении и инсталляции. Наш отдел разработки ПО хочет, чтобы настройки ВСЕХ клиентов были ОДИННАКОВЫМИ.
Т.е. в dmz поднимается какой-то прокси сервер, на который настраиваются все клиенты. И этот проксирующий сервер должен в зависимости от ip адреса клиента перенаправлять запрос на нужный сервер.я посмотрел squid (на предмет cache_peer, но как я понял это не подходит)
есть ли какое то подходящее решение?
P.S. понятно, что лёгкое решение - это на каждом клиенте держать свои настройки для этого ПО, но тут вопрос организационный и он уже к сожалению решён и не обсуждаем.
revers proxy
> revers proxysquid - тоже revers proxy и что?
>> revers proxy
> squid - тоже revers proxy и что?squid не единственный реверс прокси. Есть и другие, более заточенные на балансинг - varnish, nginx. Можно организовать авторизацию на реверс-прокси и редирекшен на основе login'a. Короче - почитали б про функционал _разных_ проксей, если с технологией уже определились.
Если балансинг нужен только на основе L3, то и LVS пойдет - он гораздо проще и производительнее. Да и кластеризуется на-раз.
>>> revers proxy
>> squid - тоже revers proxy и что?
> squid не единственный реверс прокси. Есть и другие, более заточенные на балансинг
> - varnish, nginx. Можно организовать авторизацию на реверс-прокси и редирекшен на
> основе login'a. Короче - почитали б про функционал _разных_ проксей, если
> с технологией уже определились.
> Если балансинг нужен только на основе L3, то и LVS пойдет -
> он гораздо проще и производительнее. Да и кластеризуется на-раз.вы наверное не поняли. мне не нужен "балансинг". балансировка полагает как минимум 2 (ДВА) сервера на которые должны попадать запросы пользователя. У меня же связка клиент1 <-> сервер1, клиент2 <-> сервер2, и т.д... нет тут балансировки. по поводу пользователя - данное ПО не предполагает работу с авторизацией и аутентификацией. такое вот ПО :)
я так думаю что это становится проще сделать с помощью iptables.
> я так думаю что это становится проще сделать с помощью iptables.так и делайте с помощью iptables http://www.opennet.me/docs/RUS/iptables/
типа так
iptables -t nat -A PREROUTING -s 1.1.1.1 -p tcp -j DNAT --to-destination 172.16.0.1
iptables -t nat -A PREROUTING -s 2.2.2.2 -p tcp -j DNAT --to-destination 172.16.0.2Естественно правила можно скриптом генерить.
> у нас в dmz есть сервер1 (ip 172.16.0.1) и сервер2 (ip 172.16.0.2).
> снаружи есть внешние клиент1 (ip 1.1.1.1) и клиент2 (ip 2.2.2.2)http://wiki.squid-cache.org/ConfigExamples/Reverse/MultipleW...
cache_peer ip.of.server1 parent 80 0 no-query originserver name=server1
cache_peer_access server1 deny foocache_peer ip.of.server2 parent 80 0 no-query originserver name=server2
cache_peer_access server2 allow foo
cache_peer_access server2 deny all
В nginx, наверное, было бы примерно --geo $backend {
1.1.1.1 172.16.0.1
2.2.2.2 172.16.0.2;
}+
proxy_pass http://$backend/;
...
...>каждому клиенту выдаётся наше (самописное) ПО для работы с
В постановке задачи, кстати, не заявлено, что протокол-таки http.