otto Posté(e) le 25 mars 2009 Partager Posté(e) le 25 mars 2009 Bonjours! Décidément le schellscript et moi ca fait 2. Je cherche a lancer 2 proxy squid configurer différemment : - le premier lit sa conf dans /etc/squid/squid.conf et utilise le répertoire de cache /var/spool/squid - le second lit sa conf dans /etc/squid2/squid.conf et utilise le répertoire de cache /var/spool/squid2 J'ai bien changé les noms et emplacement de conf et de cache mais systématiquement ça lance la conf du squid "1" Je vous mets le srcipt de squid : #!/bin/bash # squid This shell script takes care of starting and stopping # Squid Internet Object Cache # # chkconfig: - 90 25 # description: Squid - Internet Object Cache. Internet object caching is \ # a way to store requested Internet objects (i.e., data available \ # via the HTTP, FTP, and gopher protocols) on a system closer to the \ # requesting site than to the source. Web browsers can then use the \ # local Squid cache as a proxy HTTP server, reducing access time as \ # well as bandwidth consumption. # pidfile: /var/run/squid.pid # config: /etc/squid/squid.conf PATH=/usr/bin:/sbin:/bin:/usr/sbin export PATH CONFIG=/etc/squid/squid.conf # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 # check if the squid conf file is present [ -f /etc/squid/squid.conf ] || exit 0 if [ -f /etc/sysconfig/squid ]; then . /etc/sysconfig/squid fi # don't raise an error if the config file is incomplete # set defaults instead: SQUID_OPTS=${SQUID_OPTS:-"-D"} SQUID_PIDFILE_TIMEOUT=${SQUID_PIDFILE_TIMEOUT:-20} SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100} # determine the name of the squid binary [ -f /usr/sbin/squid ] && SQUID=squid [ -z "$SQUID" ] && exit 0 prog="$SQUID" # determine which one is the cache_swap directory CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf | \ grep cache_dir | awk '{ print $3 }'` [ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/spool/squid RETVAL=0 start() { for adir in $CACHE_SWAP; do if [ ! -d $adir/00 ]; then echo -n "init_cache_dir $adir... " $SQUID -z -F -D >> /var/log/squid/squid.out 2>&1 fi done echo -n $"Starting $prog: " $SQUID $SQUID_OPTS >> /var/log/squid/squid.out 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then timeout=0; while :; do [ ! -f /var/run/squid.pid ] || break if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then RETVAL=1 break fi sleep 1 && echo -n "." timeout=$((timeout+1)) done fi [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID [ $RETVAL -eq 0 ] && echo_success [ $RETVAL -ne 0 ] && echo_failure echo return $RETVAL } stop() { echo -n $"Stopping $prog: " $SQUID -k check -f $CONFIG >> /var/log/squid/squid.out 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then $SQUID -k shutdown -f $CONFIG & rm -f /var/lock/subsys/$SQUID timeout=0 while :; do [ -f /var/run/squid.pid ] || break if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then echo return 1 fi sleep 2 && echo -n "." timeout=$((timeout+2)) done echo_success echo else echo_failure echo fi return $RETVAL } reload() { $SQUID $SQUID_OPTS -k reconfigure -f $CONFIG } restart() { stop start } condrestart() { [ -e /var/lock/subsys/squid ] && restart || : } rhstatus() { status $SQUID $SQUID -k check } probe() { return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; condrestart) condrestart ;; status) rhstatus ;; probe) exit 0 ;; *) echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}" exit 1 esac exit $? edit : petite modif du fichier de conf pour éviter qu'un squid -k reconfigure (ou autre) n'INpact pas toutes les instance de squid en faisant : squid -k message -f configfile qui ne touchera que le squid lancé avec le fichier de config. Lien vers le commentaire Partager sur d’autres sites More sharing options...
madko Posté(e) le 25 mars 2009 Partager Posté(e) le 25 mars 2009 met nous aussi ton script pour lancer le squid2 Lien vers le commentaire Partager sur d’autres sites More sharing options...
Dark26 Posté(e) le 25 mars 2009 Partager Posté(e) le 25 mars 2009 determine which one is the cache_swap directoryCACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf | \ grep cache_dir | awk '{ print $3 }'` [ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/spool/squid en fait il semblerait que patout dans le script il y ait des chemins en dur , qui ne tiennent pas comptes des variables du départ par exemple sur le bout de code que j'ai mis quoi qu'il arrive , il prend en compte etc/squid/squid.conf Lien vers le commentaire Partager sur d’autres sites More sharing options...
madko Posté(e) le 25 mars 2009 Partager Posté(e) le 25 mars 2009 ouai donc normalement si tu remplace tous les chemins en dur ça devrait le faire. Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 25 mars 2009 Partager Posté(e) le 25 mars 2009 À noter en plus de ce qu'on dit les autres : # check if the squid conf file is present[ -f /etc/squid/squid.conf ] || exit 0 à virer ou adapter if [ -f /etc/sysconfig/squid ]; then . /etc/sysconfig/squid fi ahem, il doit sûrment faire des trucs pas désirable celui-là aussi. Lien vers le commentaire Partager sur d’autres sites More sharing options...
otto Posté(e) le 26 mars 2009 Auteur Partager Posté(e) le 26 mars 2009 Bon ben j'ai commencé par épurer le script pour qu'il ne prenne que le fichier de config en compte : Pour squid 1 #!/bin/bash # squid This shell script takes care of starting and stopping # Squid Internet Object Cache # # chkconfig: - 90 25 # pidfile: /var/run/squid.pid # config: /etc/squid/squid.conf PATH=/usr/bin:/sbin:/bin:/usr/sbin export PATH CONFIG=/etc/squid/squid.conf # Source function library. . /etc/rc.d/init.d/functions SQUID_PIDFILE_TIMEOUT=${SQUID_PIDFILE_TIMEOUT:-20} SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100} SQUID=squid RETVAL=0 start() { echo -n $"Starting squid: " $SQUID -f $CONFIG >> /var/log/squid/squid.out 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then timeout=0; while :; do [ ! -f /var/run/squid.pid ] || break if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then RETVAL=1 break fi sleep 1 && echo -n "." timeout=$((timeout+1)) done fi [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID [ $RETVAL -eq 0 ] && echo_success [ $RETVAL -ne 0 ] && echo_failure echo return $RETVAL } stop() { echo -n $"Stopping squid: " $SQUID -k check -f $CONFIG >> /var/log/squid/squid.out 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then $SQUID -k shutdown -f $CONFIG & rm -f /var/lock/subsys/$SQUID timeout=0 while :; do [ -f /var/run/squid.pid ] || break if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then echo return 1 fi sleep 2 && echo -n "." timeout=$((timeout+2)) done echo_success echo else echo_failure echo fi return $RETVAL } reload() { $SQUID -k reconfigure -f $CONFIG } restart() { stop start } condrestart() { [ -e /var/lock/subsys/squid ] && restart || : } rhstatus() { status $SQUID $SQUID -k check } probe() { return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; condrestart) condrestart ;; status) rhstatus ;; probe) exit 0 ;; *) echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}" exit 1 esac exit $? et pour le 2 #!/bin/bash # squid This shell script takes care of starting and stopping # Squid Internet Object Cache # # chkconfig: - 90 25 # pidfile: /var/run/squid.pid # config: /etc/squid/squid.conf PATH=/usr/bin:/sbin:/bin:/usr/sbin export PATH CONFIG=/etc/squid2/squid.conf # Source function library. . /etc/rc.d/init.d/functions SQUID_PIDFILE_TIMEOUT=${SQUID_PIDFILE_TIMEOUT:-20} SQUID_SHUTDOWN_TIMEOUT=${SQUID_SHUTDOWN_TIMEOUT:-100} SQUID=squid RETVAL=0 start() { echo -n $"Starting squid: " $SQUID -f $CONFIG >> /var/log/squid2/squid.out 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then timeout=0; while :; do [ ! -f /var/run/squid.pid ] || break if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then RETVAL=1 break fi sleep 1 && echo -n "." timeout=$((timeout+1)) done fi [ $RETVAL -eq 0 ] && touch /var/lock/subsys/squid2 [ $RETVAL -eq 0 ] && echo_success [ $RETVAL -ne 0 ] && echo_failure echo return $RETVAL } stop() { echo -n $"Stopping squid: " $SQUID -k check -f $CONFIG >> /var/log/squid2/squid.out 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then $SQUID -k shutdown -f $CONFIG & rm -f /var/lock/subsys/squid2 timeout=0 while :; do [ -f /var/run/squid.pid ] || break if [ $timeout -ge $SQUID_SHUTDOWN_TIMEOUT ]; then echo return 1 fi sleep 2 && echo -n "." timeout=$((timeout+2)) done echo_success echo else echo_failure echo fi return $RETVAL } reload() { $SQUID -k reconfigure -f $CONFIG } restart() { stop start } condrestart() { [ -e /var/lock/subsys/squid2 ] && restart || : } rhstatus() { status $SQUID $SQUID -k check -f $CONFIG } probe() { return 0 } case "$1" in start) start ;; stop) stop ;; reload) reload ;; restart) restart ;; condrestart) condrestart ;; status) rhstatus ;; probe) exit 0 ;; *) echo $"Usage: $0 {start|stop|status|reload|restart|condrestart}" exit 1 esac exit $? Les 2 scripts lancent les bon squid avec les bonnes conf s'il y a une seule instance. Pour 2 ca merde encore à cause du .PID. Lien vers le commentaire Partager sur d’autres sites More sharing options...
madko Posté(e) le 26 mars 2009 Partager Posté(e) le 26 mars 2009 et oui il ne faut pas oublier de changer le chemin vers le bon fichier .pid Lien vers le commentaire Partager sur d’autres sites More sharing options...
otto Posté(e) le 26 mars 2009 Auteur Partager Posté(e) le 26 mars 2009 et oui il ne faut pas oublier de changer le chemin vers le bon fichier .pid Et comment on fait? pidfile: /var/run/squid2.pid ne marchant pas... Lien vers le commentaire Partager sur d’autres sites More sharing options...
madko Posté(e) le 26 mars 2009 Partager Posté(e) le 26 mars 2009 peut etre parcequ'il faut aussi le changer dans squid.conf? Lien vers le commentaire Partager sur d’autres sites More sharing options...
otto Posté(e) le 26 mars 2009 Auteur Partager Posté(e) le 26 mars 2009 peut etre parcequ'il faut aussi le changer dans squid.conf? Arf, j'ai plus les yeux en face des trous! Il faut encore que je fase une petite modif pour le status qui ne différencie pas toujours les 2 instances Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 26 mars 2009 Partager Posté(e) le 26 mars 2009 quand je vois SQUID=squid RETVAL=0 start() { echo -n $"Starting squid: " $SQUID -f $CONFIG >> /var/log/squid/squid.out 2>&1 RETVAL=$? if [ $RETVAL -eq 0 ]; then timeout=0; while :; do [ ! -f /var/run/squid.pid ] || break if [ $timeout -ge $SQUID_PIDFILE_TIMEOUT ]; then RETVAL=1 break fi sleep 1 && echo -n "." timeout=$((timeout+1)) done fi [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$SQUID [ $RETVAL -eq 0 ] && echo_success [ $RETVAL -ne 0 ] && echo_failure echo return $RETVAL } Je suis tenté de dire que $SQUID (qui pointe soit vers /usr/bin/squid soit vers /sbin/squid soit vers /bin/squid soit vers /usr/sbin/squid) écrit en dur le pid dans /var/run/squid.pid De deux chose l'une : soit $SQUID est un scripte dans lequel tu peux configurer le fichier stockant le pid, soit c'est un exécutable. Si c'est un scripte, il va te falloir le dupliquer et changer à la mano dedans. Si c'est un exécutable, soit c'est une option qui se configure (auquel cas, tu mets des nom différents dans tes deux fichiers de confs), soit ça ne se configure pas (ce serait vraiment mal foutu pour un truc aussi utilisé) et tu l'as (ie recompilation avec un patch pour changer le ficheir en question...) Lien vers le commentaire Partager sur d’autres sites More sharing options...
madko Posté(e) le 27 mars 2009 Partager Posté(e) le 27 mars 2009 ya pas de soucis dans $SQUID c'est l'executable de squid... et ce magnifique programme dans son fichier de config permet de specifiger le fichier pid à utiliser. C'est pour cela je pense qu'on ne passe pas par les fonctions habituelles des scripts d'init style daemon, killproc etc Donc a priori il va pouvoir s'en sortir et avoir ces 2 squids. Je me pose quand même une question, les 2 process squid vont être lancé sous le meme utilisateur, est-ce que la limite du nombre max de fichiers ouverts (ulimit -n) est par process ou par utilisateur (jme souviens jamais)? parceque c'est critique pour squid vu que celui-ci ouvre un max de fichier, s'il atteind la limite 2x plus rapidement... EDIT: bon je viens de tester ça a l'air d'être par process Lien vers le commentaire Partager sur d’autres sites More sharing options...
otto Posté(e) le 27 mars 2009 Auteur Partager Posté(e) le 27 mars 2009 ya pas de soucis dans $SQUID c'est l'executable de squid... et ce magnifique programme dans son fichier de config permet de specifiger le fichier pid à utiliser. C'est pour cela je pense qu'on ne passe pas par les fonctions habituelles des scripts d'init style daemon, killproc etcDonc a priori il va pouvoir s'en sortir et avoir ces 2 squids. Je me pose quand même une question, les 2 process squid vont être lancé sous le meme utilisateur, est-ce que la limite du nombre max de fichiers ouverts (ulimit -n) est par process ou par utilisateur (jme souviens jamais)? parceque c'est critique pour squid vu que celui-ci ouvre un max de fichier, s'il atteind la limite 2x plus rapidement... EDIT: bon je viens de tester ça a l'air d'être par process Dans mon cas, il y a relativement peu de donnée a mettre en cache. Vu que squid et le multicore c'est pas super terrible a ce que j'ai lu, autant mettre 2 squid avec des rôles différents par machine (sur plusieurs machines avec load balancer dans le coin) qu'un squid par machine qui ne saura pas utiliser les ressources dispo. Enfin bon ca marche! Lien vers le commentaire Partager sur d’autres sites More sharing options...
lorinc Posté(e) le 27 mars 2009 Partager Posté(e) le 27 mars 2009 cool, alors ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.