Sync Loadbalanced webservers: Difference between revisions

From Hobbynet Admin Wiki
Jump to navigation Jump to search
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
= doel =
= doel =
Dit script zorgt er voor dat de configuraties van webservers gelijk worden getroken
Dit script zorgt ervoor dat de configuraties van webservers gelijk worden getrokken
= config files =
= config files =
De config files staan in de volgende dir /usr/local/hobbynet/apache2conf/'''html'''<br>
De config files staan in de volgende dir /usr/local/hobbynet/apache2conf/'''html'''<br>
vervang html door naam van cluster bv php-joomla dus '''zonder -lbx'''
Vervang 'html' door de naam van het cluster, bijvoorbeeld 'php-joomla' dus '''zonder -lbx'''
== config files syncroniseren ==
 
om de config files te syncroniseren draai op scripting het script /usr/local/hobbynet/bin/sync_html <br>
== config files synchroniseren ==
vervang html door naam van cluster bv php-joomla dus '''zonder -lbx'''
Om de config files te synchroniseren draai je op scripting het script /usr/local/hobbynet/bin/sync_html <br>
Vervang 'html' door de naam van het cluster, bijvoorbeeld 'php-joomla' dus '''zonder -lbx'''
= scripting =
= scripting =
== op server scripting ==
== op server scripting ==
Op de server scripting wordt het script /usr/local/hobbynet/bin/sync_* aangeroepen.<br>
Op de server scripting wordt het script /usr/local/hobbynet/bin/sync_* aangeroepen.<br>
Deze start op de servers in het cluster het script /usr/local/hobbynet/local/getapacheconf
Deze start op beide servers in het cluster het script /usr/local/hobbynet/local/getapacheconf
<pre>
<pre>
#!/bin/bash
#!/bin/bash
echo synching html-lb1
echo syncing html-lb1
ssh html-lb1-int /usr/local/hobbynet/local/getapacheconf
ssh html-lb1-int /usr/local/hobbynet/local/getapacheconf
echo synching html-lb2
echo synching html-lb2
ssh html-lb2-int /usr/local/hobbynet/local/getapacheconf
ssh html-lb2-int /usr/local/hobbynet/local/getapacheconf
</pre>
</pre>
== locale scripting op webserver ==
== locale scripting op webserver ==
Dit script zorgt er voor dat lb* in de config file wordt vervangen door lb1 of lb2 dat hangt af van de waarde in script.<br>
Dit script zorgt ervoor dat lb* in de config file wordt vervangen door lb1 of lb2, afhankelijk van de waarde in het script.<br>
omdat dit script server speciefiek staat deze in /usr/local/hobbynet/local/getapacheconf<br>
Omdat dit script server specifiek is staat deze lokaal op de server, in de map /usr/local/hobbynet/local/getapacheconf.<br>
Na dat alle sites zijn uitgeschakeld worden de huidige website files weg gebackup naar /usr/local/hobbynet/local/backup<br>
Nadat alle sites zijn uitgeschakeld worden de huidige website files weg gebackup naar /usr/local/hobbynet/local/backup.<br>
hier na worden alle files (website die in de configdir staan geactiveerd<br>
Hierna worden alle files (website) die in de configdir staan geactiveerd.<br>
Wil je een site uitschakelen verplaats je de website configfile naar uitgeschakeld
Wil je een site uitschakelen dan verplaats je de website configfile naar de map 'uitgeschakeld'.<br>
Daarnaast wordt er de php.ini die in de php directory staat naar de server gekopieerd<br>
Daarnasst wordt ook de logrotated config op zelfde manier verspreid naar beide servers<br>
<pre>
<pre>
#!/bin/bash
#!/bin/bash
BASISCONFIG=/usr/local/hobbynet/apache2conf/html
# CLUSTER speciefiek
APACHE2CONFIGDIR=/etc/apache2/sites-available
# Naam van directory waar cluster inzit
BACKUPDIR=/usr/local/hobbynet/local/backup/
CLUSTERDIR=php54
#NR van loadbalanced server LB1 = 1 LB2 = 2 etc
LB=1
LB=1
# Standaard variabelen
BASISCONFIG=/usr/local/hobbynet/apache2conf/$CLUSTERDIR


#apache
APACHE2=/etc/apache2
APACHE2CONFIGDIR=$APACHE2/sites-available
# backup dir
BACKUPDIR=/usr/local/hobbynet/local/backup
#logrotated
BASISLOGROTATE=$BASISCONFIG/logrotate
LOGROTATECONFIGDIR=/etc/logrotate.d
LOGROTATEFILE=apache2
#php
BASISPHP=$BASISCONFIG/php
PHPCLI=/etc/php5/cli/php.ini
PHPCGI=/etc/php5/cgi/php.ini
PHPAPACHE2=/etc/php5/apache2/php.ini
PHPCONFD=/etc/php5/conf.d
#IPlists
IPLISTBASIS=/usr/local/hobbynet/apache2conf/iplist
IPLISTLOCAL=/usr/local/hobbynet/iplists




#apache2 configuratie
echo "bezig met aanpassen van apache configuratie"
cd  $BASISCONFIG/lb$LB
cd  $BASISCONFIG/lb$LB
rm $BASISCONFIG/lb$LB/*
rm $BASISCONFIG/lb$LB/*
cp $BASISCONFIG/* $BASISCONFIG/lb$LB/ >/dev/null
find $BASISCONFIG -maxdepth 1 -type f -exec cp {} $BASISCONFIG/lb$LB/ \;
    for fl in *; do
for fl in *; do
    mv $fl $fl.old
mv $fl $fl.old
    sed 's/lb\*/lb'$LB/g $fl.old > $fl
sed 's/lb\*/lb'$LB/g $fl.old > $fl
    rm -f $fl.old
rm -f $fl.old
    done
done
 
#Logrotate
echo "bezig met aanpassen van logrotate configuratie"
cd $BASISLOGROTATE/lb$LB
rm $BASISLOGROTATE/lb$LB/*
cp $BASISLOGROTATE/$LOGROTATEFILE $BASISLOGROTATE/lb$LB/$LOGROTATEFILE >/dev/null
mv $BASISLOGROTATE/lb$LB/$LOGROTATEFILE $BASISLOGROTATE/lb$LB/$LOGROTATEFILE.old
sed 's/lb\*/lb'$LB/g $BASISLOGROTATE/lb$LB/$LOGROTATEFILE.old > $BASISLOGROTATE/lb$LB/$LOGROTATEFILE
rm -f $BASISLOGROTATE/lb$LB/$LOGROTATEFILE.old
echo "kopieer van nieuwe logrotated file naar server"
cp $BASISLOGROTATE/lb$LB/$LOGROTATEFILE $LOGROTATECONFIGDIR/$LOGROTATEFILE
 
 
 
 
#php
echo "kopieeren van php.ini naar $PHPCLI"
cp $BASISPHP/php.ini $PHPCLI
 
echo "kopieeren van php.ini naar $PHPCGI"
cp $BASISPHP/php.ini $PHPCGI
 
echo "kopieeren van php.ini naar $PHPAPACHE2"
cp $BASISPHP/php.ini $PHPAPACHE2
 
# Iplist
if [ -e $IPLISTBASIS ] ; then
        if [ ! -e $IPLISTLOCAL/ ] ; then
                mkdir $IPLISTLOCAL
        fi
        echo "kopieeren IPlist uit $IPLISTBASIS naar $IPLISTLOCAL"
        cp $IPLISTBASIS/* $IPLISTLOCAL/
fi
 
 
 
 
echo "Apache2 stoppen, Apache2 sites uitschakelen, nieuwe configs kopieeren, site activeren apache2 herstarten"


cd $APACHE2CONFIGDIR
cd $APACHE2CONFIGDIR
service apache2 stop
service apache2 stop
a2dissite *
a2dissite *
mv * $BACKUPDIR
mv * $BACKUPDIR/
cp $BASISCONFIG/lb$LB/* .
cp $BASISCONFIG/lb$LB/* .
a2ensite *
a2ensite *
service apache2 start
service apache2 start
</pre>
</pre>

Latest revision as of 12:15, 15 September 2016

doel

Dit script zorgt ervoor dat de configuraties van webservers gelijk worden getrokken

config files

De config files staan in de volgende dir /usr/local/hobbynet/apache2conf/html
Vervang 'html' door de naam van het cluster, bijvoorbeeld 'php-joomla' dus zonder -lbx

config files synchroniseren

Om de config files te synchroniseren draai je op scripting het script /usr/local/hobbynet/bin/sync_html
Vervang 'html' door de naam van het cluster, bijvoorbeeld 'php-joomla' dus zonder -lbx

scripting

op server scripting

Op de server scripting wordt het script /usr/local/hobbynet/bin/sync_* aangeroepen.
Deze start op beide servers in het cluster het script /usr/local/hobbynet/local/getapacheconf

#!/bin/bash
echo syncing html-lb1
ssh html-lb1-int /usr/local/hobbynet/local/getapacheconf
echo synching html-lb2
ssh html-lb2-int /usr/local/hobbynet/local/getapacheconf

locale scripting op webserver

Dit script zorgt ervoor dat lb* in de config file wordt vervangen door lb1 of lb2, afhankelijk van de waarde in het script.
Omdat dit script server specifiek is staat deze lokaal op de server, in de map /usr/local/hobbynet/local/getapacheconf.
Nadat alle sites zijn uitgeschakeld worden de huidige website files weg gebackup naar /usr/local/hobbynet/local/backup.
Hierna worden alle files (website) die in de configdir staan geactiveerd.
Wil je een site uitschakelen dan verplaats je de website configfile naar de map 'uitgeschakeld'.
Daarnaast wordt er de php.ini die in de php directory staat naar de server gekopieerd
Daarnasst wordt ook de logrotated config op zelfde manier verspreid naar beide servers

#!/bin/bash
# CLUSTER speciefiek
# Naam van directory waar cluster inzit
CLUSTERDIR=php54
#NR van loadbalanced server LB1 = 1 LB2 = 2 etc
LB=1
# Standaard variabelen
BASISCONFIG=/usr/local/hobbynet/apache2conf/$CLUSTERDIR

#apache
APACHE2=/etc/apache2
APACHE2CONFIGDIR=$APACHE2/sites-available
# backup dir
BACKUPDIR=/usr/local/hobbynet/local/backup
#logrotated
BASISLOGROTATE=$BASISCONFIG/logrotate
LOGROTATECONFIGDIR=/etc/logrotate.d
LOGROTATEFILE=apache2
#php
BASISPHP=$BASISCONFIG/php
PHPCLI=/etc/php5/cli/php.ini
PHPCGI=/etc/php5/cgi/php.ini
PHPAPACHE2=/etc/php5/apache2/php.ini
PHPCONFD=/etc/php5/conf.d
#IPlists
IPLISTBASIS=/usr/local/hobbynet/apache2conf/iplist
IPLISTLOCAL=/usr/local/hobbynet/iplists


#apache2 configuratie
echo "bezig met aanpassen van apache configuratie"
cd  $BASISCONFIG/lb$LB
rm $BASISCONFIG/lb$LB/*
find $BASISCONFIG -maxdepth 1 -type f -exec cp {} $BASISCONFIG/lb$LB/ \;
for fl in *; do
 mv $fl $fl.old
 sed 's/lb\*/lb'$LB/g $fl.old > $fl
 rm -f $fl.old
done

#Logrotate
echo "bezig met aanpassen van logrotate configuratie"
cd $BASISLOGROTATE/lb$LB
rm $BASISLOGROTATE/lb$LB/*
cp $BASISLOGROTATE/$LOGROTATEFILE $BASISLOGROTATE/lb$LB/$LOGROTATEFILE >/dev/null
mv $BASISLOGROTATE/lb$LB/$LOGROTATEFILE $BASISLOGROTATE/lb$LB/$LOGROTATEFILE.old
sed 's/lb\*/lb'$LB/g $BASISLOGROTATE/lb$LB/$LOGROTATEFILE.old > $BASISLOGROTATE/lb$LB/$LOGROTATEFILE
rm -f $BASISLOGROTATE/lb$LB/$LOGROTATEFILE.old
echo "kopieer van nieuwe logrotated file naar server"
cp $BASISLOGROTATE/lb$LB/$LOGROTATEFILE $LOGROTATECONFIGDIR/$LOGROTATEFILE




#php
echo "kopieeren van php.ini naar $PHPCLI"
cp $BASISPHP/php.ini $PHPCLI

echo "kopieeren van php.ini naar $PHPCGI"
cp $BASISPHP/php.ini $PHPCGI

echo "kopieeren van php.ini naar $PHPAPACHE2"
cp $BASISPHP/php.ini $PHPAPACHE2

# Iplist
if [ -e $IPLISTBASIS ] ; then
        if [ ! -e $IPLISTLOCAL/ ] ; then
                mkdir $IPLISTLOCAL
        fi
        echo "kopieeren IPlist uit $IPLISTBASIS naar $IPLISTLOCAL"
        cp $IPLISTBASIS/* $IPLISTLOCAL/
fi




echo "Apache2 stoppen, Apache2 sites uitschakelen, nieuwe configs kopieeren, site activeren apache2 herstarten"

cd $APACHE2CONFIGDIR
service apache2 stop
a2dissite *
mv * $BACKUPDIR/
cp $BASISCONFIG/lb$LB/* .
a2ensite *
service apache2 start