-
csync2- synchronizacja plików w klastrze
Często mówi się o klastrach wysoko-dostępnych (HA). Jest wiele takich rozwiązań, zarówno płatnych jak i bezpłatnych, prostych oraz skomplikowanych. Dzisiaj skupię się na niezwykle prostym, a zarazem skutecznym narzędziu, które dostępne jest nieodpłatnie. Mam na myśli csync-a w wersji 2. Zapewnia on zautomatyzowaną synchronizację plików pomiędzy serwerami z użyciem rsync-a.
Do jego instalacji najlepiej użyć repozytorium „EPEL”. Zakładam, że jest ono skonfigurowane i idę dalej:
yum install csync2
Na jednym z komputerów w klastrze wydajemy poniższe polecenia:
csync2 -k /etc/csync2/csync2.key
openssl genrsa -out /etc/csync2/csync2_ssl_key.pem 2048
openssl req -batch -new -key /etc/csync2/csync2_ssl_key.pem -out /etc/csync2/csync2_ssl_cert.csr
openssl x509 -req -days 3600 -in /etc/csync2/csync2_ssl_cert.csr -signkey /etc/csync2/csync2_ssl_key.pem -out /etc/csync2/csync2_ssl_cert.pem
założenia:
– elementami klastra są: „srv1.domena.pl” i „srv2.domena.pl”
– synchronizowane elementy: „/var/www/html/” i „/www/”Przystąpmy do edycji pliku „/etc/csync2/csync2.cfg”
group centos-cluster
{
host srv1.domena.pl;
host srv2.domena.pl;key /etc/csync2/csync2.key;
include /var/www/html/;
include /www/;
exclude *~ .*;backup-directory /var/backups/csync2;
backup-generations 3;
auto none;
}Następnie musimy przegrać plik konfiguracyjny oraz klucz i certyfikat na inne komputery. Najprościej zrobić to tak:
scp /etc/csync2/* drugi.kom.pl:/etc/csync2
Poniższe polecenia wykonujemy na wszystkich elementach „klastra”.
vim "/etc/xinetd.d/csync2"
Zawartość podanego pliku powinna być jak poniżej:
service csync2
{
flags = REUSE
socket_type = stream
wait = no
user = root
group = root
server = /usr/sbin/csync2
server_args = -i
port = 30865
type = UNLISTED
#log_on_failure += USERID
disable = no
only_from = 89.46.71.137 81.3.236.217 # IP serwerów w klastrze (własnego IP nie trzeba podawać)
}/etc/init.d/xinetd start
/sbin/chkconfig xinetd on
Musimy zapewnić „swobodną” komunikację pomiędzy elementami klastra, np. poprzez umieszczenie kluczy publicznych ssh w plikach „authorized_keys” na serwerach w klastrze. Należy pamiętać o otwarciu portu dla ssh oraz tcp 30865 dla wszystkich elementów klastra.
uruchomienie synchronizacji
csync2 -xv
Powyższe polecenie dobrze jest dodać do crona, podobnie jak „csync2 -M”, dzięki któremu możemy sprawdzić, czy pliki na wszystkich serwerach są identyczne.
W razie wykrycia błędu synchronizacji, trzeba ręcznie wymusić na którym serwerze plik jet aktualny.
chary srv1.domena.pl srv2.domena.pl /var/www/html/29-43.pdf
W takim wypadku uznajemy np., że aktualny jest ten plik na pierwszym serwerze. Wydajemy na jego konsoli następujące polecenie:
csync2 -f /var/www/owncloud/29-43.pdf
W razie problemów, proszę pisać na forum, w komentarzach lub zajrzeć na man-a csync-a 2.
man csync2