Aturan dan Panduan Mirror rsync Gentoo Linux
1.
Pendahuluan
Istilah, nama, dll
Panduan ini ditujukan bagi para pengguna yang ingin memiliki mirror rsync
sendiri. Tidak hanya untuk mirror rsync resmi, tetapi juga untuk mirror
pribadi.
Terdapat tiga jenis mirror rsync Gentoo: mirror rotasi utama, mirror komunitas
dan mirror pribadi. Mirror rotasi utama diurus oleh tim infrastrukur Gentoo.
Mereka menangani lalu-lintas rsync Gentoo. Mirror komunitas adalah mirror yang
dijalankan oleh para sukarelawan dari komunitas Gentoo. Mirror pribadi adalah
mirror yang dijalankan oleh perorangan yang tertutup untuk umum dan dibuat
untuk menghemat bandwidth di jaringan organisasi atau perorangan.
Untuk saat ini, kami sudah memiliki banyak mirror komunitas dan masih terus
mencari mirror rotasi utama. Spesifikasi untuk server rotasi utama adalah:
- Minimal prosesor Pentium 4 2GHz (atau yang setara)
- Minimal RAM 1GB (idealnya 1.5GB - 2GB)
- Ruang harddisk sebesar 10GB(IDE juga boleh)
Server-server ini bisa anda sumbangkan bersama bandwidth dan ruang lokasinya
jika anda memilikinya. Jika tidak, kami dapat menyediakan bandwith dan anda
hanya perlu mengantarkan komputer tersebut ke fasilitas lokasi kami. Penggunaan
bandwidth rata-rata pada mirror rotasi untuk saat ini adalah ~7Mbps (sekitar 2
TB per bulan). Karena jumlah mirror rotasi semakin bertambah, maka jumlah
konsumsi bandwidth juga akan semakin berkurang.
Jika anda ingin menyumbangkan komputer anda, silakan email Admin Mirror bersama informasi lengkap.
2.
Mensetup mirror rsync lokal
Pendahuluan
Banyak pengguna yang menjalankan Gentoo pada banyak komputer dan perlu
mengsinkronkan pohon portage pada kesemuanya. Menggunakan mirror publik
jelas-jelas merupakan penyia-nyiaan bandwidth pada kedua sisi. Mengsinkronkan
satu komputer dengan mirror publik lalu mengsinkrokan semuanya dengan komputer
tersebut akan menghemat tenaga mirror Gentoo juga menghemat bandwidth anda.
Hal tersebut juga berlaku untuk organisasi yang ingin mengendalikan mirror
rsync yang digunakan oleh server dan workstation mereka. Tentunya, mereka juga
ingin menghemat bandwidth.
Yang perlu anda lakukan adalah memilih komputer mana yang akan dijadikan
mirror rsync lokal dan men-setup-nya. Anda harus memilih komputer yang dapat
menangani beban CPU dan disk yang dibutuhkan oleh operasi rsync. Mirror lokal
anda juga harus selalu siap kapanpun komputer lain ingin mengsinkronkan pohon
portage-nya. Selain itu, komputer ini juga harus memiliki alamat IP tetap atau
nama yang selalu di-resolve ke server anda. Konfigurasi DHCP dan/atau server
DNS tidak dijelaskan di panduan ini.
Perlu dicatat bahwa petunjuk-petunjuk di sini menganggap mirror rsync pribadi
anda adalah komputer Gentoo. Jika anda ingin menggunakan distro lain, panduan
untuk men-setup mirror komunitas mungkin lebih sesuai. Yang penting, jangan
singkronkan mirror setiap setengah jam, tetapi cukup sekali atau dua kali
sehari.
Men-setup server
Tidak ada paket lain yang anda butuhkan karena semua software telah terinstal
di komputer anda. Men-setup mirror rsync lokal hanyalah mengkonfigurasi daemon
rsyncd agar direktori /usr/portage anda tersedia untuk
komputer lain. Ciptakan file konfigurasi /etc/rsyncd.conf berikut
ini:
Daftar Kode 2.1: Contoh /etc/rsyncd.conf |
pid file = /var/run/rsyncd.pid
max connections = 5
use chroot = yes
uid = nobody
gid = nobody
hosts allow = 192.168.0.1 192.168.0.2 192.168.1.0/24
hosts deny = *
[gentoo-portage]
path=/usr/portage
comment=Gentoo Portage
exclude=distfiles/ packages/
|
Anda tidak perlu menggunakan opsi hosts allow dan hosts deny.
Secara default, semua klien diijinkan. Urutan penulisan opsi-opsi tidak
penting. Server akan selalu memeriksa opsi hosts allow pertama kali
lalu mengijinkan koneksi jika komputer yang melakukan koneksi cocok dengan
yang tercantum dalam opsi tersebut. Server kemudian akan memeriksa opsi
hosts deny dan menolak koneksi jika ada kecocokan yang ditemukan. Semua
komputer yang tidak cocok dengan keduanya akan diijinkan. Bacalah halaman
manual (man rsyncd.conf) untuk info lebih lanjut.
Sekarang, jalankan daemon rsync anda dengan perintah berikut sebagai root:
Daftar Kode 2.2: Menjalankan daemon rsync |
# /etc/init.d/rsyncd start
# rc-update add rsyncd default
|
Sekarang cobalah mirror rsync anda. Anda tidak perlu mencoba dari komputer
lain, tetapi baik juga jika anda lakukan. Jika nama server anda tidak
dikenal oleh komputer lain, anda dapat menggunakan alamat IP-nya.
Daftar Kode 2.3: Mencoba mirror |
# rsync 192.168.0.1::
gentoo-portage Gentoo Portage
# rsync your_server_name::gentoo-portage
|
Mirror rsync anda sekarang sudah siap. Jalankan saja emerge --sync
seperti biasa untuk meng-update server anda. Jika anda menggunakan cron atau
fasilitas serupa untuk melakukan sync secara reguler, jangan lupa untuk
menjaga frekuensinya, misalnya sekali atau dua kali sehari.
Catatan:
Perlu dicatat bahwa kebanyakan admin mirror umum/publik menganggap sync lebih
dari satu atau dua kali sehari sebagai penyalahgunaan. Sebagian bahkan akan
mem-ban IP anda dari server mereka jika anda terus melakukannya.
|
Konfigurasi klien
Sekarang, atur komputer lain agar menggunakan mirror rsync lokal anda. Edit
/etc/make.conf dan atur variabel SYNC agar menunjuk ke
server anda.
Daftar Kode 2.4: Menentukan SYNC di /etc/make.conf |
SYNC="rsync://192.168.0.1/gentoo-portage"
SYNC="rsync://your_server_name/gentoo-portage"
|
Anda dapat memeriksa apakah komputer telah di-setup dengan benar dengan cara
melakukan sync ke mirror lokal anda untuk pertama kali:
Daftar Kode 2.5: Memeriksa dan sync |
# emerge --info|grep SYNC
SYNC="rsync://nama_server_anda/gentoo-portage"
# emerge --sync
|
Itu saja! semua komputer anda sekarang dapat menggunakan mirror rsync lokal
kapanpun anda menjalankan emerge --sync.
3.
Men-setup server rsync komunitas
Pendahuluan
Catatan:
Anda dapat menemukan contoh file konfigurasi dan skrip di paket
gentoo-rsync-mirror. Jalankan saja emerge gentoo-rsync-mirror.
|
Untuk saat ini, pohon Poratge membutuhkan sekitar 600MB, jadi tidak terlalu
banyak; 1GB sudah lebih dari cukup. Menyiapkan mirror Portage sangatlah mudah
-- pertama, pastikan mirror anda sudah memiliki paket rsync. Kemudian,
konfigurasikan file rsyncd.conf seperti berikut:
Daftar Kode 3.1: rsyncd.conf |
uid = nobody
gid = nobody
use chroot = yes
max connections = 15
pid file = /var/run/rsyncd.pid
motd file = /etc/rsync/rsyncd.motd
log file = /var/log/rsync.log
transfer logging = yes
log format = %t %a %m %f %b
syslog facility = local3
timeout = 300
[gentoo-portage]
#versi modern portage menggunakan entri ini
path = /gentoo/rsync
comment = Gentoo Linux Portage tree mirror
exclude = distfiles
|
Tentunya anda boleh memilih lokasi anda sendiri untuk hampir semua file. Yang
terpenting adalah bagian nama ([gentoo-portage]). Ini adalah lokasi yang
akan dicari oleh klien rsync.
Untuk alasan keamanan, penggunaan lingkungan chroot dianjurkan! Hal ini
memiliki implikasi untuk tanda waktu yang tercatat -- bacalah FAQ di bawah.
Sekarang, anda perlu menyalin pohon Portage Gentoo Linux. Anda dapat
menggunakan skrip di bawah ini untuk melakukannya. Lagi-lagi, anda mungkin
ingin menyesuaikan lokasi file -- yang penting, semuanya harus sama dengan
yang ada di rsyncd.conf.
Daftar Kode 3.2: rsync-gentoo-portage.sh |
#!/bin/bash
RSYNC="/usr/bin/rsync"
OPTS="--quiet --recursive --links --perms --times -D --delete --timeout=300"
#Hapus tanda komentar pada baris berikut hanya jika anda memiliki akses ke rsync1.us.gentoo.org
#SRC="rsync://rsync1.us.gentoo.org/gentoo-portage"
#Jika anda sedang menunggu akses ke mirror master kami, pilihlah salah satu mirror kami:
SRC="rsync://rsync.de.gentoo.org/gentoo-portage"
DST="/space/gentoo/rsync/"
echo "Started update at" `date` >> $0.log 2>&1
logger -t rsync "re-rsyncing the gentoo-portage tree"
${RSYNC} ${OPTS} ${SRC} ${DST} >> $0.log 2>&1
echo "End: "`date` >> $0.log 2>&1
|
File rsyncd.motd harus berisi alamat IP anda dan informasi lain
yang diperlukan tentang mirror anda, seperti info tentang komputer yang
menyediakan mirror Portage dan kontak administratif. Sekarang anda dapat
mencoba server anda seperti yang dijelaskan pada bab Men-setup mirror lokal rsync di atas.
Setelah anda disetujui sebagai mirror rsync resmi, komputer anda akan diberikan
alias dengan nama dalam bentuk: rsync[nomor].[kode
negara].gentoo.org.
4.
FAQ Singkat
Q: Siapa yang harus saya hubungi untuk menanyakan masalah dan
pengurusan rsync?
A: Kunjungi Bugzilla Gentoo dan isilah
sebuah bug pada produk "Mirrors", komponen "Server Problem".
Q: Bagaimana cara memeriksa status barunya isi server rsync?
A: Tim infrastruktur Gentoo selalu memonitor semua server rsync komunitas. Anda
dapat melihat hasilnya di websitenya.
Q: Saya menjalankan mirror rsync pribadi untuk perusahaan saya. Apakah
saya masih bisa mengakses rsync1.us.gentoo.org?
A: Karena sumber kami terbatas, kami perlu memastikan bahwa kami telah
mengalokasikannya sebaik mungkin untuk menyediakan pelayanan terbaik bagi
para pengguna kami. Untuk itu, kami membatasi koneksi ke server rsync master
dan mirror distfiles kami hanya untuk mirror publik. Para pengguna
dipersilahkan untuk menggunakan sistem mirror reguler kami untuk membuat
mirror rsync, tetapi diminta untuk mengikuti beberapa panduan etika
rsync.
Q: Apakah penting melakukan sync dua kali dalam satu jam?
A: Ya, penting. Anda tidak perlu melakukan sync tepat pada menit :00 dan :30,
tetapi proses sync harus dilakukan pada dua waktu ini:
- :00 sampai :10
- :30 sampai :40
Sebagai tambahaan, pastikan agar dua proses sync anda terpisah tepat sejauh
30 menit. Jadi, jika anda menjadwalkan sync pertama untuk setiap jam pada menit
:08, maka jadwalkan sync kedua pada menit ke :38.
Q: Di mana saya harus mengsinkronkan mirror rsync saya sebelum menjadi mirror Gentoo resmi?
- Untuk mirror rsync Eropa: sync ke rsync.de.gentoo.org
- Untuk mirror rsync Amerika: sync ke rsync.us.gentoo.org
- Untuk yang lainnya: sync ke rsync.us.gentoo.org
Q: Bagaimana cara mengetahui mirror terdekat?
A: netselect telah dirancang untuk tugas ini. Jika anda belum melakukan
emerge netselect maka lakukan sekarang. Lalu jalankan: netselect
rsync.gentoo.org. Setelah kira-kira satu menit, netselect akan menampilkan
sebuah alamat IP. Gunakan IP ini sebagai satu-satunya parameter untuk rsync
dengan menambahkan 2 titik dua, misalnya: rsync 1.2.3.4::. Anda akan
mengetahui mirror apa yanga anda gunakan dari pesan banner. Kemudian
update /etc/make.conf.
Q: Bolehkah saya menggunakan kompresi ketika melakukan sync dari
rsync1.us.gentoo.org?
A: Tidak. Kompresi menghabiskan terlalu banyak tenaga di server, jadi kami
telah memaksa penonaktifannya di rsync1.us.gentoo.org. Tolong
jangan mencoba untuk menggunakan kompresi ketika melakukan sync dari
server ini.
Q: Saya melihat banyak proses rsync lama yang mungkin sudah tidak
berjalan lagi, bagaimana cara menghapusnya?
A: Perintah ini akan membantu anda untuk menghentikan proses rsync lama yang
terkadang masih ada karena masalah koneksi. Sangat penting untuk menghentikannya
karena proses ini masih dianggap sebagai koneksi yang valid pada opsi 'max
connections'. Anda boleh menjalankan perintah ini melalui crontab setiap jam,
proses rsync yang lebih dari satu jam akan dicari dan dihentikan.
Daftar Kode 4.1: Menghentikan proses rsync lama |
/bin/kill -9 `/bin/ps --no-headers -Crsync -o etime,user,pid,command|/bin/grep nobody | \
/bin/grep "[0-9]\{2\}:[0-9]\{2\}:" |/bin/awk '{print $3}'`
|
Q: Ada beberapa pengguna yang terlalu sering melakukan koneksi ke server
rsync saya, bahkan terkadang menyebabkan serangan DoS, apakah ada cara
untuk mencegahnya?
Pada beberapa kasus, ada beberapa user yang menyalahgunakan sistem mirror rsync
dengan melakukan sync lebih dari 1-2 kali dalam sehari. Pada kasus yang lebih
parah lagi, pengguna menjadwalkan tugas cron untuk melakukan sync setiap 15
menit. Hal ini sering menyebabkan serangan DoS dengan terus menyibukkan slot
rsync yang seharusnya bisa dipakai oleh pengguna lain. Untuk mencegahnya,
anda dapat menggunakan skrip perl ini
yang akan meng-scan file log rsync anda, memilih alamat IP yang melakukan
koneksi lebih dari N kali dalam sehari dan secara dinamis menciptakan
dile rsyncd.conf, dan memasukkan IP tadi di direktif
hosts deny. Beris berikut ini mengendalikan nilai N (pada
contoh ini adalah 4):
Daftar Kode 4.2: Menentukan jumlah koneksi maksimal per IP per hari |
@badhosts=grep {$hash{$_}>4} keys %hash;
|
Jika anda menggunakan skrip ini, jangan lupa untuk merotasikan file log rsync
anda setiap hari dan sesuaikan lokasi rsyncd.conf di dalamnya.
Skrip ini telah diuji di Gentoo Linux, tetapi seharusnya bisa digunakan di
distro lain yang mendukung rsync dan perl.
Isi dokumen ini dilisensikan dengan lisensi Creative Commons -
Attribution / Share Alike.
|