ICTFax SP Scalable Edition is an advanced and scalable fax server software designed for businesses that require a high-performance and reliable faxing solution. One of the key features of ICTFax SP is its load balancing module, which leverages RabbitMQ to ensure the efficient distribution of fax processing tasks across multiple nodes. This article will explore the load balancing module of ICTFax SP, focusing on how RabbitMQ is used to achieve scalability and reliability, and the factors involved in testing load balancing using RabbitMQ.

Introduction to ICTFax SP Scalable Edition:

ICTFax SP Scalable Edition is a turnkey business solution for B2B organizations and service providers. It enables them to set up scalable and global fax solutions for their customers, market, and resale to their customers with their brand name. ICTFax SP is designed to handle large volumes of fax traffic by distributing the load across multiple servers. It supports fax protocols, including T.38 and G.711, and integrates seamlessly with VoIP systems. The scalable edition ensures businesses can expand their faxing capabilities without compromising performance.

What is a Load Balancing Module?

A load-balancing module is a system component designed to distribute workloads across multiple servers or resources to ensure no single server becomes overwhelmed. This distribution optimizes resource use, minimizes response times, and ensures high availability and reliability of the system. In the context of ICTFax SP, the load balancing module manages fax traffic by using RabbitMQ to balance the load efficiently across multiple fax processing servers.

Load Balancing Module using RabbitMQ:

1. Overview of RabbitMQ:

RabbitMQ is an open-source message broker software that facilitates communication between distributed systems by enabling applications to send and receive messages through a messaging queue. It supports various messaging protocols and provides a reliable and scalable method for handling high-throughput messaging.

2. Load Balancing Mechanism:

  • Message Queuing: RabbitMQ receives fax requests and places them into a queue. This helps in managing the fax traffic efficiently, especially during peak times when the load is high.
  • Distributed Processing: The queued messages are distributed among multiple fax processing nodes. Each server processes the faxes independently, ensuring that the load is balanced across the entire system.
  • Failover Handling: If a server becomes unavailable or fails, RabbitMQ reroutes the pending fax requests to other operational servers. This ensures that there is no disruption in service and that all fax requests are eventually processed.
  • Scalability: New fax processing servers/node can be added to the system to handle increased load. RabbitMQ automatically starts distributing messages to the new nodes, making the system easily scalable.

How to Setup Load Balancing Module in ICTfax SP Scalable Edition:

Setting up the load balancing module in ICTFax SP (Scalable Edition) involves configuring RabbitMQ and integrating it with the ICTFax system. Here’s a step-by-step guide to help you through the process:

1) Install ICTCore on both node (main node & consumer node):

First we installed the ICTCore SP Edition on both nodes with their dependencies.

2) Install the RabbitMQ message server and dependencies:

We have to install the RabbitMQ dependency (Erlang) and then install the RabbitMQ message broker on the main node/server. After that delete the user guest from rabbitmq service and add new user with name ictcore and password.

3) Install AMQP protocol:

After that install the amqp protocol with composer require command. After that add amqp configurations in ictcore.conf file.

4) Install Lsyncd software and setup database:

After that we installed Lsyncd software. Lsyncd utility makes document and provider directories syncd with consumer nodes. And then setup the database and Also change database credentials in ictcore.conf file.

After that Create SSH public key for apahce user and root user, to make connection with consumer nodes. first give ownership permission of apache to file /usr/ictcore/share/httpd/.

How ICTFax Load Balancing Module works:

1. Introduction to Load Balancing in ICTFax

Load balancing is essential for distributing workloads across multiple servers to ensure no single server becomes a bottleneck. ICTFax SP’s load balancing module ensures high availability and scalability for handling large volumes of fax traffic.

2. Role of RabbitMQ

RabbitMQ is a message broker that facilitates the communication between different components of the ICTFax system. It queues the tasks and distributes them to various processing nodes, ensuring balanced workload distribution.

3. Key Components

  • Message Broker (RabbitMQ): Acts as the central point for receiving and distributing tasks.
  • Producer nodes: These nodes generate tasks (e.g., outgoing fax jobs) and send them to RabbitMQ.
  • Consumer nodes: These nodes receive tasks from RabbitMQ and process them (e.g., sending faxes).

So admin will add consumer node from web panel of main node. Add following ssh informations while adding the new consumer nodes.

1, ssh_host

2, ssh_user

3, ssh_pass

Note: while adding new node make sure that, active = yes.

After that admin/user of main node will create contact group and import contacts into this group. Then user will create fax campaign with selected group.

4. Workflow of Load Balancing

  1. Task Generation:
    • When a fax job is initiated, the producer node generates a task and sends it to the RabbitMQ queue.
  2. Task Queuing:
    • RabbitMQ holds the tasks in a queue until a consumer node is available to process them.
  3. Task Distribution:
    • RabbitMQ distributes tasks to available consumer nodes based on their current load and availability.
  4. Task Processing:
    • Consumer nodes process the tasks, send the faxes, and report back the status to the RabbitMQ.
  5. Task Completion:
    • Once a task is completed, RabbitMQ updates the task status and moves on to the next task in the queue.

User could be monitor every consumer node from dashboard, you will see a statistic card with named nodes. after clicking nodes card a table will be appeared on the dahboard page which is related to nodes monitoring.

The following service and heath of consumer nodes can be monitor:

  • channel
  • cpu
  • memory
  • disk
  • MySQL
  • Apache

Advantages of using RabbitMQ for load Balancing:

  • Scalability: Easily add or remove consumer nodes to scale the system up or down.
  • High Availability: Even if one consumer node fails, others can continue processing tasks.
  • Efficient Resource Utilization: Tasks are distributed based on the current load, preventing any single node from becoming overwhelmed.
  • Flexibility: RabbitMQ can handle various types of tasks and can be integrated with other systems for enhanced functionality.

Summary:

The load balancing module in ICTFax SP (Scalable Edition) efficiently manages and distributes fax requests using RabbitMQ. By leveraging message queuing, distributed processing, and fault tolerance, the module ensures high availability, scalability, and reliability. This robust system enables businesses to handle large volumes of fax traffic seamlessly, ensuring efficient resource utilization and optimal performance.