Saturday, October 12, 2013

Đồng bộ hóa dữ liệu giữa hai Server Ubuntu 11.10 sử dụng Unison

Giới thiệu :

Unison là một công cụ đồng bộ hóa tập tin tương tự như  Rsync, nhưng sự khác biệt lớn là nó đồng bộ hóa thay theo kiểu Master-Master, nghĩa là: các tập tin thay đổi trên server1 thì server2  sẽ thay đổi theo và ngược lại .

Chuẩn bị :


2 server chạy ubuntu server 11.10 với hostname và IP từng Server như sau :

Kgp-A.vn   200.200.200.134
Kgp-B.vn  200.200.200.135


Và tôi muốn đồng bộ thư mục chứa dữ liệu cần đồng bộ là  /kenhgiaiphap  ở 2 server ( tạo thư mục này bên 2 server ) .

Thực Hiện :


Install Unison và SSH cho 2 server 

# apt-get install unison openssh-server ssh

Tạo private/public key trên server  kgp-A.vn

# ssh-keygen -t dsa

 
Sau đó copy public key của server  kgp-A.vn đến server  kgp-B.vn 
 
# ssh-copy-id -i $HOME/.ssh/id_dsa.pub  root@200.200.200.135


Qua server  kgp-B.vn kiểm tar xem public key của server  kgp-A.vn chuyển qua chưa 

# cat $HOME/.ssh/authorized_keys

 
Chạy Unison

Chạy Unison lần đầu tiên để đồng bộ thư mục /kenhgiaiphap của 2 server .

Bên  gkp-A.vn chạy lệnh sau:

(Trước khi chạy ta tạo vài file hay thư mục nào đó trong thư mục /kenhgiaiphap bên 2 server để test thử )

# unison /kenhgiaiphap/ ssh://200.200.200.135//kenhgiaiphap
 

Qua 2  Server ta thấy dữ liệu đã đồng bộ .
 

Tạo 1 Script tự động trả lời các thông số ,các câu hỏi lúc ta chạy lệnh để đồng bộ 
( Thực hiện bên server  kgp-A.vn )

#  vi /root/.unison/default.prf

root = /kenhgiaiphap
root = ssh://200.200.200.135//kenhgiaiphap
auto=true
batch=true


Với mục đích là đồng bộ thư mục trên 2 server cơ bản thì với các thông số trong file/root/.unison/default.prf  như trên là đủ .

Nếu muốn thêm các option khác thì các bạn tìm hiểu thêm qua lệnh : man  unison

Đến đây thì chúng ta có thể chạy Script trên bằng lệnh unison  ko cần thông số gì hết để test thử .

Và tạo Crontab cho hệ thống tự đồng bộ theo thời gian mỗi 5 phút .

# crontab –e

 */5 * * * * /usr/bin/unison &> /dev/null

 

Phan Trọng Hiếu ( Theo Howtoforge )