Adding Load Sharing to Routing Script
This article show you how to integrate a routing script filter that sorts matching routes by priority and weight (weight being used for load-sharing when multiple routes have the same priority).
Once ordered, the routes will be used one after the other until a route is working (according to Route Retry parameters).
NOTE: starting from version 3.0.80 this script is installed by default (only for new installations, or a fresh routing script)
Setting up Filter Scripts
To setup a Filter, the main script needs to be modified. The main script can be either simple_routing.rb, or any other script.
First, go to the routing script section of the Web portal
Gateway -> Routing scripts -> Example Scripts -> simple_routing.rb [Edit]
Three things need to be added. At the start of the script:
require 'priority_and_weight_load_balancer' unless defined?(PriorityAndWeightLoadBalancer)
In the main class:
include PriorityAndWeightLoadBalancer
after_filter :method => :filter_by_priority_and_weight, :weight_by => :call_attempts, :default_load_share_mode => :alternate_backup, :max_priority_delta => -1
The final script will look like this (with possibly other filters also included):
require 'base_routing' require 'priority_and_weight_load_balancer' unless defined?(PriorityAndWeightLoadBalancer) class SimpleRouting < BaseRouting include PriorityAndWeightLoadBalancer route_match :call_field_name => :called route_match :call_field_name => :calling route_match :call_field_name => :nap route_match :method => :match_nap_availability route_remap :call_field_name => :called, :route_field_name => :remapped_called route_remap :call_field_name => :calling, :route_field_name => :remapped_calling route_remap :call_field_name => :nap, :route_field_name => :remapped_nap after_filter :method => :filter_by_priority_and_weight, :weight_by => :call_attempts, :default_load_share_mode => :alternate_backup, :max_priority_delta => -1 end
Adding New Custom Variables
You need to add two custom columns to use this script. There is a default value creates and it can be changed in each route afterwards.
Gateway -> Routes -> Create New Route Column
Name: priority
Type attributes: integer
Default: 10
Gateway -> Routes -> Create New Route Column
Name: weight
Type attributes: integer
Default: 100