LINUX.ORG.RU
ФорумAdmin

Переключения на 2ой прокси при падении первого(сквид). Доработать скрипт.

 


0

1

Всем салют!

Есть контора в которой стоит прокси(p3) squid(512Кбит/сек), который пользуется каналом другого территориально-удалённого прокси(p1, 80Мбит/сек) или резервного прокси(p2, 10Мбит/сек).

Другими словами: Сделать скрипт, который бы реализовывал работу p3 через p1. В случае падения p1 - переключается на p2. В случае падения p2 и p3 - работает напрямую через p1. С периодичностью в 3 минуты скрипт проверяет доступность обоих прокси. Основной прокси, через который идёт трафик - p1.

Чего сделал:

#!/bin/sh
 
p1="1.2.3.4" ##через удалённый прокси-1(80Мбит)
p2="5.6.7.8" ##через удалённый прокси-2(10Мбит)
p3="####" ##напрямую прокси-3(512Кбит)
path="/etc/squid/squid.conf"
 
if (ping -c 3 -s 1 -W2 $p1 | grep "3 received");
    then
           if   (grep $p2 $path || grep $p3 $path);
           then
           sed -i -e 's/'$p2'/'$p1'/g' $path
           sed -i -e 's/'$p3'/''/g' $path
           squid -k reconfigure
           break
           fi
 
    else
           if (ping -c 3 -s 1 -W2 $p2 | grep "3 received" && grep $p1 $path || grep $p3 $path);
           then
                  sed -i -e 's/'$p1'/'$p2'/g' $path
                  sed -i -e 's/'$p3'/''/g' $path
                  squid -k reconfigure
                  break
           else           
                  if (grep $p3 $path);
                  then break
                  else
                        sed -i -e 's/'cache_peer'/'####cache_peer'/g' $path
                        squid -k reconfigure
                        break
          fi
fi

- Сам /etc/squid/squid.conf:

http_port 3128
dns_nameservers 8.8.8.8 9.9.9.9
 
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_dir ufs /var/log/squid/cache 2048 16 256
 
reload_into_ims on
refresh_pattern ^ftp:          1440    20%     10080
refresh_pattern .              0       20%     4320
 
cache_peer 1.2.3.4 parent 3129 0 no-query default no-digest
 
 
acl all src 0.0.0.0/0.0.0.0
acl office src 192.168.0.0/255.255.255.0
 
http_access             allow   office
http_access             deny    all
 
cache_mem 100 MB
maximum_object_size 100 MB
maximum_object_size_in_memory 100 KB
 
visible_hostname ME_3
memory_pools off
error_directory /var/log/squid/errors
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log

Есть ли здесь недочёты, нужно ли что-то улучшить или задачу можно решить каким-либо некостыльным способом?


Ответ на: комментарий от sdio

Я об этом

реализовывал работу p3 через p1. В случае падения p1 - переключается на p2

В случае падения p3, скрипт должен выставить перенаправление на прокси p1 при помощи iptables

sdio ★★★★★
()
Ответ на: комментарий от sdio
p1="1.2.3.4" ##через удалённый прокси-1(80Мбит) 
p2="5.6.7.8" ##через удалённый прокси-2(10Мбит) 
p3="####" ##напрямую прокси-3(512Кбит)

cache_peer 1.2.3.4 parent 3129 0 no-query no-digest round-robin weight=1 cache_peer 5.6.7.8 parent 3129 0 no-query no-digest round-robin weight=2

Так подразумевается? Сквид сам будет определять, какой из прокси упал и переключается на второй?

Brunen
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.