Langkau ke kandungan utama

Kad Rangkaian Bertindan - Sambungan

Assalamualaikum
Hari ini dah 2 buah server yang aku dah buat tindanan kad rangkaian ni. Dan hari ni aku terjumpa satu pemahaman tentang kod dalam rc.bond yang dibuat dalam catatan kad rangkaian bertindan sebelum ni.
Mari kita tengok kod bash rc.bond

#!/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 << peringatan penting!!
            ifconfig bond0 hw ether 00:16:3e:aa:aa:aa
          ;;
          'stop')
            ifconfig bond0 down
            rmmod bonding
            rmmod tg3
          ;;
          *)
            echo "Usage: $0 {start|stop}"
          ;;
        esac

Dalam kod yang aku terangkan tu menunjukkan eth0 dan eth1 yang mewakili kad rangkaian 1 dan 2, yang mana kad ini beroperasi di bawah satu kad maya dinamakan bond0.

Kalau lihat pula kod yang diterangkan hijau tu, kad maya bond0 telah disetkan alamat MAC nya secara manual. Dalam kod di atas 00:16:3e:aa:aa:aa  adalah alamat MAC bond0.

Perhatikan jika aku gunakan kod yang sama untuk komputer berlainan, ini bermakna dalam satu rangkaian akan wujud 2 komputer pelayan yang mempunyai alamat MAC kad rangkaian yang sama. Jika pentadbir rangkaian menggunakan switch pintar yang dapat mengenalpasti MAC bertindan, maka kedua komputer ini akan menghadapi masalah rangkaian.

Oleh itu, aku tercari-cari pula cara penyelesaian masalah ni. Mula-mula aku fikir tukar je la alamat MAC tu ikut sedap je, tapi masalah la jugak bila ada 'kemungkinan' bertindan dengan kad rangkaian yang lain pula.

Namun aku terjumpa pula cara untuk menjanakan no MAC secara rawak:

Taip ni di konsol dan korang akan dapat no MAC secara rawak.

openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/.$//'
Kemudian aku cuba pula cara untuk menentukan alamat MAC yang dijana itu tidak sedia wujud dalam rangkaian. Namun, setelah berfikir lama sikit, aku dapat la satu buah fikiran yang baik iaitu lebih mudah jika aku gunakan alamat MAC mana-mana satu kad rangkaian yang tersedia dalam komputer pelayan tersebut.Ini sudah menjamin keunikan alamat MAC tersebut kerana setiap kad rangkaian yang dibuat mempunyai no alamat MAC yang unik.

namun jika kita larikan arahan ifconfig -a, yang kita dapat lihat adalah ketetapan rangkaian yang terkini, bukannya yang asal. Dengan kata lain, alamat MAC yang tertera selepas ifconfig -a adalah alamat MAC yang dimasukkan dalam fail /etc/rc.d/rc.bond

Untuk melihat MAC address asal bagi kedua-dua kad rangkaian adalah dengan melihat kepada alamat fizikalnya. Caranya adalah degan melarikan arahan di bawah :-

dmesg | grep eth 

Contoh :
root@serverKawe :~# dmesg | grep eth 
[    6.324430] 8139too 0000:02:09.0: eth0: RealTek RTL8139 at 0xdc00, ba:de:de:ba:b0:00, IRQ 18
[    6.716095] e1000 0000:02:0c.0: eth1: (PCI:33MHz:32-bit) fe:fa:fe:fa:fa:ff
[    6.728886] e1000 0000:02:0c.0: eth1: Intel(R) PRO/1000 Network Connection
[    6.960248] udev[1124]: renamed network interface eth1 to eth1-eth0
[    7.469948] udev[1123]: renamed network interface eth0 to eth1
[    7.495243] udev[1124]: renamed network interface eth1-eth0 to eth0
[   19.406802] bonding: bond0: enslaving eth0 as an active interface with a down link.



Selepas itu edit fail /etc/rc.d/rc.bond dengan memasukkan alamat MAC eth0/eth1 daripada dmesg tadi.

pico /etc/rc.d/rc.bond
edit baris dibawah ini sahaja


..
ifconfig bond0 hw ether ba:de:de:ba:b0:00
..
..


Jadi, selesai la masalah ni InsyaAllah.

p/s 
* arahan ifconfig bond0 hw ether 00:16:3e:aa:aa:aa dapat digunakan untuk ubah alamat MAC secara maya, atau dalam istilah keselamatan komputer dinamakan spoofing. Jadi dalam bahasa melayu boleh dikatakan sebagai 'topeng alamat MAC' untuk mencapai maksud spoof tu.. 


* modprobe dalam /etc/rc.d/rc.bond adalah mod gabungan kad rangkaian yang menentukan bagaimana kedua-dua kad rangkaian itu berfungsi 



Untuk rujukan , di bawah ini adalah mod untuk gabungan (bonding) kad rangkaian. Mod-mod di bawah adalah yang biasanya digunakan.
mode=0 (balance-rr)
Round-robin policy: Transmit packets in sequential order from the first available slave through the last. This mode provides load balancing and fault tolerance.

mode=1 (active-backup)
Active-backup policy: Only one slave in the bond is active. A different slave becomes active if, and only if, the active slave fails. The bond’s MAC address is externally visible on only one port (network adapter) to avoid confusing the switch. This mode provides fault tolerance. The primary option affects the behavior of this mode.

mode=2 (balance-xor)
XOR policy: Transmit based on [(source MAC address XOR'd with destination MAC address) modulo slave count]. This selects the same slave for each destination MAC address. This mode provides load balancing and fault tolerance.
mode=3 (broadcast)
Broadcast policy: transmits everything on all slave interfaces. This mode provides fault tolerance.

mode=4 (802.3ad)
IEEE 802.3ad Dynamic link aggregation. Creates aggregation groups that share the same speed and duplex settings. Utilizes all slaves in the active aggregator according to the 802.3ad specification.
Pre-requisites:
1. Ethtool support in the base drivers for retrieving
the speed and duplex of each slave.
2. A switch that supports IEEE 802.3ad Dynamic link
aggregation.
Most switches will require some type of configuration
to enable 802.3ad mode.

mode=5 (balance-tlb)
Adaptive transmit load balancing: channel bonding that does not require any special switch support. The outgoing traffic is distributed according to the current load (computed relative to the speed) on each slave. Incoming traffic is received by the current slave. If the receiving slave fails, another slave takes over the MAC address of the failed receiving slave.
Prerequisite:
Ethtool support in the base drivers for retrieving the
speed of each slave.

mode=6 (balance-alb)
Adaptive load balancing: includes balance-tlb plus receive load balancing (rlb) for IPV4 traffic, and does not require any special switch support. The receive load balancing is achieved by ARP negotiation. The bonding driver intercepts the ARP Replies sent by the local system on their way out and overwrites the source hardware address with the unique hardware address of one of the slaves in the bond such that different peers use different hardware addresses for the server.
[source: http://www.linuxhorizon.ro/bonding.html]

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

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 mena