Adding Load Sharing to Routing Script: Difference between revisions
(Updating doc to point to correct script) |
mNo edit summary |
||
| (3 intermediate revisions by 2 users not shown) | |||
| Line 1: | Line 1: | ||
{{DISPLAYTITLE:Adding Load Sharing to a Routing Script}} | |||
Once ordered, the routes will be used one after the other until a route is working (according to [[Route_retry|Route Retry]] parameters). | This article show you how to integrate a routing script filter that sorts matching routes by priority and weight (weight is 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|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) | '''NOTE: starting from version 3.0.80 this script is installed by default''' (only for new installations, or a fresh routing script) | ||
| Line 12: | Line 15: | ||
<pre>Gateway -> Routing scripts -> Example Scripts -> simple_routing.rb [Edit] | <pre>Gateway -> Routing scripts -> Example Scripts -> simple_routing.rb [Edit] | ||
</pre> | </pre> | ||
Three things | |||
Three things must be added. At the start of the script:<br> | |||
1. | |||
<pre>require 'priority_and_weight_load_balancer' unless defined?(PriorityAndWeightLoadBalancer)</pre> | <pre>require 'priority_and_weight_load_balancer' unless defined?(PriorityAndWeightLoadBalancer)</pre> | ||
2. | |||
In the main class:<br> | In the main class:<br> | ||
<pre>include PriorityAndWeightLoadBalancer | <pre>include PriorityAndWeightLoadBalancer | ||
</pre> | </pre> | ||
3. | |||
<pre> | <pre> | ||
after_filter :method => :filter_by_priority_and_weight, | after_filter :method => :filter_by_priority_and_weight, | ||
| Line 24: | Line 33: | ||
</pre> | </pre> | ||
<br> | <br> | ||
The final script will look like this (with possibly other filters also included): | The final script will look like this (with possibly other filters also included): | ||
<pre> | <pre> | ||
require 'base_routing' | require 'base_routing' | ||
| Line 48: | Line 59: | ||
== Adding New Custom Variables <br> == | == Adding New Custom Variables <br> == | ||
You need to add two custom columns to use this script. There is a default value | You need to add two custom columns to use this script. There is a default value and it can be changed in each route afterwards. | ||
<pre>Gateway -> Routes -> Create New Route Column</pre> | <pre>Gateway -> Routes -> Create New Route Column</pre> | ||
'''Name''': priority<br>'''Type attributes''': integer<br>'''Default''': 10 <br> | '''Name''': priority<br>'''Type attributes''': integer<br>'''Default''': 10 <br> | ||
Latest revision as of 10:37, 13 June 2022
This article show you how to integrate a routing script filter that sorts matching routes by priority and weight (weight is 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 must be added. At the start of the script:
1.
require 'priority_and_weight_load_balancer' unless defined?(PriorityAndWeightLoadBalancer)
2.
In the main class:
include PriorityAndWeightLoadBalancer
3.
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 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