Strona 1 z 2

rsync w trybie demona i xinet - synchronizacja danych na serwerach

: 20 kwietnia 2010, 14:47
autor: Bastian
Witam.
Mam następujący problem z rsync.

Serwer A posiada pliki, które trzeba przerzucić na serwer B. Są to kopie zapasowe danych. Chcę aby usługa rsync działała na serwerze B w trybie demona. Rsync na serwerze B ma się uruchamiać przez xinetd w momencie wywołania rsync na serwerze B. Cała operacja ma się odbyć bez proszenia o hasło z racji tego, że chcę wykorzystać to polecenie w skrypcie.

Konfiguracja usług na Serwer B:

/etc/rsync.conf:

Kod: Zaznacz cały

uid = nobody
gid = nobody
use chroot = no
max connections = 4
syslog facility = daemon
pid file = /var/run/rsyncd.pid

[ftp]
        path = /home/ftp
        comment = ftp area

#[cvs]
#        path = /data/cvs
#        comment = CVS repository (requires authentication)
#        auth users = tridge, susan
#        secrets file = /etc/rsyncd.secrets

[synskan]
    path = /home/lolek/.backupy
    comment = Backupy skanóow dokumentow z systemu raportowego
    auth users = lolek
    secrets file = /etc/rsyncd.secrets 
/etc/rsync.secrets

Kod: Zaznacz cały

lolek:haslo
/etc/xinetd.conf

Kod: Zaznacz cały

#
# /etc/xinetd.conf
#

defaults
{
        instances               = 60
        log_type                = SYSLOG authpriv
        log_on_success          = HOST PID
        log_on_failure          = HOST
        cps                     = 25 30
}

includedir /etc/xinetd.d

service rsync
{
#    flags = NAMEINARGS
    socket_type = stream
    protocol = tcp
    wait = no
    user = root
    server = /usr/bin/rsync
#    server_args = /usr/bin/rsync
    disable = no
}
Netstat wskazuje, że rsync na serwerze B nasłuchuje:

Kod: Zaznacz cały

netstat -le

Kod: Zaznacz cały

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode     
tcp        0      0 *:rsync                 *:*                     LISTEN      root       3672853    
tcp        0      0 *:netbios-ssn           *:*                     LISTEN      root       1127733    
tcp        0      0 *:www                   *:*                     LISTEN      root       4300       
tcp        0      0 *:ftp                   *:*                     LISTEN      ftp        4213       
tcp        0      0 *:ssh                   *:*                     LISTEN      root       1508584    
tcp        0      0 *:5432                  *:*                     LISTEN      user    1118361    
tcp        0      0 *:445                   *:*                     LISTEN      root       1127732    
udp        0      0 192.168.0.12:netbios-ns *:*                                 root       1127727    
udp        0      0 *:netbios-ns            *:*                                 root       1127724    
udp        0      0 192.168.0.1:netbios-dgm *:*                                 root       1127728    
udp        0      0 *:netbios-dgm           *:*                                 root       1127725    
udp   107864      0 *:bootpc                *:*                                 root       637        
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     1118363 /tmp/.s.PGSQL.5432
Na serwerze A polecenie:

Kod: Zaznacz cały

rsync -avz /sciezka/do/backupow adres.serwera.B::synskan
Po chwili mam komunikat:

Kod: Zaznacz cały

rsync: failed to connect to adres.serwera.B: Connection timed out (110)
rsync error: error in socket IO (code 10) at clientserver.c(104) [sender=2.6.9]
Dodatkowo na serwerze A mam plik z hasłem aby skorzystać przy tym poleceniu finalnie z opcji ,,--password-file'' i nie musieć ręcznie wpisywać.

Pytanie: gdzie jest błąd? Wszystkie usługi, chyba są dobrze skonfigurowane?

: 21 kwietnia 2010, 14:48
autor: Bastian
Nikt nie korzysta z rsync?

: 21 kwietnia 2010, 15:10
autor: lessmian2
Korzysta. Czemu konfigurujesz rsync z inetd? Nie lepiej przez SSH?

: 21 kwietnia 2010, 15:15
autor: Bastian
Nawet nie o to chodzi. Chodzi o to, że powinno działać a nie działa. Rozumiesz. Ambicja ;)

: 21 kwietnia 2010, 15:21
autor: lessmian2
Na obu serwerach są jednakowe wersje rsynca? Jakiś firewall nie blokuje ruchu? Możesz się połączyć telnetem z serwera A do serwera B na porcie 873?

: 21 kwietnia 2010, 16:54
autor: Bastian
lessmian2 pisze:Na obu serwerach są jednakowe wersje rsynca? Jakiś firewall nie blokuje ruchu? Możesz się połączyć telnetem z serwera A do serwera B na porcie 873?

Na serwerze A:

Kod: Zaznacz cały

rsync  version 2.6.9  protocol version 29
Na serwerze B:

Kod: Zaznacz cały

rsync  version 2.6.2  protocol version 28
Oba serwery są "gołe i wesołe" (na razie):

Serwer A:

Kod: Zaznacz cały

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination  
Serwer B:

Kod: Zaznacz cały

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination    
Próba połączenia telnetem z A na B kończy sie tak:

Kod: Zaznacz cały

user@serwerA:~$ telnet ip.ser.wera.a 873
Trying ip.ser.wera.a ...
i stoi

: 21 kwietnia 2010, 17:28
autor: lessmian2
To jeszcze lokalnie na serwerze B:

Kod: Zaznacz cały

telnet localhost 873

: 21 kwietnia 2010, 21:20
autor: Bastian
lessmian2 pisze:To jeszcze lokalnie na serwerze B:

Kod: Zaznacz cały

telnet localhost 873

Kod: Zaznacz cały

[user@serwerB ~]$ telnet 127.0.0.1 873
Trying 127.0.0.1...

i stoi

: 21 kwietnia 2010, 21:50
autor: lessmian2
Wygląda jakby w ogóle nie nasłuchiwał. Restartowałeś xinetd? Dodaj jakieś logowanie do xinetd (log_on_success, log_on_failure), może będzie coś ciekawego.

: 04 maja 2010, 00:20
autor: Bastian
Przepraszam, że odzywam się dopiero teraz, ale miałem dużo innych rzeczy na głowie. A więc, odpowiadając na twoje pytania.

Tak, restartowałem xinetd, a jeąli chodzi o logi to domyślnie w xinedt mam:

Kod: Zaznacz cały

log_type                = SYSLOG authpriv
        log_on_success          = HOST PID
        log_on_failure          = HOST
I zgodnie z syslogiem powinno się zapisywać do /var/log/messages, ale ten plik w ogóle mam pusty (co dziwne).

Kod: Zaznacz cały

# /etc/syslog.conf                                                                                                                                                  
#                                                                                                                                                                   

*.emerg                                         *
*.err                                           /var/log/errors
kern.*                                          /var/log/kernel
authpriv.*;auth.*                               /var/log/auth  
mail.*                                          /var/log/mail  
*.info;*.!err;authpriv,auth,mail,kern.none,daemon       /var/log/messages

# Log everything to vc12
*.*                                             /dev/tty12

# End of file
Mam jeszcze jedno pytanie. Zgodnie z działaniem xinedt to tylko on powinien nasłuchiwać, no nie? W momencie jak przyjdzie żądanie z rsynca powinien odpalić dopiero demona rsync.
Teraz u mnie na serwerze B nasłuchuje rsync:

Kod: Zaznacz cały

assword:
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode
tcp        0      0 *:rsync                 *:*                     LISTEN      root       3684696
tcp        0      0 *:netbios-ssn           *:*                     LISTEN      root       3834970
tcp        0      0 *:www                   *:*                     LISTEN      root       4300
tcp        0      0 *:ftp                   *:*                     LISTEN      ftp        4213
tcp        0      0 *:ssh                   *:*                     LISTEN      root       1508584
tcp        0      0 *:5432                  *:*                     LISTEN      user    1118361
tcp        0      0 *:445                   *:*                     LISTEN      root       3834969
udp        0      0 192.168.0.12:netbios-ns *:*                                 root       3834965
udp        0      0 *:netbios-ns            *:*                                 root       3834962
udp        0      0 192.168.0.1:netbios-dgm *:*                                 root       3834966
udp        0      0 *:netbios-dgm           *:*                                 root       3834963
udp   107864      0 *:bootpc                *:*                                 root       637
Active UNIX domain sockets (only servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  2      [ ACC ]     STREAM     LISTENING     1118363 /tmp/.s.PGSQL.5432
który to pojawia się w momencie uruchomienia xinedt. Dlaczego?