Cara Menyinkronkan Dua Server Web/Situs Web Apache Menggunakan Rsync


Ada begitu banyak tutorial yang tersedia di web untuk mencerminkan atau mengambil cadangan file web Anda dengan metode berbeda, di sini saya membuat artikel ini untuk referensi saya di masa mendatang dan di sini saya akan menggunakan perintah Linux yang sangat sederhana dan serbaguna untuk membuat cadangan situs web Anda. Tutorial ini akan membantu Anda menyinkronkan data antara dua server web Anda dengan “Rsync“.

Tujuan membuat cermin Server Web Anda dengan Rsync adalah jika server web utama Anda gagal, server cadangan Anda dapat mengambil alih untuk mengurangi waktu henti situs web Anda. Cara membuat cadangan server web ini sangat baik dan efektif untuk bisnis web skala kecil dan menengah.

Keuntungan Menyinkronkan Server Web

Keuntungan utama membuat cadangan server web dengan rsync adalah sebagai berikut:

  1. Rsync hanya menyinkronkan byte dan blok data yang telah berubah.
  2. Rsync memiliki kemampuan untuk memeriksa dan menghapus file dan direktori di server cadangan yang telah dihapus dari server web utama.
  3. Ini menangani izin, kepemilikan, dan atribut khusus saat menyalin data dari jarak jauh.
  4. Ini juga mendukung protokol SSH untuk mentransfer data secara terenkripsi sehingga Anda yakin bahwa semua data aman.
  5. Rsync menggunakan metode kompresi dan dekompresi saat mentransfer data yang menghabiskan lebih sedikit bandwidth.

Cara Menyinkronkan Dua Server Web Apache

Mari lanjutkan dengan menyiapkan rsync untuk membuat mirror server web Anda. Di sini, saya akan menggunakan dua server.

Server Utama
  1. Alamat IP: 192.168.0.100
  2. Nama host: webserver.example.com
Server Cadangan
  1. Alamat IP: 192.168.0.101
  2. Nama host: backup.example.com

Langkah 1: Instal Alat Rsync

Dalam hal ini, data server web webserver.example.com akan dicerminkan di backup.example.com. Dan untuk melakukannya terlebih dahulu, kita perlu menginstal Rsync di kedua server dengan bantuan perintah berikut.

[root@tecmint]# yum install rsync        [On Red Hat based systems]
[root@tecmint]# apt-get install rsync    [On Debian based systems]

Langkah 2: Buat Pengguna untuk menjalankan Rsync

Kita dapat mengatur rsync dengan pengguna root, tetapi untuk alasan keamanan, Anda dapat membuat pengguna yang tidak memiliki hak istimewa di server web utama yaitu webserver.example.com untuk menjalankan rsync.

[root@tecmint]# useradd tecmint
[root@tecmint]# passwd tecmint

Di sini saya telah membuat pengguna “tecmint” dan menetapkan kata sandi untuk pengguna.

Langkah 3: Uji Pengaturan Rsync

Saatnya menguji pengaturan rsync Anda di server cadangan Anda (yaitu backup.example.com) dan untuk melakukannya, ketik perintah berikut.

[root@backup www]# rsync -avzhe ssh [email :/var/www/ /var/www
Contoh Keluaran
[email 's password:

receiving incremental file list
sent 128 bytes  received 32.67K bytes  5.96K bytes/sec
total size is 12.78M  speedup is 389.70

Anda dapat melihat bahwa rsync Anda sekarang berfungsi dengan baik dan menyinkronkan data. Saya telah menggunakan “/var/www” untuk mentransfer; Anda dapat mengubah lokasi folder sesuai kebutuhan Anda.

Langkah 4: Otomatiskan Sinkronisasi dengan Login Tanpa Kata Sandi SSH

Sekarang, kita sudah selesai dengan penyiapan rsync dan sekarang saatnya menyiapkan cron untuk rsync. Karena kita akan menggunakan rsync dengan protokol SSH, ssh akan meminta otentikasi dan jika kita tidak memberikan kata sandi ke cron maka itu tidak akan berfungsi. Agar cron dapat bekerja dengan lancar, kita perlu menyiapkan login ssh tanpa kata sandi untuk rsync.

Dalam contoh ini, saya melakukannya sebagai root untuk mempertahankan kepemilikan file juga, Anda juga dapat melakukannya untuk pengguna alternatif.

Pertama, kita akan membuat kunci publik dan pribadi dengan perintah berikut di server cadangan (yaitu backup.example.com).

[root@backup]# ssh-keygen -t rsa -b 2048

Saat Anda memasukkan perintah ini, jangan berikan frasa sandi dan klik enter untuk Kosongkan frasa sandi sehingga rsync cron tidak memerlukan kata sandi apa pun untuk menyinkronkan data.

Contoh Keluaran
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
9a:33:a9:5d:f4:e1:41:26:57:d0:9a:68:5b:37:9c:23 [email 
The key's randomart image is:
+--[ RSA 2048]----+
|          .o.    |
|           ..    |
|        ..++ .   |
|        o=E *    |
|       .Sooo o   |
|       =.o o     |
|      * . o      |
|     o +         |
|    . .          |
+-----------------+

Sekarang, kunci Publik dan Pribadi kami telah dibuat dan kami harus membaginya dengan server utama sehingga server web utama akan mengenali mesin cadangan ini dan mengizinkannya untuk masuk. tanpa menanyakan kata sandi apa pun saat menyinkronkan data.

[root@backup html]# ssh-copy-id -i /root/.ssh/id_rsa.pub [email 

Sekarang coba masuk ke mesin, dengan “ssh '[email '”, dan periksa .ssh/authorized_keys.

[root@backup html]# [email 

Sekarang, kita selesai dengan berbagi kunci. Untuk mengetahui lebih mendalam tentang Login tanpa kata sandi SSH, Anda dapat membaca artikel kami tentangnya.

  1. Login Tanpa Kata Sandi SSH dalam 5 Langkah Mudah

Langkah 5: Jadwalkan Cron Untuk Mengotomatiskan Sinkronisasi

Mari siapkan cron untuk ini. Untuk setup cron, silahkan buka file crontab dengan perintah berikut.

[root@backup ~]# crontab –e

Ini akan membuka file /etc/crontab untuk diedit dengan editor default Anda. Di sini, dalam contoh ini, saya menulis cron untuk menjalankannya setiap 5 menit untuk menyinkronkan data.

*/5        *        *        *        *   rsync -avzhe ssh [email :/var/www/ /var/www/

Perintah cron dan rsync di atas cukup menyinkronkan “/var/www/” dari server web utama ke server cadangan di setiap 5 menit. Anda dapat mengubah konfigurasi waktu dan lokasi folder sesuai kebutuhan Anda. Untuk lebih kreatif dan menyesuaikan dengan perintah Rsync dan Cron, Anda dapat melihat artikel kami yang lebih detail di:

  1. 10 Perintah Rsync untuk Menyinkronkan File/Folder di Linux
  2. 11 Contoh Penjadwalan Cron di Linux