Langkau ke kandungan utama

Server Redundancy - Pertindanan Komputer Pelayan

alkisahnya tercari-cari untuk buat server redundancy ( pertindihan komputer pelayan ) atas sebab perlunya server yang sentiasa on-line tanpa ada downtime yang lama.

Dan, cabarannya adalah memang kami tak pernah jalani apa-apa latihan, pengalaman dan apa jua pengetahuan berkenaan teknologi ini. Yang pastinya, perlu banyak mengoogle.

Setakat ini, ada banyak kaedah untuk memastikan aplikasi masih terus boleh berfungsi walaupun server mati/rosak.

1. guna 2 server yang sama. Bila satu mati, satu lagi yang masih hidup dapat terus melayan pengguna.

2. guna 2 talian rangkaian yang berbeza. Bila satu talian rosak/putus, masih ada satu lagi talian rangkaian yang berfungsi.

3. storan di server guna raid ( redundant array of independent disk ) atau dalam bahasa melayu : barisan disk berlainan yang bertindan. Raid dapat menjadikan sebilangan hd menjadi 1 dengan semua data pada 1 hd adalah sama dengan data pada hd 2. (mirroring)

4. satu IP maya untuk sebilangan server. 2 server yang menangani permintaan pengguna dan menentukan muatan / tanggungan pemprosesan di setiap server. (guna LVS - linux virtual server)

5. Heartbeat. Iaitu satu teknologi yang memungkinkan 2 server untuk mengawasi satu sama lain yang mana jika salah satu server mati, satu server lagi akan bertindak mengambil alih tugasnya.

Jadinya, sekarang ni macam berminat nak cari pasal no. 2 : Network Card Redundant sebab biasanya server ada 2 network card yang mampu menjadikannya lebih laju jika kedua network card hidup, dan mampu menjadi sokongan jika salah satu network card tu mati.

Topografinya macam ni :


Konsepnya lebih kurang macam ni :

   slackware akan mencipta satu kad rangkaian maya (virtual) dengan menggunakan 1 ip yang mana di belakang kad maya ini ada 2 kad rangkaian fizikal. Sebab itulah ada istilah master, slave digunakan dalam tutorial ini.


spesifikasi sistem :

linux distro : slackware 13.37
linux kernel installed? : mesti! [ install pakej k dari dvd slackware]
NIC : 2 [ eth0 & eth1 ]


  1. Instal NIC jika sistem hanya ada satu NIC.
  2. pastikan kedua-dua NIC dikesan oleh OS. 
  3. dalam konsole :
    1. tukar direktori ke /usr/src/linux/Documentation/networking
        %> cd /usr/src/linux/Documentation/networking
    2. taip :
       gcc -Wall -O -I/usr/src/linux/include ifenslave.c -o ifenslave
    3. salin ifenslave ke /usr/sbin dengan :
        cp ifenslave /usr/sbin
    4. Tukar direktori ke /etc/rc.d
        cd /etc/rc.d/
    5. Bina satu fail dengan nama rc.bond
        touch rc.bond
    6. Ubah kebenaran rc.bond supaya boleh dilarikan
        chmod 755 rc.bond
    7. Gunakan pengedit teks anda untuk edit rc.bond [ contoh di sini menggunakan pico ]
        pico rc.bond 
    8. Masukkan kod di bawah :


      #!/bin/sh
      #
              case "$1" in
                'start')
                  echo "start bond0"
                  #modprobe bonding mode=balance-alb miimon=100
                  modprobe bonding mode=balance-rr miimon=100
                  modprobe tg3
                  ifconfig bond0 up
                  ifenslave bond0 eth0
                  ifenslave bond0 eth1
                  #TODO need to be changed
                  ifconfig bond0 hw ether 00:16:3e:aa:aa:aa
                ;;
                'stop')
                  ifconfig bond0 down
                  rmmod bonding
                  rmmod tg3
                ;;
                *)
                  echo "Usage: $0 {start|stop}"
                ;;
              esac
    9. simpan dengan menekan ctrl-o dan enter
    10. Untuk memastikan skrip di atas dilarikan semasa boot, edit fail rc.M
      pico rc.M
    11. Cari perkataan
      #Initialize the networking hardware” dengan menekan ctrl-w dan taip networking , enter

    12. Tambah kod berikut di atas perkataan "#Initialize the networking hardware"
      # If script rc.bond is executeable then start it
      if [ -x /etc/rc.d/rc.bond ]; then
        . /etc/rc.d/rc.bond start
      fi
    13. simpan fail ini dengan menekan ctrl+o, enter
    14. Yang terakhir sekali, kita perlu edit fail setup rangkaian. Edit fail rc.inet1.conf
      pico rc.inet1.conf
    15. PENTING!! 
      1. Jika dalam fail ini telah terdapat setup / no ip pada eth0. Buang semua setup dalam eth0 :
        IPADDR[0]=""
        NETMASK[0]=""
        USE_DHCP[0]=""
        DHCP_HOSTNAME[4]=""
        
        IPADDR[1]=""
        NETMASK[1]=""
        USE_DHCP[1]=""
        DHCP_HOSTNAME[1]=""

      2. tambah kod di bawah sebelum setup untuk default gateway
        IFNAME[4]="bond0"
        IPADDR[4]="XXX.XX.XX.XX"
        NETMASK[4]="255.255.255.0"
        USE_DHCP[4]=""
        DHCP_HOSTNAME[4]=""

        1. Nota : XXX... adalah no ip yang anda perlukan.
        2. sila betulkan juga netmask yang sesuai dengan lokasi anda
    16. Simpan fail ini dengan menekan ctrl+o, enter
    17. sebelum reboot, pastikan salah satu kad rangkaian anda telah disambung dengan kabel rangkaian. [ jika tidak pun tak apa ].
  4. Reboot sistem.
  5. setelah sistem reboot, taip di dalam konsole untuk melihat status rangkaian anda
    1. cat /proc/net/bonding/bond0
    2. paparan seperti [ lebih kurang la ] di bawah akan keluar
      Ethernet Channel Bonding Driver: v3.7.0 (June 2, 2010)
      
      Bonding Mode: load balancing (round-robin)
      MII Status: up
      MII Polling Interval (ms): 100
      Up Delay (ms): 0
      Down Delay (ms): 0
      
      Slave Interface: eth0
      MII Status: up
      Speed: 100 Mbps
      Duplex: full
      Link Failure Count: 3
      Permanent HW addr: 00:08:74:30:93:d6
      Slave queue ID: 0
      
      Slave Interface: eth1
      MII Status: up
      Speed: 100 Mbps
      Duplex: full
      Link Failure Count: 4
      Permanent HW addr: 00:b0:4c:39:0d:b5
      Slave queue ID: 0
  6. ini menunjukkan sistem anda menggunakan 2 NIC dengan 1 ip telah berjaya di larikan. 
  7. Jika anda mahu melihat network setting, taip ifconfig
    root@server:~# ifconfig 
    bond0     Link encap:Ethernet  HWaddr 00:16:3E:AA:AA:AA  
              inet addr:10.1.127.223  Bcast:10.1.127.255  Mask:255.255.240.0
              inet6 addr: fe80::208:74ff:fe30:93d6/64 Scope:Link
              UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
              RX packets:207115 errors:0 dropped:7932 overruns:0 frame:0
              TX packets:810 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:18872138 (17.9 Mb)  TX bytes:119407 (116.6 Kb)
    
    eth0      Link encap:Ethernet  HWaddr 00:16:3E:AA:AA:AA  
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
              RX packets:103268 errors:0 dropped:0 overruns:0 frame:0
              TX packets:430 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:9431642 (8.9 Mb)  TX bytes:57025 (55.6 Kb)
    
    eth1      Link encap:Ethernet  HWaddr 00:16:3E:AA:AA:AA  
              UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
              RX packets:103847 errors:0 dropped:0 overruns:0 frame:0
              TX packets:380 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:9440496 (9.0 Mb)  TX bytes:62382 (60.9 Kb)
              Interrupt:18 Base address:0xdc00 
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
    


  8. begitulah adanya...
Selepas itu, aku try la sambung satu kabel rangkaian tu pada satu switch dalam ofis ni, dan satu lagi pada wall port yang guna switch utama dalam rangkaian yang lebih besar. pastu aku try ping dari pc aku untuk lihat kesan dia. Sudah tentulah keputusan dari ping tu keluar. Kemudian aku try cabut kabel NIC 1 yang bersambung ke switch dalaman tanpa aku hentikan ping dari pc aku...

Keputusan dari ping  terhenti seketika tetapi tidak terputus. Dalam beberapa saat selepas itu, keputusan ping kembali seperti biasa. 

Kemudian, aku sambung semula kabel tadi dan aku cabut pula kabel rangkaian yang satu lagi untuk tengok kesan ping. Keputusannya sama, ping terhenti seketika dan kemudian bersambung semula. 

Ini bermakna, network card bonding ni boleh juga diaplikasikan menurut topologi di bawah


Kesimpulannya, 

Jika aku ada satu server dengan dengan dua NIC, network card bonding dapat menjadikan rangkaian akan melihat server aku ni menggunakan 1 ip sahaja untuk kedua kad rangkaiannya. Seperti dalam rangkaian tempat aku kerja ni, jika aku sambung satu NIC ke satu rangkaian utama, dan satu NIC lagi ke rangkaian terdekat, jika salah satu network rosak/kabel rosak/NIC rosak, ada satu lagi network yang masih hidup dan sistem masih dapat dicapai oleh pengguna.

Dan, daripada pembacaan aku, dengan menggunakan 2 NIC yang dihidupkan serentak ( kedua-dua NIC hidup) kelajuan capaian juga berganda.

Kiranya, untuk menjadikan komputer pelayan di HUSM ni rendah downtime, salah satu langkah telah berjaya. Selepas ini aku akan try pula buat Linux Virtual Server iaitu :

1 IP dengan lebih daripada 1 komp pelayan. Tujuannya, jika pelayan 1 rosak/terbakar/hancur, masih ada satu lagi server di tempat lain yang boleh dicapai pengguna.

InsyaAllah lepas ni aku post lagi bila burjaya. Doa-doakanlah.. Amin


-- kalu buat kat pc sendiri ok jugak nih.. ada 2 NIC, 2 Line, lagi laju bleh surf internet.. huhuhu

    Ulasan

    Catatan popular daripada blog ini

    Apa Maksud RON dalam pengkelasan Petrol?

    RON dan Petrol Oleh yusdirman, Oktober 2014 RON adalah singkatan daripada Research Octane Number Ianya kaedah penarafan bahan api. Lebih tinggi nilai RON, lebih mahal harga PETROL. Adakah minyak RON 97 lebih berkuasa berbanding RON 95? RON merujuk kepada tahap bahan api menahan rintangan "ketukan" semasa proses pembakaran oleh palam pencucuh dalam enjin. Ianya merujuk kepada tahap ketahanan bahan api untuk tidak terbakar sebelum dinyalakan oleh palam pencucuh dalam enjin. "ketukan" dalam konteks RON ini adalah apabila campuran bahan api dan udara dalam enjin terbakar lebih awal sebelum api dari palam pencucuh menbakarnya. Pembakaran awal ini mungkin disebabkan enjin terlalu panas. Haba dari silinder enjin itu sendiri mungkin telah menyalakan bahan api sebelum palam pencucuh menyala. Ini boleh menurunkan prestasi dan mungkin boleh memudaratkan enjin! Jadi, RON bukannya bermaksud LEBIH KUASA! Ianya bermaksud bahan api itu dapat menahan tekanan dari

    Load Balancing dengan Nginx dan Puma

    Load Balancing dengan Nginx dan Puma Tutorial ini adalah sangat ringkas hanya untuk menunjukkan kebolehan nginx sebagai load balancer yang dapat menjadi 'orang tengah' antara banyak server di belakangnya Keperluan 1. Paling kurang 2 server aplikasi 2. Satu server diinstall nginx Contoh Persekitaran yang sekarang 1. server1: os: debian application: ruby on rails web server : puma dns : myaplication1.yusdirman.com 2. server2: myaplication2.yusdirman.com os:debian application: ruby on rails web server : puma dns : myaplication1.yusdirman.com 3. nginx diinstall di server1 /ets/nginx/nginx.conf setup (default): worker_processes  2; worker_processes  auto; worker_rlimit_nofile 65536; error_log  logs/error.log  notice; error_log  logs/error.log  info; events {   worker_connections  65536; } http {   include       mime.types;   default_type  application/octet-stream;   sendfile        on;   tcp_nopush on;   tcp_nodelay on;   keepalive_tim