Skip to Content

Indonesia Wireless Community

RT RW Net & Internet Service Provider

Script Load Balance Dan Fail Over

Script Load Balance Dan Fail Over

Be First!
by Oktober 8, 2017 Tutorial

Contoh Topologi yang dipakai pada script
ISP1-512kbps——–““““““interface WARNET1
“““““““““`!““““““`!
SPEEDY1-384kbps–SWITCH HUB—>MIKROTIK—-interface WARNET2
“““““““““`!““““““`!
SPEEDY2-384kbps—–““““““interface WARNET3

ket:
• Masing-masing warnet menggunakan satu interface
• Modem ADSL speedy diset ke mode ROUTER/NAT
• Interface Input digabung menggunakan SWITCH/HUB untuk menghemat port ethernet

Oleh karena terdapat perbedaan kecepatan ISP, maka mangle aku set 4:3:3. Untuk penggunaan konfigurasi berbeda, silahkan disesuaikan pada scriptnya, ntar aku kasih tanda deh parameter yang harusnya disesuaikan.

Baiklah, kita teruskan ke pembahasan berikutnya. Ini adalah contoh dari interface yang ada sesuai topologi di atas, namun dengan sedikit perubahan, dikarenakan kalau jalur ISP1 dan Speedy digabung, bandwidth akan dengan mudah dicuri maka yang digabung hanya dua Speedy dan ISP1 menggunakan interface sendiri

/interface print
Flags: X – disabled, D – dynamic, R – running
# NAME TYPE RX-RATE TX-RATE
MTU
0 R warnet1 ether 0 0
1500
1 R warnet2 ether 0 0
1500
2 R warnet3 ether 0 0
1500
3 R ISP1 ether 0 0
1500
4 R Speedy ether 0 0
1500

Untuk membuat mangle yang demikian banyak (parameter dapat diubah/disesuaikan) memakan banyak waktu, karena itu bisa disederhanakan dengan script berikut ini:

:for t from=1 to=10 do={
:local e “ISP1″,”ISP1″,”ISP1″,”ISP1″,”Spd1″,”Spd1″,”Spd1″,”Spd2″,”Spd2″,”Spd2″
/ip fire mangle add chain=prerouting in-interface=”warnet1” \
connection-state=new nth=(“9,1,” . (($t)-1)) action=mark-connection \
new-connection-mark=(“Net” . ($t)) passthrough=yes \
comment=(“paketa” . ($t))
/ip fire mangle add chain=prerouting in-interface=”warnet2″ \
connection-state=new nth=(“9,2,” . (($t)-1)) action=mark-connection \
new-connection-mark=(“Net” . ($t)) passthrough=yes \
comment=(“paketb” . ($t))

/ip fire mangle add chain=prerouting in-interface=”warnet3″ \
connection-state=new nth=(“9,3,” . (($t)-1)) action=mark-connection \
new-connection-mark=(“Net” . ($t)) passthrough=yes \
comment=(“paketc” . ($t))
/ip firewall mangle add chain=prerouting in-interface=”warnet1″ \
connection-mark=(“Net” . ($t)) action=mark-routing \
new-routing-mark=([:pick $e (($t)-1)]) comment=(“routing” . ($t))
/ip firewall mangle add chain=prerouting in-interface=”warnet2″ \
connection-mark=(“Net” . ($t)) action=mark-routing \
new-routing-mark=([:pick $e (($t)-1)]) comment=(“routing” . ($t))
/ip firewall mangle add chain=prerouting in-interface=”warnet3″ \
connection-mark=(“Net” . ($t)) action=mark-routing \
new-routing-mark=([:pick $e (($t)-1)]) comment=(“routing” . ($t))
}

Parameter yang berwarna biru dapat diubah sesuai kebutuhan perbandingan bandwidth. Disini nth menggunakan counter yang berbeda untuk interface yang berbeda, sekedar untuk menjelaskan penggunaan counter. Dengan counter berbeda-beda tersebut maka tiap paket dari masing2 warnet akan menghitung sendiri-sendiri nth-nya. Apabila diinginkan topologi ke lokal hanya menggunakan 1 jalur, maka mangle connection cukup diberi satu saja, mis. paketa* (untuk paketb* dan paketc* bisa dihapus).

Baca Juga  MERUBAH TPLINK MENJADI UBIQUITI

Untuk Routing bisa menggunakan sbb:

/ip route add dst-address=0.0.0.0/0 gateway=[IP ISP1] \
scope=255 target-scope=10 routing-mark=”ISP1″ disabled=no
/ip route add dst-address=0.0.0.0/0 gateway=[IP Speedy1] \
scope=255 target-scope=10 routing-mark=”Spd1″ disabled=no
/ip route add dst-address=0.0.0.0/0 gateway=[IP Speedy 2] \
scope=255 target-scope=10 routing-mark=”Spd2″ disabled=no

untuk NAT-nya bisa pake NAT masquerade biasa
Pertama kita buat script, misalnya dengan nama “failover” dengan kode sbb :

:set route1 [/tool netwatch get [/tool netwatch find comment=”ISP1″] status]
:set route2 [/tool netwatch get [/tool netwatch find comment=”Spd1″] status]
:set route3 [/tool netwatch get [/tool netwatch find comment=”Spd2″] status]
:if ($route1=”up”) \
# Untuk baris berikut ini silahkan diganti angka-angka sesuai dengan rasio
# v1/v2/v3 sesuaikan angka rasionya kecuali yang angka 0 tetap 0
# w1/w2/w3 diberi angka 1 atau 0 sesuai dengan rasionya
do={:global v1 4; :global w1 1,1,1,1} \
else {:global v1 0; :global w1 0,0,0,0}
:if ($route2=”up”) \
do={:global v2 3; :global w2 1,1,1} \
else {:global v2 0; :global w2 0,0,0}
:if ($route3=”up”) \
do={:global v3 3; :global w3 1,1,1} \
else {:global v3 0; :global w3 0,0,0}
:global v ($v1 + $v2 + $v3 – 1)
:global w ($w1 . $w2 . $w3)
:local M 0
# untuk to disesuaikan penjumlahan semua rasionya
:for Z from=1 to=10 do={
:if ([:pick ($w) (($Z)-1)]=”1″) do={
/ip fire mangle enable [/ip fire mangle find \
comment=(“paketa” . $Z)]
/ip fire mangle enable [/ip fire mangle find \
comment=(“paketb” . $Z)]

/ip fire mangle enable [/ip fire mangle find \
comment=(“paketc” . $Z)]
/ip fire mangle enable [/ip fire mangle find \
comment=(“routing” . $Z)]
/ip fire mangle set [/ip fire mangle find \
comment=(“paketa” . $Z)] nth=($v . “,1,” . $M)
/ip fire mangle set [/ip fire mangle find \
comment=(“paketb” . $Z)] nth=($v . “,2,” . $M)
/ip fire mangle set [/ip fire mangle find \
comment=(“paketc” . $Z)] nth=($v . “,3,” . $M)
:set M ($M+1)
} else={
/ip fire mangle disable [/ip fire mangle find \
comment=(“paketa” . $Z)]
/ip fire mangle disable [/ip fire mangle find \
comment=(“paketb” . $Z)]
/ip fire mangle disable [/ip fire mangle find \
comment=(“paketc” . $Z)]
/ip fire mangle disable [/ip fire mangle find \
comment=(“routing” . $Z)]
} }

Kode diatas akan mendeteksi netwatch masing2 ISP/Speedy dan secara otomatis mengubah nilai nth sesuai dengan ISP yang sedang aktif. Misalnya Speedy 1 tidak aktif maka routing & paket*5,6,7 akan di disable dan akan dihitung paket total yang aktif untuk mengisi nilai nth.

Baca Juga  Membatasi sharing koneksi dengan 'Change TTL'

Langkah terakhir adalah membuat netwatch untuk masing2 ISP/Speedy, kemudian pada masing2 trigger
(semua baik up maupun down) diberi pemanggil ke script ini

/tool netwatch
add host=[IP ISP1] disabled=no interval=20s comment=”ISP1″ \
up-script=”failover” down-script=”failover”
add host=[IP Speedy1] disabled=no interval=20s comment=”Spd1″ \
up-script=”failover” down-script=”failover”
add host=[IP Speedy2] disabled=no interval=20s comment=”Spd2″ \
up-script=”failover” down-script=”failover”

Demikian sedikit sharing dari saya. Jikalau ada kesalahan mohon dikoreksi. Yah, walaupun sudah banyak yang membahas tentang Load Balance + Fail Over, tetapi kelihatannya belum ada yang dengan pendekatan script seperti ini

Previous
Next

Leave a Reply

Your email address will not be published. Required fields are marked *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.

IBX5A7DB3599843D