Kopia lustrzana serwera WWW

Transkrypt

Kopia lustrzana serwera WWW
Linuxwbiznesie - linux w biznesie, linux w firmie
Kopia lustrzana serwera WWW
Autor: Administrator
24.05.2006.
W artykule tym pokaże, jak wykonać kopię lustrzaną naszego serwera WWW, tak aby serwer lustrzany
mógł przejąć zadania głównego na wypadek awarii. W tym celu użyję narzędzia rsync, uruchamianego w
CRONie co kilka minut. Pozwoli to na automatyczne wykonywanie kopii. rsync jest narzędziem, które
przesyła pliki i katalogi, przy czym jest o tyle użyteczny iż nie przesyła wszystkiego lecz tylko zmiany od
ostatniego transferu. Dodatkowym atutem rsynca jest iż zachowuje prawa i właścicieli kopiowanych
plików/katalogów. Zatem idealnie nadaje się do robienia kopii lustrzanych.
Strumień danych generowany przez rsync będziemy tunelować w SSH, co podniesie znacznie
bezpieczeństwo transmisji. Takie rozwiązanie jest o tyle wygodne, że nie musimy dodatkowo na firewallu
otwierać dodatkowego portu dla rsync, wystarczy ten dla SSH (22). Pewnym problemem jest to iż SSH,
wymaga podania hasła przez użytkownika, co uniemożliwiało by realizację tego zadania w CRONie.
Rozwiązaniem jest utworzenie kluczy publicznych na serwerze źródłowym i lustrzanym co zlikwiduje
pytanie SSH o podanie hasła, a o to właśnie nam chodzi. Oznaczmy jako serwer źródłowy serwer
server.example.com. Katalog /var/www z tego serwera ma być kopiowany do analogicznego na serwerze
lustrzanym mirror.example.com
1. Instalacja rsync Często narzędzie to jest instalowane z systemem, ale gdyby go nie było to trzeba
zainstalować na obydwu serwerach. Np. w Ubuntu poleceniem: apt-get install rsync
2. Tworzymy specjalnego użytkownika na serwerze źródłowym Użytkownik (someuser) ten będzie
wykorzystywany przez rsync do robienia kopii katalogu /var/www, zatem nasz użytkownik musi mieć do
niego prawa odczytu. Wpisujemy zatem: useradd -d /home/someuser -m -s /bin/bash someuser i
zmieniamy hasło: passwd someuser
3. Test rsync Możemy już przeprowadzić próbę ręcznego zrobienia kopii. Wpisujemy w konsoli: rsync avz -e ssh [email protected]:/var/www/ /var/www/ i powinniśmy ujrzeć:
The authenticity of host 'server1.example.com (192.168.0.100)' can't be established.
RSA key fingerprint is 32:e5:79:8e:5f:5a:25:a9:f1:0d:ef:be:5b:a6:a6:23.
Are you sure you want to continue connecting (yes/no)? jak więc widać tunelujemy w SSH. Wpisujemy
yes i w katalogu /var/www na mirror.example.com robi się kopia katalogu /var/www z
server.example.com
4. Tworzenie kluczy na mirror.example.com Teraz możemy przystąpić do tworzenia pary kluczy
prywatnych/publicznych na mirror.example.com Jako root wpisujemy: mkdir /root/rsync
ssh-keygen -t dsa -b 2048 -f /root/rsync/mirror-rsync-key Powinieneś ujrzeć:
Generating public/private dsa key pair.
Enter passphrase (empty for no passphrase): [press enter here]
Enter same passphrase again: [press enter here]
Your identification has been saved in /root/cron/mirror-rsync-key.
Your public key has been saved in /root/cron/mirror-rsync-key.pub.
The key fingerprint is:
68:95:35:44:91:f1:45:a4:af:3f:69:2a:ea:c5:4e:d7 root@mirror Teraz ten klucz należy przekopiować na
server.example.com. Jako root wpisujemy: scp/root/rsync/mirror-rsync-key.pub
[email protected]:/home/someuser/ Klucz utworzony na serwerze lustrzanym powinien
się pojawić w katalogu /home/someuser na serwerze źródłowym.
5. Konfiguracja serwera źródłowego Przechodzimy na serwer źródłowy, jako someuser (!) i wpisujemy:
mkdir ~/.ssh
chmod 700 ~/.ssh
mv ~/mirror-rsync-key.pub ~/.ssh/
cd ~/.ssh
touch authorized_keys
chmod 600 authorized_keys
cat mirror-rsync-key.pub >> authorized_keys te operacje dopisały zawartość mirror-rsync-key.pub do
/home/someuser/.ssh/authorized_keys. Chcielibyśmy aby połączenia z mirror.example.com mogły
używać tylko rsync zatem na początku dodajemy linię: /home/someuser/.ssh/authorized_keys
command = "/home/someuser/rsync/checkrsync", from="mirror.example.com", no-port-forwarding,noX11-forwarding,no-pty W kolejnym kroku tworzymy skrypt /home/someuser/rsync/checkrsync, który
będzie odrzucał inne operacje z mirror.example.com, niż rsync. Jego zawartość to: #!/bin/sh
case "$SSH_ORIGINAL_COMMAND" in
*\&*)
echo "Rejected"
;;
*\(*)
http://www.linuxwbiznesie.pl
Kreator PDF
Utworzono 4 March, 2017, 09:38
Linuxwbiznesie - linux w biznesie, linux w firmie
*\{*)
*\;*)
echo "Rejected"
;;
echo "Rejected"
;;
echo "Rejected"
;;
*\<*)
echo "Rejected"
;;
*\`*)
echo "Rejected"
;;
rsync\ --server*)
$SSH_ORIGINAL_COMMAND
;;
*)
echo "Rejected"
;;
esac Nadajemy mu prawo 700.
6. Testowanie rsynca na mirror.example.com Teraz sprawdzimy czy z mirror.example.com możemy
zrobić kopię katalogu /var/www z serwera źródłowego, nie będąc pytanym o hasło. Jako root wpisujemy:
rsync -avz --delete --exclude=**/stats --exclude=**/error --exclude=**/files/pictures -e "ssh -i
/root/rsync/mirror-rsync-key" [email protected]:/var/www/ /var/www/ Użyte opcje
oznaczają:
- delete - pliki usunięte na serwerze źródłowym mają też być usunięte na lustrzanym, - exclude - wskazuje maskę, dla plików/katalogów, które nie powinny być kopiowane
Powinieneś ujrzeć receiving file list ... done
sent 71 bytes received 643 bytes 476.00 bytes/sec
total size is 64657 speedup is 90.56 bez prośby o hasło !
7. Zadanie w CRONie dodajemy wpis do tablic CRONa, który co 5 minut będzie robił kopię lustrzaną.
Wpisujemy jako root: crontab -e i potem:
*/5 * * * * /usr/bin/rsync -azq --delete --exclude=**/stats --exclude=**/ error -exclude=**/files/pictures -e "ssh -i /root/rsync/mirror-rsync-key"
[email protected]:/var/www/ /var/www/
http://www.linuxwbiznesie.pl
Kreator PDF
Utworzono 4 March, 2017, 09:38