Skip to main content

Microsoft Windows NLB Feature for Stateful Applications

NLB is a software-based load balancer (Windows Feature) that resides on each member in the cluster. Load Balancing is based on number of client connection requests and the NLB algorithm does not dynamically respond to changes in the load on each cluster host (such as the CPU load or memory usage or Network Usage).
Thus, If client population is less and/or the connections produce varying loads on the server, the load balancing algorithm of Microsoft NLB is less effective.
Udacity has special offers worldwide to help anyone learn important, higher-paying job skills during this challenging time. Click here to get your offer and start learning now!
To understand how NLB preserve the session state, first let me take you through the difference between a stateful and stateless connections:

Stateless
The application connection is said to be stateless if the server does not store any state about the client session instead the session data is saved at th client side. The server does not rely on information from earlier request.
** HTTP is a stateless connection as no session data is preserved.
** Cookies and other software’s/Addons are capable of storing session information about client and can be used with HTTP to make the connection stateful.
Note: Stateless Interactions- There is no impact/connection loss if the request is processed by different servers.

Stateful
The application connection is said to be stateful if the server store session state and data about the client session. Server rely on previous connection information (session) while processing the new connections requests.
Note: Stateful Interactions- There will be impact/connection loss if the request is processed by a different server after a session break and if the client session data is not shared between the servers.

Managing Application/Session State

Session state refers to client data that is visible to a particular client during the session duration. The server application containing the client state information must share the same with other hosts in the same cluster to prevent errors.
When an application maintains the state information of the client connection, it’s important to direct all TCP/UDP connections to the same cluster host processing the request.
In terms of application data, the data changes to the data store must be synchronized across multiple hosts in the cluster. One example is to use a backend database that is shared by all the instance of application residing across multiple cluster hosts.
To Maintain the Session State Microsoft NLB uses the Affinity Rule Options to direct all connections from a given client address or class of client addresses to the same cluster host.
Note: Client/server applications that embed session state within “cookies” or push it to a back-end database do not need client affinity to be maintained.

Client Affinity 

client affinity, NLB

NLB Offers three types of affinity configurations to preserve the session state namely; None, Single and Network (Class C). 
1.    None (No Affinity)
With this cluster option, no affinity rules are defined and client connections from any source can access any member host in the cluster. Useful for applications which does not need to store session information.
2.    Single
With this option NLB maps the clients to a specific host in the cluster based on the client’s Full IP Address. Once connection is established, the requests coming from the same client IP address always reach the same member server in the cluster.
Useful for Intranet Applications, as the clients in intranet have IP address within a narrow range. If used for Internet Applications, NLB becomes not efficient as it can span a broad IP range and also more computing overhead to the distributing algorithm. 
3.    Network (Class C)
With this option NLB associates clients to a specific host in the cluster based on the Class C {(192.0.0.1 to 223.255.255.254) /24} portion of the client IP Address. The connection from the same Class C address range always access the same member server in the cluster. This is best suited for cluster serving Internet applications.
Extended Affinity Option:
This is only available for Single and Class C Affinity options and is achieved by setting a timeout value in the filtering options. This timeout indicates that when a connection is lost/Interrupted, the cluster host keeps the client data for the specified duration of time so that if the client reconnects within the timeout duration, the client preferences/selections are still preserved.
Ex: Customer using an online shopping with products selected in the shopping cart, if the customer loss the connection and reconnects (Either due to client side issue or due to application side issue), the client can still see the selected products in the cart if the timeout value is defined.
---------------------------------------------------------------------------------------------------------------------------------
Article Author :-
Mr.Arjun Sunil
6+ year of experience in Windows Servers, Cloud & Virtualization.
Follow Arjun Sunil at his LinkedIn Here.
---------------------------------------------------------------------------------------------------------------------------------

Popular posts from this blog

Download Microsoft Office 2019 offline installer.

When you do malware analysis of documents or office files, it is important to have Microsoft Office installed in your Lab machine. I am using flare VM and it doesn't comes with MS Office. Since Microsoft is promoting Microsoft 365 over the offline version, finding the offline installer is not that easy. Here is the list of genuine Microsoft links to download the office .img files.  Download Microsoft Office 2019 Professional Plus : https://officecdn.microsoft.com/db/492350F6-3A01-4F97-B9C0-C7C6DDF67D60/media/en-US/ProPlus2019Retail.img Download Microsoft Office 2019 Professional : https://officecdn.microsoft.com/db/492350F6-3A01-4F97-B9C0-C7C6DDF67D60/media/en-US/Professional2019Retail.img Download Microsoft Office 2019 Home and Business : https://officecdn.microsoft.com/db/492350F6-3A01-4F97-B9C0-C7C6DDF67D60/media/en-US/HomeBusiness2019Retail.img Download Microsoft Office 2019 Home and Student : https://officecdn.microsoft.com/db/492350F6-3A01-4F97-B9C0-C7C6DDF67D60/media/en-U...

RUST error: linker `link.exe` not found

While compiling Rust program in a windows environment, you may encounter the error : linker `link.exe` not found. This is because of the absence of the C++ build tools in your machine. For compiling Rust programs successfully, one of the prerequisites is the installation of the Build Tools for Visual Studio 2019.   Download the Visual Studio 2019 Build tools from the Microsoft website. After the download, while installing the Build tools, make sure that you install the required components (highlighted in Yellow) This will download around 1.2GB of required files. Once everything is successfully installed, reboot and re-run your rust program and it will compile successfully.   Read More on RUST Hello World Rust Program : Code explained RUST Cargo Package Manager Explained Data Representation in Rust.

Cisco ASA: Disable SSLv3 and configure TLSv1.2.

For configuring TLS v1.2, the ASA should run software version 9.3(2) or later. In earlier versions of ASA, TLS 1.2 is not supported.If you are running the old version, it's time to upgrade. But before that i will show you the config prior to the change. I am running ASA version 9.6.1 Now ,set the server-version to tlsv1.2, though ASA supports version tlsv1.1, its always better to configure the connection to more secure. Server here in the sense, the ASA will be act as the server and the client will connect to the ASA.     #ssl server-version tlsv1.2 set the client-version to tlsv1.2, if required.     #ssl client-version tlsv1.2 ssl cipher command in ASA offers 5 predefined security levels and an additional custom level.     #ssl cipher tlsv1.2 high we can see the setting of each cipher levels using #show ssl cipher command. Now set the DH group to 24, which is the strongest offered as of now in the AS...

How to Install Netmiko on Windows?

Netmiko, developed by kirk Byers is an open source python library  based on Paramiko which simplifies SSH management to network devices and is primarily used for network automation tasks. Installing Netmiko in linux is a matter o f one single command but if you need to use Netmiko in your Windows PC, follow this process. 1) Install the latest version of Python. 2) Install Anaconda, which is an opensource distribution platform that you can install in Windows and other OS's (https://www.anaconda.com/download/) 3) From the Anaconda Shell, run “ conda install paramiko ”. 4) From the Anaconda Shell, run “ pip install scp ”. 5) Now Install the Git for Windows. (https://www.git-scm.com/downloads) . Git is required for downloading and cloning all the Netmiko library files from Github. 6) From Git Bash window, Clone Netmiko using the following command git clone https://github.com/ktbyers/netmiko&#8221         7) Onc...

Recovery Procedure: Alcatel-Lucent Omni-Switch not booting AOS: Going to Mini-boot prompt.

Problem: Switch not booting AOS; Going to Mini-boot prompt. Model: Alcatel-Lucent OS6850 [Note:The same procedure might be applicable for different models of Omni-Switches, However, for this illustration, i have used OS-6850 ] Reason: This problem may occurs due to corrupt AOS image files or misconfigured boot parameters. Hence switch cannot boot the images properly and will go to Mini-boot prompt.  Work Around: [Note: This zmodem procedure consumes a lot to time to finish the process.] 1.) Power off your OS6850 2.) When you switched it back on, stop it before the Miniboot (there is some counter counting down from 4). Press Enter to break. 3.) You will have the following prompt " => " 4.) Enter " setenv baudrate 115200 ”. Increasing baudrate helps to increase the data transfer speed using zmodem. 5.) Enter " saveenv " 6.) Enter " boot " 7.) The switch should run now in baud rate 115200 (so you have to change your clients ter...

[FIX] yt_dlp.utils.DownloadError: ERROR: You have requested merging of multiple formats but ffmpeg is not installed

[ISSUE] While running your python code or while executing a job : yt_dlp.utils.DownloadError: ERROR: You have requested merging of multiple formats but ffmpeg is not installed [CAUSE] Your code is unable to find ffmpeg installed in your system. [FIX] Install ffmpeg in your system. 1) Download ffmpeg package from Git or already compiled executable from the official website .  2) Once downloaded, extract the zip file and place it in your desired location. eg: C:\  3) Now add the ffmpeg bin directory location in the user environment variable path.     In the User variables section. Select Path and click on New.  Click on New and add the path. Now compile your code and it should work. For the python code to download YouTube playlist, visit https://github.com/jaacostan/YTDL

[FIX] Can't locate Net/SNMP.pm in @INC (you may need to install the Net::SNMP module)

I was trying to use the snmpenum.pl in my lab and encountered this error. Can't locate Net/SNMP.pm in @INC (you may need to install the Net::SNMP module) I searched over the internet for the fix , but couldn't able to find something direct. However, going through some of the stackoverflow pages, i fixed it and is explained below. 1) First install the required packages related to snmp utilities. sudo apt-get install libsnmp-perl 2) Install the SNMP module for perl. perl -MCPAN -e 'install Net::SNMP' That's it. And i was able to run the script.