Load balancing with a round robin load balancing method based on the R_MSEC macro of syslog-ng OSE

This section describes a round robin load balancing method based on the R_MSEC macro of AxoSyslog to load balance your logs between multiple AxoSyslog destinations.

For more information about the R_MSEC macro and further macros of AxoSyslog, see Macros of AxoSyslog.

Example: round robin load balancing between multiple destinations

The following example is a round-robin load balancing method, based on AxoSyslog’s R_MSEC macro.

   destination d_lb_network { 
      channel { 
        channel { 
          filter { 
          "0" == "$(% ${R_MSEC} 2)" 
          }; 
          destination { 
            network("myhost1" 
              disk-buffer(flow-control-window-size(10000) capacity-bytes(2000000))); 
          }; 
          flags(final); 
        }; 
     
        channel { 
        filter { 
        "1" == "$(% ${R_MSEC} 2)" 
        }; 
    
        destination { 
          network("myhost2" 
            disk-buffer(flow-control-window-size(10000) capacity-bytes(2000000))); 
        }; 
        flags(final); 
        }; 
      }; 
    }; 

The filter {" <return value >" == "$(% ${R_MSEC} 2)"}; code snippets (in bold) serve as the basis of the method. This filter separates incoming log messages’ timestamp values based on the R_MSEC macro, using a division with remainder method, and distributes the log messages equally between two destinations based on the return value (in this case, 0 or 1).

If you need a file instead of a network destination, replace the network destination with the file in the example (and use the same analogy for any other AxoSyslog destinations).

For an alternative method to use the round robin load balancing method based on the R_MSEC macro, see Configuration generator for the load balancing method based on MSEC hashing.