Rabu, 20 Mei 2015

Membuat Mirror Archive Ubuntu

Penggunaan Mirror Local sangat berguna untuk anda yang memiliki beberapa ubuntu server. Dengan mengelola mirror server ubuntu sendiri, maka anda akan dengan mudah melakukan update ataupun instalasi paket ubuntu pada server anda.
Ada dua cara untuk mengelola mirror lokal yaitu :
  1. Menggunakan Debmirror - Debmirror memungkinkan anda untuk memilih paket (dapper, edgy, edgy-security, etc) yang ingin anda mirror. Cara ini sangat berguna bagi anda yang memiliki kapasitas hardisk yang terbatas.
  2. Menggunakan rsync - Hal yang menjadi keunggulan dari rsync yaitu seluruh archive files akan disinkronisasikan ke server mirror lokal anda. Oleh karena seluruh files disinkronisasi, maka akan membutuhkan kapasitas hardisk minimal sebesar 800GB. 
Pada tulisan ini akan dijelaskan langkah-langkah melakukan rsync archive ubuntu. .
Paket-paket yang diperlukan:
Langkah-langkahnya adalahs sebagai berikut

Sediakan ruang kosong hardisk seperlunya

Pada saat tulisan ini dikutip, besar Ubuntu Archive sekitar 680 GB. Besaran ini akan terus bertambah dari waktu ke waktu sesuai dengan perkembangan pada server repository ubuntu itu sendiri.
Besar hardisk yang harus tersedia untuk menampung Ubuntu Archive direkomendasikan minimal sebesar 800GB.

Download Paket yang diperlukan

  • rsync dibutuhkan untuk membuat dan mengelola server mirror.
  • mailx hanya dibutuhkan bila anda ingin membuat email script yang akan mengirimkan pesan ke email anda bila terjadi masalah.

 # apt-get install rsync mailx

Memulai Mirroring Pertama Kali

Karena kita kang mengunduh archive dengan ukuran kurang lebih 600GB, maka akan membutuhkan waktu yang cukup lama.
Buat direktori ubuntu
 # mkdir /media/mirror/ubuntu

Sekarang kita sudah memiliki direktori tujuan. jalankan rsync untuk mulai mengunduh. Bandwidth yang digunakan bisa dibuka bebas, atau dapat juga dibatasi.

 # rsync -a --bwlimit=10M --progress --delete-after rsync://archive.ubuntu.com/ubuntu /media/mirror/ubuntu

--progress adalah parameter untuk menampilkan progres rsync. 
Catatan: Meskipun sudah ditambahkan parameter --progress, rsync membutuhkan waktu agak lama untuk memunculkan progress rsync itu sendiri. Hal ini merupakan sesuatu yang normal mengingat besarnya files yang akan dimirror.
Bandwidth dalam menggunakan rsync diukur dalam Bytes, bukan bits.
 

Buat script untuk melakukan update secara berkala

sementara menunggu proses rsync berjalan, kita dapat membuat script untuk membuat server mirror tetap update  
Perhatian : Jangan menggunakan script atau cron job, sebelum rsync pertama kali selesai dijalankan!

Buka editor ubuntu (vi, pico, or nano) dan simpan kode programnya sebagai /usr/local/bin/ubuntu-mirror-sync.sh
## Mirror Synchronization Script /usr/local/bin/ubuntu-mirror-sync.sh
## Version 1.01 Updated 13 Feb 2007 by Peter Noble

## Point our log file to somewhere and setup our admin email
log=/var/log/mirrorsync.log

adminmail=admin@my.domain
# Set to 0 if you do not want to receive email
sendemail=1

# Subject is the subject of our email
subject="Ubuntu Mirror Sync Finished"

## Setup the server to mirror
remote=rsync://archive.ubuntu.com/ubuntu

## Setup the local directory / Our mirror
local=/media/mirror/ubuntu

## Initialize some other variables
complete="false"
failures=0
status=1
pid=$$

echo "`date +%x-%R` - $pid - Started Ubuntu Mirror Sync" >> $log
while [[ "$complete" != "true" ]]; do

        if [[ $failures -gt 0 ]]; then
                ## Sleep for 5 minutes for sanity's sake
                ## The most common reason for a failure at this point
                ##  is that the rsync server is handling too many concurrent connections.
                sleep 5m
        fi

        if [[ $1 == "debug" ]]; then
                echo "Working on attempt number $failures"
                rsync -a --delete-after --progress $remote $local
                status=$?
        else
                rsync -a --delete-after $remote $local >> $log
                status=$?
        fi
        
        if [[ $status -ne "0" ]]; then
                complete="false"
                (( failures += 1 ))
        else
                echo "`date +%x-%R` - $pid - Finished Ubuntu Mirror Sync" >> $log

                # Send the email
                if [[ -x /usr/bin/mail && "$sendemail" -eq "1" ]]; then
                mail -s "$subject" "$adminmail" <<OUTMAIL
Summary of Ubuntu Mirror Synchronization
PID: $pid
Failures: $failures
Finish Time: `date`

Sincerely,
$HOSTNAME

OUTMAIL
                fi
        complete="true"
        fi
done

exit 0

Setelah rsync pertama kali selesai dilakukan, silahkan melanjutkan untuk menjalankan kode yang telah dibuat.
Catatan : Kode yang dubuat menjalankan rsync dengan menambahkan parameter  --delete-after sehingga tidak menggangu user yang sedang melakukan updating ke server mirror yang telah ktia buat.

Gunukan Cron untuk Melakukan rsync secara berkala dan otomatis

Official Ubuntu Mirrors merekomendasi untuk melakukan update mirror setiap 6 jam. Tetapi hal ini tidak diwajibkan, kita dapat melakukan update mirror sebanyak satu kali dalam sehari pada waktu tengah malam disaat pengguna internet sudah sepi, sehingga bandwidth dapat terpakai dengan optimal. Berikut perintah untuk membuat Cron
 # crontab -e

Masukan baris perintah dibawah ini 
 15 21 * * * /usr/local/bin/sync-ubuntu-mirror.sh > /dev/null 2> /dev/null

Contoh diatas menunjukan bahwa proses update mirror akan berlangsung setiap malam pada pukul 9.15 PM.

Publikasikan mirror anda pada Apache server

Ini adalah bagian yang cukup mudah. perhatikan perintah dibawah ini.
 cd /var/www/
 ln /media/mirror/ubuntu -s

perintah diatas akan menghasilkan direktori ubuntu sudah dapat diakses melalui website repository yang kita buat. Contohnya repo.unpatti.ac.id/ubuntu

Update repository Komputer anda
Bila kita ingin menggunakan mirror server yang sudah kita buat, maka ubah sources list apt sebagai berikut : 
#nano /etc/apt/sources.list

Setelah itu masukan baris-baris perintah dibawah ini

 deb http://repo.unpatti.ac.id/ubuntu/ feisty main restricted
 deb-src http://repo.unpatti.ac.id/ubuntu/ feisty main restricted        
 deb http://repo.unpatti.ac.id/ubuntu/ feisty-updates main restricted
 deb-src http://repo.unpatti.ac.id/ubuntu/ feisty-updates main restricted

unutk mencobanya silahkan gunakan perintah dibawah ini
 # apt-get update

Categories:

0 komentar:

Posting Komentar