Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
138,83 KB
Nội dung
Đồng bộ dữ liệu với mô hình dropbox Dropbox là dịch vụ chia sẻ file trực tuyến, cho phép người dùng lưu trữ và chia sẻ dữ liệu với dung lượng miễn phí 2GB. Điểm đặc biệt của dropbox là khả năng đồng bộ dữ liệu thời gian thực, theo đó, ta chỉ định một directory cụ thể trên máy tính kết nối với dropbox client, dữ liệu sẽ được đồng bộ hóa lên dropbox server bất cứ khi nào có kết nối Internet. Bài viết này hướng dẫn bạn xây dựng một mô hình server – client tương tự dropbox, với sự kết hợp của rsync server và rsync client (lsyncd). Rsync: là một application được viết dành cho các hệ điều hành Unix và Unix likes, cho phép đồng bộ hóa dữ liệu từ một directory này sang một directory khác, hoặc giữa dữ liệu ở máy tính trạm sang một máy tính khác trong một network, hay internet với nhiều options khác nhau. (Wikipedia) Ở chế độ daemon mode, rsync lắng nghe trên port 873, chờ đợi kết nối từ rsync client thông qua remote shell như ssh hay rsh Bài viết này dựa vào daemon mode của rsync để thiết lập một rsync server. Lsyncd sử dụng rsync để đồng bộ hóa một hoặc nhiều directory với máy chủ rsync. Lsyncd có thể đồng bộ hóa dữ liệu theo thời gian thực thông qua một subsystem process của Unix là inotify. Inotify có chứ năng giám sát sự thay đổi của dữ liệu: tăng giảm dung lượng, sửa xóa Khi dữ liệu có bất cứ sự thay đổi nào, lsyncd sẽ dựa vào inotify event để đồng bộ hóa dữ liệu với rsync server. (Lsyncd homepage) Mục tiêu của bài viết là cung cấp một giải pháp back up trong suốt với người dùng cuối, đối với những dạng dữ liệu vừa phải (không quá lớn). Sử dụng rsync là một cách để giảm thiểu tối đa dữ liệu truyền qua network dùng để back up. Ta chỉ đồng bộ những thay đổi. Với cách này, ta cũng có thể backup cơ sở dữ liệu, dữ liệu của một web server đến một máy chủ ở xa, cung cấp khả năng mirroring, backup một cách kịp thời nhất. Cài đặt: Cài đặt: Rsync Server: Rsync có sẵn trên hầu hết các hệ điều hành Linux, mặc định rsync là một công cụ như ssh hoặc scp. Để cài đặt rsync server cần làm các bước sau. Distro mà tôi sử dụng là Debian Lenny, các bước cài đặt hầu như tương tự trên bất kì distro Linux nào khác: Tạo user: debian:~# adduser hungnv Sao chép file cấu hình mẫu của rsync vào thư mục /etc/ debian:~# cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/ Sửa file cấu hình để tạo shared module debian:~# cat /etc/xinetd.d/rsync service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = daemon log_on_failure += USERID } Các option ở trên hầu như là mặc định, trừ uid, gid và read only option. Vì ta chỉ muốn user có username hungnv được phép đồng bộ file ở /home/hungnv/sync nên sử dụng gid và gid này. Tôi sử dụng xinetd (superserver) để quản lí rsync daemon. Sở dĩ xinetd được gọi là superserver vì xinetd có thể hoạt động như một daemon lắng nghe trên tất cả các port của các dịch vụ liệt kê trong cấu hình của xinetd. Cài đặt xinetd: debian:~# aptitude install xinetd Tao và sửa chữ nội dung file rsync ở /etc/xinetd.d/rsync debian:~# cat /etc/xinetd.d/rsync service rsync { disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = daemon log_on_failure += USERID } Restart xinetd: debian:~# /etc/init.d/xinetd restart Stopping internet superserver: xinetd. Starting internet superserver: xinetd. Kiểm tra sự hoạt động của rsync: debian:~# netstat -ntl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN Kiểm tra module được share: debian:~# rsync localhost:: hungnv hungnv's private stuff Chuyển sang client: Cài đặt lsyncd, trong bài viết này tôi sử dụng gentoo, ở các distro khác bạn download source code của lsyncd tại link cung cấp trong bài viết. g3n2 ~ # echo "=app-admin/lsyncd-1.26" >> /etc/portage/package.keywords g3n2 ~ # emerge -av lsyncd Cấu hình: Do quá dài và chứa nhiều kí tự đặc biệt, nên bạn có thể xem ở đây http://osvn.pastebin.com/W6f3fQk1 Chú ý phần tag directory Phần source: là đường dẫn đến directory mà bạn muốn đồng bộ với server Phần target: là địa chỉ server và module đã tạo ra trước đó. Ở Server và client: setup authentication sử dụng public key: Client: gen key và copy key lên server: hungnv@g3n2 ~ $ ssh-keygen -t rsa -b 1024 hungnv@g3n2 ~ $ cat .ssh/id_dsa.pub |ssh 192.168.1.11 "cat - >> ~/.ssh/authorized_keys" hungnv@g3n2 ~ $ ssh 192.168.1.11 chmod 700 ~/.ssh hungnv@g3n2 ~ $ ssh 192.168.1.11 chmod 600 ~/.ssh/authorized_keys Kiểm tra bằng cách ssh 192.168.1.11 mà không bị hỏi password login, ta có thể tiếp tục bước cuối cùng. Kiểm tra kết nối đến lsync server: hungnv@g3n2 ~ $ rsync 192.168.1.11:: hungnv hungnv's private stuff Kiểm tra cấu hình lsyncd: hungnv@g3n2 ~ $ lsyncd –conf /etc/lsyncd.conf.xml –debug nếu có lỗi gì xảy ra, ta trở về sửa chữa file /etc/lsync.conf.xml, kiểm tra directory và quyền trên server. Khởi động lsycd: hungnv@g3n2 ~ $ sudo lsyncd Xem quá trình đồng bộ xảy ra view plaincopy to clipboardprint? 1. Sat Mar 27 22:53:18 2010: Starting up 2. Sat Mar 27 22:53:18 2010: watching /mnt/data/sync 3. Sat Mar 27 22:53:18 2010: found new directory: Terpinus in /mnt/data/s ync added on tosync stack. 4. Sat Mar 27 22:53:18 2010: found new directory: pydiction- 1.2 in vimdict added on tosync stack. 5. Sat Mar 27 22:53:18 2010: found new directory: vimdict in /mnt/data/sy nc added on tosync stack. 6. Sat Mar 27 22:53:18 2010: found new directory: squid in ftp-conf added on tosync stack. 7. Sat Mar 27 22:53:18 2010: found new directory: namespace in alchemist added on tosync stack. 8. Sat Mar 27 22:53:18 2010: found new directory: switchboard in alchemis t added on tosync stack. 9. Sat Mar 27 22:53:18 2010: found new directory: alchemist in ftp-conf added on tosync stack. 10. Sat Mar 27 22:53:18 2010: found new directory: templates in jabbe rd added on tosync stack. 11. Sat Mar 27 22:53:18 2010: found new directory: jabberd in ftp- conf added on tosync stack. 12. Sat Mar 27 22:53:18 2010: found new directory: policy in targeted added on tosync stack. 13. Sat Mar 27 22:53:18 2010: found new directory: files in contexts added on tosync stack. 14. Sat Mar 27 22:53:18 2010: found new directory: users in contexts - - added on tosync stack. 15. Sat Mar 27 22:53:18 2010: found new directory: contexts in target ed added on tosync stack. 16. Sat Mar 27 22:53:18 2010: found new directory: modules in previo us added on tosync stack. 17. Sat Mar 27 22:53:18 2010: found new directory: previous in modul es added on tosync stack. 18. Sat Mar 27 22:53:18 2010: found new directory: modules in active added on tosync stack. 19. Sat Mar 27 22:53:18 2010: found new directory: active in modules added on tosync stack. Sat Mar 27 22:53:18 2010: Starting up Sat Mar 27 22:53:18 2010: watching /mnt/data/sync Sat Mar 27 22:53:18 2010: found new directory: Terpinus in /mnt/data/sync added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: pydiction-1.2 in vimdict added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: vimdict in /mnt/data/sync added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: squid in ftp-conf added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: namespace in alchemist added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: switchboard in alchemist added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: alchemist in ftp-conf added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: templates in jabberd added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: jabberd in ftp-conf added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: policy in targeted added on tosync stack. Sat Mar 27 22:53:18 2010: found new directory: files in contexts added on tosync stack. [...]... trạng thái theo dõi (monitoring), bất cứ khi nào có sự thay đổi, lsyncd sẽ cập nhật sự thay đổi gần như tức thì Nếu lượng dữ liệu muốn backup lớn, thì công cụ trong bài viết này không phải là công cụ mà bạn cần, có nhiều giải pháp đáp ứng nhu cầu này tốt hơn Nên chia thời gian back up dữ liệu (lần đầu) giữa các máy client để tránh tình nghẽn trạng mạng xảy ra Lsync có thể hoạt động, sau đó dừng nếu có vấn . Đồng bộ dữ liệu với mô hình dropbox Dropbox là dịch vụ chia sẻ file trực tuyến, cho phép người dùng lưu trữ và chia sẻ dữ liệu với dung lượng miễn phí 2GB. Điểm đặc biệt của dropbox. dropbox là khả năng đồng bộ dữ liệu thời gian thực, theo đó, ta chỉ định một directory cụ thể trên máy tính kết nối với dropbox client, dữ liệu sẽ được đồng bộ hóa lên dropbox server bất cứ. năng giám sát sự thay đổi của dữ liệu: tăng giảm dung lượng, sửa xóa Khi dữ liệu có bất cứ sự thay đổi nào, lsyncd sẽ dựa vào inotify event để đồng bộ hóa dữ liệu với rsync server. (Lsyncd homepage)