Uwaga: Oryginał jest nowszy niż to tłumaczenie.
Konfiguracja serwera push
Konfigurowanie serwera w metodzie push składa się z dwóch
podstawowych kroków: skonfigurowania dostępu przez rsync (jak dla normalnego
tworzenia serwera lustrzanego, typu pull
) oraz skonfigurowania
mechanizmu spustowego
ssh (aby umożliwić inicjowanie tworzenia
serwera lustrzanego metodą push).
(Aby uzyskać więcej informacji na temat serwerów push przeczytaj wyjaśnienie tworzenia serwerów lustrzanych metodą push.)
Konfiguracja rsync
Zainstaluj rsync 2.1.1 lub nowszy. Jeśli Twój serwer
używa systemu Debian, po prostu zainstaluj najnowszą wersję pakietu
rsync.
Utwórz plik rsyncd.conf i wpisz do niego taką (lub
zbliżoną) zawartość:
uid = nobody gid = nogroup max connections = 25 socket options = SO_KEEPALIVE [debian] path = /srv/debian/mirror comment = The Debian Archive (~250 GB) auth users = authorized_account1,authorized_account2,authorized_accountN read only = true secrets file = /etc/rsyncd/debian.secrets
Dodaj wpis dla każdego serwera, z którym się łączysz metodą push w
pliku /etc/rsyncd/debian.secrets:
authorized_account1:a_password authorized_account2:another_password authorized_accountN:password
W ten sposób dałeś serwerom podrzędnym dostęp do swojego komputera.
Prawdopodobnie będziesz chciał uruchamiać demona rsync z inetd. Aby
to osiągnąć, musisz dodać usługę rsync do pliku
/etc/services (jeśli jeszcze jej tam nie ma) w następujący
sposób:
rsync 873/tcp
Aby uaktywnić demona przez inetd, dodaj następujący wpis do pliku
/etc/inetd.conf:
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
(Pamiętaj, aby wysłać sygnał HUP do inetd, aby poinformować go, żeby odczytał ponownie swój plik konfiguracyjny po jego modyfikacji.)
Konfiguracja mechanizmu spustowego
ssh
Utwórz nowy klucz ssh dla konta, którego używasz do tworzenia obrazu lustrzanego Debiana. Upewnij się, że nie nadpiszesz swojego poprzedniego klucza ssh poprzez dodanie opcji -f, na przykład:
ssh-keygen -f ~/.ssh/identity.mysite
Upewnij się, że nowy klucz publiczny (~/.ssh/identity.mysite.pub) zawiera na początku następujący wpis, gdzie IPADDRESS to IP nadrzędnego serwera:
no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="~/bin/ftpsync",from="IPADDRESS" &"
Musisz utworzyć skrypt, który będzie się kontaktował z serwerami
podrzędnymi. Utwórz plik o nazwie signal i następującej
zawartości:
#!/bin/sh # Ten skrypt jest wywoływany, aby poinformować zdalny komputer, że # nadszedł czas na zsynchronizowanie archiwum. echo Signalling $1 ssh -o"BatchMode yes" -o"user $2" "$1" -i $HOME/.ssh/identity.mysite sleep 1
Skrypt ten zaloguje się na zdalnym komputerze używając
specjalnego klucza ssh, który utworzyłeś powyżej, przy założeniu, że każdy
administrator mirrora podrzędnego doda ten klucz do pliku
~/.ssh/authorized_keys (zamieniając ftpsync
na komendę powodującą
rozpoczęcie procesu synchronizacji).
Sam skrypt nie robi niczego użytecznego na zdalnym komputerze, zostanie
uruchomione polecenie określone w kluczu.
Aby zawiadomić serwery lustrzane, musisz dodać linię ./signal
<site> <username> po zakończeniu procesu synchronizacji
Twojego serwera. Tak więc, kiedy tylko zakończy się synchronizacja z
serwerem nadrzędnym, rozpoczyna się synchronizacja serwerów zależnych
od Twojego.
Możesz umieścić te polecenia albo na końcu pliku ftpsync.conf
albo, jeśli to Ci bardziej odpowiada, w nowym skrypcie, wywoływanym
przez anonftpsync, na przykład:
#!/bin/sh # Ten skrypt jest wywoływany, aby powiadomić podrzędne # serwery lustrzane. ./signal some.other.site archvsync ./signal and.another.site othersiteaccount
Jeśli będziesz miał z tym jakiekolwiek problemy, skontaktuj się z nami.
