Sep 24, 2008

Εργαλεία load balancing για Application Servers

Μια μεγάλη, υψηλής διαθεσιμότητας αρχιτεκτονική, έχει ανάγκη για διαμοιρασμό φόρτου σε πολλαπλά επίπεδα, όπως HTTP, HTTP/s, LDAP κ.ο.κ. Στις περισσότερες περιπτώσεις προτείνεται η αγορά ενός hardware load balancer, που συνήθως διαθέτει και δυνατότητες SSL. Για τις ανάγκες όμως των πειραματισμών μας, μπορούμε να χρησιμοποιήσουμε και ειδικά προγράμματα που αναλαμβάνουν αυτό το έργο. Δυο από αυτά που έχω χρησιμοποιήσει είναι το distributor (http://distributor.sourceforge.net) και το balance (http://www.inlab.de/balance.html) για διαμοιρασμό φόρτου HTTP, HTTP/s, LDAP, LDAP/s στον Oracle Application Server.

To μεν distributor είναι πρόγραμμα ανοικτού κώδικα, γραμμένο σε Java και εκτελείται ως ένα απλό Java πρόγραμμα που διαβάζει τις ρυθμίσεις του από ένα αρχείο. Υποστηρίζει αλγόριθμους round-robin, hash και HTTP cookie-based για την τήρηση του session affinity. Ενδεικτικά ένα configuration file του distributor δείχνει ως εξής:

<distributor
bindaddr="0.0.0.0"
port="2001"
terminate_on_disable="no"
half_close="yes"
connection_timeout="2000"
connection_failure_limit="5"
control_port="2501"
service_type="http">


<algorithms>
<algorithm name="hash" hash_timeout="1800000"/>
<algorithm name="roundrobin"/>
</algorithms>


<target_group>

<target hostname="host1" port="2001"/>
<target hostname="host2" port="2001"/>
</target_group>
Η εμπειρία μου το distributor με άφησε ικανοποιημένο, υπήρξαν όμως και περιπτώσεις που η CPU φαινόταν απασχολείται σε εξαιρετικά υψηλό βαθμό όταν είχε να κάνει με διαμοιρασμό φόρτου σε SSL. Εκεί επιστράτευσα το balance που είναι εξαιρετικά απλό στην χρήση του και εκκινείται από command-line, για παράδειγμα ως εξής:

balance -f 8888 host1:8888 host2:8888

που διαμοιράζει το φόρτο στο host1 και στο host2 και λειτουργεί ως foreground job. Αξίζει να σημειωθεί πως και το balance μπορεί να χρησιμοποιήσει τον αλγόριθμο hash για λόγους session affinity.

3 comments:

cherouvim said...

Μπροστά από τον application server έχεις apache httpd;

Ανθη Παπαγεωργιου said...

Hello,

Υπάρχουν και τα 2 για windows?

Serafeim Karapatis said...

Έχω χρησιμοποιήσει και τα δυο εργαλεία για διαμοιρασμό σε Oracle WebCache, Apache HTTP και LDAP, οπότε σε κάθε περίπτωση μπροστά από τον Application Server είχα HTTP.

Το καλό είναι πως και τα δυο εργαλεία είναι ανοικτού κώδικα, ιδίως το distributor δεν χρειάζεται καν build, αφού είναι γραμμένο σε Java. Άρα, λογικά θα λειτουργεί και σε Windows.