И снова SQUID НО только с 2-мя прокси-серверами
Здравствуйте уважаемые.
Имеется:
1. Есть SQUID прокси-сервер (условно его IP 192.168.0.1).
У самого прокси-сервера(SQUID IP 192.168.0.1) нет интернета вообще.
2. Есть в сети еще ДВА прокси-сервера подключенные к РАЗНЫМ провайдерам:
Первый прокси-сервер имеет в сети IP 192.168.0.2
Второй прокси-сервер имеет IP 192.168.0.3.
Ни на одном из них не стоят squid.
3. Все запросы нужно направлять на прокси-сервер с IP 192.168.0.2 (=сделано=).
НАДО:
Что бы прокси-сервер с IP 192.168.0.1 мог ПЕРЕКЛЮЧАТЬСЯ между этими прокси-серверами при одном условии:
ЕСЛИ на прокси-сервере с IP192.168.0.2 "упала" связь ТО направить все запросы на прокси-сервер с IP 192.168.0.3.
Ну а если появиась связь на прокси-сервере с IP 192.168.0.2 то снова все направлять ему, т.е. на 192.168.0.2.
Спасибо всем заранее!
- Для комментирования войдите или зарегистрируйтесь
,
Не совсем то, но может чем-то поможет
http://squid.org.ua/FAQ/my/FAQ-4.html#ss4.9
Читал, но не подходит... там
Читал, но не подходит... там случай с одним парентом (главным), а вот со вторым ситуацию не рассматривают вообще. Пробовал без указания default не переключается.
у гугла спрашивали
у гугла спрашивали типа
"squid несколько родительских кешей" ?
я думаю это и это как-бы решает вашу проблему.
или я недопонял чего.
что-то добрый я сегодня ....
/
Нет.
В приведённых тобой примерах распиывается выбор маршрута в зависимости от конечной точки.
Требуется же сделать балансировку нагрузки в зависимости от работоспособности канала.
Вариантов отличных от костыля (скрипт проверяющий работоспособность канала, при падении канала меняющий конфиг и перезапускающий сквида с запуском по
cron
'у) я не вижу.:wq
--
Live free or die
Anarchist написал(а): leryc
Да верно "говоришь", спасибо Anarchist, буду "костылять" =)
имхо, немного не
имхо, немного не так....
"выбор маршрута" - приведен как пример возможного применеия соответствующих директив
но назначение их гораздо шире
если не привязываться к прописыванию правил "разрулирования", то сквид действует по принципу перебора пока не сработает
например, отправляет запрос на 1-й родительский кэш, не получает ответа, отправляет на 2-й по списку. и так далее...
у меня работает почти подобно...
по умолчанию сквид работает через "вышестоящий" (HAVP), но если по каким причинам HAVP упавший или остановлен ручками, сквид автоматиески рулит напрямую к провайдеру (на стороне клиента это прозрачно и никак не отражается - видно лишь по логам)
но это (примеры) - не пример балансировки, ибо там подход - перебрать по порядку в порядке описания в конфиге
балансировка решается несколько иначе (видел примеры, но не применял)
что-то добрый я сегодня ....
leryc написал(а): имхо,
Ставил на перебор:
и так
Не "переключается"
Все время обращается к 192.168.0.2, а как результат у людей нет Интернета.
попробовать покрутить "время
попробовать покрутить "время отклика" и\или посмотреть что там по дефолту выставлено?
насколько я помню, в броузерах выставлено 30 сек когда они начинают кричать "нет интернета"
я не помню скоко времени точно надо для сквида, чтоб понял что ему не отвечают сверху
убрать no-query (не опрашивать канал) и выставить время сек на 15
из приведенных вами вариантов - 2-й мне кажется правильным (за исключением наличия опции no-query)
imho
ОБНВ
Это смотрели уже?
что-то добрый я сегодня ....
.
А как сквид опеределяет упал ли кеш?
Я думаю, что может быть два варианта:
1. Упал сам сквид на родильском кеше или серевер
2. У родительского кеша отвалился инет.
Т.е. в первом случае родительский кеш недоступен, во втором - он не может вернуть запрашиваемую страницу.
Я к тому, что может у вас со сквидом разное определение для "упал", потому и не работает как хочется?
ЗЫ это так, просто предположение )
Я немного уточню что на
Я немного уточню что на остальных ДВУХ серверах (192.168.0.2 и 192.168.0.3) не стоит SQUID. Так бы определял по icp
существенное
существенное уточнение....
костыль, о котором говорил Анархист, пожалуй, самый простой и быстрый для внедрения способ
однако, моё мнение, сквиду пофиг стоит или нет на вышестоящем узле другой сквид или нет
проблема может еще заключаться в резолвинге имен (вернее проблема - в невозможности отрезолвить имена)
оба прокси (192.168.0.2 и 192.168.0.3) имеют одни и те же внешние DNS'ы ?
на ...0.1 поднят ли кэширующий bind и указан ли для сквида порядок опроса DNS 127.0.0.1 и далее все внешние ?
По уму - надо бы посмотреть ваш конфиг внимательно на трезвую голову ( к вечеру\ночи моск уже вскипает как бы)
то, что задачка решаема на уровне конфига сквида - я убежден
надо немного мозг поднапрячь
ОБНВ
Плохо, что все серверы у вас в одной сети - не совсем понятно куда же посылать "внешние запросы" на уровне интерфейсов
Мне подумалось, что наверное у вас должно быть настроено default gateway (iptables) на 192.168.0.3, а default parent_proxy для сквида на 192.168.0.2
Как вы видите интернет с узла 192.0.0.1 минуя сквид? Каковы правила рулежа пакетов? Как обрабатывается "падеж" .0.2 и\или .0.3 ?
что-то добрый я сегодня ....
Вот конфиг: Цитата: http_port
Вот конфиг:
С таким конфигом не происходит "переключения". Скорее всего я что то не так сделал.
Кстати DNS у них один единственный на 192.168.0.1, 192.168.0.2 и на 192.168.0.3 один и тот же.
попробуйте явно прописать
попробуйте явно прописать dns_nameservers xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy zzz.zzz.zzz.zzz (какие там у вас есть)
проверьте с узла 192.168.0.1 доступность ping mail.ru (к примеру) когда поочередно "отключен" от инета узел 192.168.0.2 а потом 192.168.0.3
Без шаманства пинги проходят в обоих случаях ?
что-то добрый я сегодня ....
.
Думаю что не ходят, т.к.
Да и не ходили бы все-равно, роут менять пришлось бы.
"нет интернета" можно
"нет интернета" можно понимать и как отсутсвие "айпишника наружу", но это не факт полного отсутствия нитернета, имхо
что-то добрый я сегодня ....
судя по этому ....danvach
судя по этому ....
у вас все-таки не одна сеть
как вы из .200.100 попадаете в .0.0/24 ? (на уровне DNS-запросов и пробрасываемых портов)
На уровне iptables ? какие правила? (если есть)
как указан gateway для 192.168.200.100 ?
что-то добрый я сегодня ....
.
.200.100 это, видимо, вторая сетевуха, на которой клиенты.
Мне кажется, вы не туда копаете. Днс тут не причем, если у сквида есть родительские кеши, то резолвят они, вроде.
имхо, сквид сначала посылает
имхо, сквид сначала посылает запрос резолвинга на предмет потом проверить свои acl'ы, а потом уже посылает непосредствено урл-запрос
если, например, на eth0 (192.168.200.100) default gateway 192.168.0.2 и 02 падает - конечно не будет никакого интернета, даже при наличии второго "родителя" - сквид тупо затупит на стадии resolv
сугубо имхо
что-то добрый я сегодня ....
,
Такого быть не может, разве что у человека там сеть /16.
Если указан IP кеша а не имя, то резолвить какбы нечего.
Вобщем чтоб уверенно отбросить вашу теорию автору надо убедиться в доступности днса при недоступности обоих кешей.
/
Я бы здесь на машинку с основным (к которому подключаются клиенты) сквидом воткнул и
bind
'а (так, чтобы он направлял запросы по обоим каналам)...:wq
--
Live free or die
Чегой то не то у вас в сети
Чегой то не то у вас в сети творится имхо. Как я понимаю нужен один нормальный маршрутизатор, который перекидывал бы пакетики на два канала по метрикам + один сквид, которому разрешено ломиться через этот гейтвей в нет. С чего вы взяли что кеширующий прокси c достаточно плоским набором правил должен работать как маршрутизатор?
Всех прошу извинить меня за
Всех прошу извинить меня за то что немного ввел в заблуждение, а точнее за строку в конфиге
я поменял сетевые настройки (точнее менял айпи в подсети с 192.168.200.0 на 192.168.0.0) а в конфиге осталась эта запись... я её конечно же обнаружил и исправил. В приведенном мною конфиге строку
следует читать
для наглядности еще раз конфиг текущий:
С этой машины (192.168.0.1) при попытке пинговать к примеру хост mail.ru он резолвит но конечно же не пингует
по конфигу - должно
по конфигу - должно работать
неплохо бы показать вывод #route
1) ведутся ли логи на .0.3 и .0.2 ?
2) инет есть (когда подняты 2 и 3) в обоих вариантах:
видно по логам что хождение идет через .0.3 (во втором варианте) ?
3) что в логах самого сквида когда .0.2 падает ?
ОБНВ
Вы опять чего-то недовыложили в конфиге?
Не вижу запись http_access allow localnet our_net или где вы там разрешаете локальным юзерам ходить в инет
по идее при таком конфиге вообще инета не должно было быть у юзеров
что-то добрый я сегодня ....
leryc написал(а): по конфигу
Вот роутинг:
Вот тут
разрешается локальным юзерам ходить в инет.
При записи в конфиге
Интернета нет вообще, если падает 192.168.0.2 или наоборот.
Тестировал следующим образом: Выдергивал телефонный кабель из ADSL-модема, сначала у 192.168.0.2 при вставленном телефонном кабеле ADSL-модема у 192.168.0.3, интернета нет, потом втыкал обратно, ну и прописывал первым 192.168.0.3 а вторым 192.168.0.2 выдергивал кабель из ADSL-модема теперь уже у 192.168.0.3 при вставленном телефонном кабеле у 192.168.0.2, интернета нет. Если у "первого" (например 192.68.0.2) телефонный кабель воткнуть в ADSL-модем то интернет появляется.
danvach написал(а): Вот
ну тогда переведите на русский или логический эту запись
Ччто делает?
что разрешает?
кому разрешает?
и как следствие - кто такие manager, me, all ???
тут я запутался безнадежно :(
у вас два ADSL-модема? два выхода в инет? два внешних IP ?
кто стоит на 2 и 3 ? как выходят в инет? кто слушает порты 9000 и 8080
есть еще машины кроме 1, 2, 3 ?
с какого ip вы выходите в инет через .0.1-ю машину?
что-то добрый я сегодня ....
leryc написал(а): danvach
Отвечаю:
Я просто экспериментировал с доступами, сейчас в конфиге этих
строк нет, с приведенной выше конфиге интернет работает, но как только интернет на 192.168.0.2 "пропадает" интернета вообще нет. Хотя строки
присутствуют.
Вот текущий конфиг, когда интернет есть на 192.168.0.2 у всех пользоватлей Интернет есть:
Да у меня два ADSL-модема и два разных провайдера.
1-ый модем подключен к 192.168.0.2 к провайдеру условно назовем "1".
2-ой модем подключен к 192.168.0.3 к провайдеру условно назовем "2".
Так вот, если вытащить телефонный кабель (для экспиремента) из модема который подключен к 192.168.0.2 (соответственно к провайдеру 1) то интернет у всех пропадает. Т.е. не происходит переключения на прокси-сервер 192.168.0.3. В этом суть моего повествования. Если перечитать то думаю прояснится. Извините, если я описал слишком "сумбурно" но суть можно уловить.
уточните ее пару вопросов2 и
уточните еще пару вопросов
2 и 3 - это полноценные компьютеры или это внутренние айпишники модемов ?
когда воткнуто два модема другие компы (4,5,6) ходят в инет чезрез 01 ? и это видно по логам сквида?
относительно acl вы все-таки недопоняли ;)
само по себе acl это типа "правило" типа алиасса типа для имени (группы) считать бла-бла-бла
потом с этой группой надо что-то делать
чтоб не писать кажддый раз многобуквенную бла-бла-бла применяется имя группы из acl
типа того
весьма условно
поэтому в вашем конфиге должна присутствовать строчка http_access allow localnet
которая переводтся типа "разрешить http-запросы для компов\сетей, перечисленных в alc под именем localnet
в вашем конфиге все компьютеры сети (4,5,6...) не должны (не смогут) попадать в инет, за исключением 192.168.0.1 (может быть) т.к. он автоматом попал в группу localhost, для которой есть соответствующее allow
поэтому хотелось бы видеть кусок (весь не надо ;)) лога сквидда, гдде видно, что работает связка 4 -> 1 -> 2 -> инет
что-то добрый я сегодня ....
leryc написал(а): уточните
Добавил в конфиг строку http_access allow localnet
теперь конфиг имеет следующий вид:
вот кусочек лога cache.log:
Ситуация не изменилась.
нужен кусок squid.log или
нужен кусок squid.log или access.log (не помню как он там у него называется)
что-то добрый я сегодня ....
.
Попробуй вытягивать кабель не из модема а из сетевухи (192.168.0.2). Будет ли при этом переключаться?
Ведь в твоем случае прокся на 192.168.0.2 отвечает сквиду что не может достать нужный урл, она же не знает кабель вытянули или вообще запрошенный урл недоступен.
izbushka написал(а): Попробуй
Я просто не знаю, и хочу поинтересоваться у Вас, а есть разница между "вытащить телефонный кабель" и "вытащить кабель из сетевого адаптера" для SQUID?
.
Я тоже не знаю. Но попробовать то легко?
Рассуждаю так: Если у сквида несколько кешей, то для переключения на следующий логично было бы чтоб первый в списке ответил, мол немогу сейчас (но поскольку у вас не сквид там, то врядли) или вообще не ответил (это и предлагаю эмулировать). Т.е. чтоб был ответ не о невозможности доставки урла а именно о проблеме с кешем. Потому как если основной сквид запрашивает заведомо несуществующий урл то ему пришлось бы перебирать все кеши, т.к. каждый бы отвечал что нет такого урла, вместо того чтоб понять с первого раза.
разница естьdanvach
разница есть
если вытащить тел.каб., то, как заметил Избушка, пакет будет получен .2 и там зависнет х.з. насколько
но плохо то, что со стороны сквида это будет "нормально", т.к. tcp-соединение с .2 установлено и второй "родитель" опрашиваться не будет
если выдернуть сет.кабель от .2, то сквид не сможет установить соединение с .2 и будет (должен) искать второго родителя
что-то добрый я сегодня ....
эту мысль (мою) надо
эту мысль (мою) надо проверять, но возможностей нет
собственно мысль
что-то добрый я сегодня ....
.
leryc, я все никак не пойму вашу мысль.
Почему обязательно 192.168.0.2 и 192.168.0.3 должны быть шлюзами? Они просто прокси, а не НАТ, этого сквиду достаточно.
они шлюзы уже потому, что к
они шлюзы уже потому, что к ним подходит физический интернет (adsl-1 и adsl-2)
прокси (на них) - это уже вторично
что-то добрый я сегодня ....
,
шлюз - это если net.ipv4.ip_forward = 1. А то что к ним подходит физ. инет ни о чем не говорит. Сквиду не нужно чтоб они были шлюзами.
а как пакеты ходят наружу?
а как пакеты ходят наружу? ;)
токо через шлюз...
шлюз, в свою очередь, может быть "прозрачный" (net.ipv4.ip_forward = 1) и через "дырку" (прокси)
я пока так и не увидел документального подверждения что люди (или людь) получают инет от сквида .0.1
неизвестны детали настроек .2 и .3 - потому и предполагаю, что люди ходят в инет минуя сквид
и если исходить из понятия "упал интернет" - это отвалился "провайдер 1" за тел.кабелем - то разруливать это
надо на уровне роуитера и, возможно, через костыль типа этого http://wiki.kryukov.biz/wiki/Переключение_на_резервный_канал (или типа того)
что-то добрый я сегодня ....
,
или через прокси :)
Не путайте понятия. Проксирование и роутинг - абсолютно разные вещи.
А куда у него сейчас ходят пакеты - не важно, вопрос был в настройке сквида )
шлюз - это эфемерное понятие
шлюз - это эфемерное понятие точки перехода из одного в другое (в частности из одной сети в другую)
как осуществляется телепортация - прокси или роут или хрен знает что - это не столь важно для понятия "шлюз"
как раз может быть и важным.
я подозреваю, что .2 (и .3) - это прокси внутри модема
это прокси успешно принял запрос от сквида (даже в том случае, исли инет за его спиной уже упал) и на этот запрос сквида отвечает 200 OK и в придачу отдает страничку "нету интернета"
сквид не лингвист, сквиду ок'ей и есть ok'ей - типа всё нормально
ОБНВ
и вообще встает вопрос - зачем (с какой целью) обращаться к кэшу модема если свой собственный наверняка больше?
отрубить нахрен все parent'ы и пусть себе ходит как нормальный и разруливается на уровне обычного route
что-то добрый я сегодня ....
,
Шлюз в IT - это вполне конкретное понятие. В случае роутинга исходный пакет направляется далее к месту назначения. При проксировании конечный пункт пакета - это прокси, далее прокси создает свой собственный запрос урла, и возвращает ответ отправителю. Т.е. пакет пользователя не уходит дальше прокси, у пользователя вообще может быть не прописан ни шлюз ни днс для работы через прокси
Про это я уже писал, проверить легко, подождем автора )
,
А есть возможность сделать на 192.168.0.3 transparent proxy? Тогда быдет работать http://squid.org.ua/FAQ/my/FAQ-4.html#ss4.9
Прокси не стоит на модемах,
Прокси не стоит на модемах, модемы представляют из себя безделушки в виде d-link 2500u, настроены мостом, ВНЕШНИЕ айпи прописаны на сетевой карте компьютера, таким образом получаем схему (не ругайте за рграфику =)
Оговорюсь на 192.168.0.2 и 192.168.0.3 НЕ СТОИТ SQUID да и операционная система Windows 200x.
.
Ну так что насчет http://www.gentoo.ru/content/i-snova-squid-no-tolko-s-2-mya-proksi-serverami#comment-144262 ?
izbushka написал(а): Ну так
Пробовал выдергивать кабеля из сетвых карт, результат такой же, интернета нет.
.
Именно из карты с IP 192.168.0.2 а не между Win2kx и модемом?
Т.е. смысл в том чтоб разорвать связь между сквидом и родительским кешем.
Если да, то через прокси получиться только с костылем, предложенным вначале.
на каждой машинке по две
на каждой машинке по две сетевых карты или по одной?
что-то добрый я сегодня ....
leryc написал(а): на каждой
на 192.168.0.1 ОДНА СЕТЕВАЯ КАРТА
на 192.168.0.2 ДВЕ СЕТЕВЫЕ КАРТЫ
на 192.168.0.3 ДВЕ СЕТЕВЫЕ КАРТЫ
какой конкретно прокси стоит
какой конкретно прокси стоит на виндовых машинах и, как уже спрашивал Избушка, настроены ли они transparent ?
когда подключены оба модема - покажите вывод route с обеих виндовых машин
что-то добрый я сегодня ....
leryc написал(а): какой
На обоих машинах (192.168.0.2 и 192.168.0.3) установлен прокси-сервер ES Proxy.
по поводу настройки transparent: На каких машинах вы спрашиваете настройку transparent?
На обоих виндовых машинах route print только в конце IPадреса подставить нужный:
1) проверяли эту
1) проверяли эту мысль?
2) клиенты точно ходят в инет через сквид? (в логах видятся их ip'шники?)
3) на клиентских машинах - винда стоит? вывод route на них различается или нет когда выход в инет идет через 0.2 или 0.3 ?
4) как я понял - сквид на виндовой машине поставить религия не позволит? ;)
5) в гентовую машинку вторую карточку поставить никак?
6) у ES Proxy есть параметр Master proxy - может настроить с 0.3 на 0.2, а гентовую машинку ориентировать на только на 0.3?
когда инет на 0.2 упадет - пусть 0.3 сама с этим разбирается
7) когда "инет упал" - на клиентской машике ошибка по тайм-out'у или страничка с сообщением об ошибке? От какого прокси?
8) когда "инет упал" - на гентовой машинке сделайте wget --save-headers http://ya.ru (настройку на проход через прокси посмотрите в мане и, естественно, через тот какнал, что неработает)
какой код ответа будет - 200 OK или 404 OK или другой?
что-то добрый я сегодня ....
________________ Инет --->
В локалке, если очень нужно можно и сквид развернуть. Ежели с железом туго, сквид можно посадить на маршрутизатор (ибо линь).
Собсно вопрос такой. Чем не устраивает классика? Маршрутизатор работает на 3 уровне OSI, то есть на том самом уровне, который отвечает за адресацию пакетов. На этом уровне можно натить пакет из локалки на любой из каналов. Сквид оперирует на OSI уровне приложений (7-й, насколько помню), потому отрулить по какому интерфейсу (читай сетевому адресу) уйдет пакет нельзя.
К тому же в классике 2 сервера, один сквид и один гейт. У вас на единицу больше, да и функционал ниже.
PS
Буду очень удивлен ежели ваша схема сработает.
wi написал(а):
Все дело в том, что эти два сервера еще выполняют свои функции по работе, и им нужен direct-connect с Интернетом (не проходят варинаты с нат-ами, маршрутизировнием и проксированием), Ваш вариант я прекрасно знал, но он не подходит в моем случае.
Я решил пока "костылем", сделал скрипт который правит конфиг squid.conf в строке где прописывается айпи и порты прокси сервера, проверка каждую минуту в кроне.