Forum Discussion

Nathan_Meyer_39's avatar
Nathan_Meyer_39
Historic F5 Account
Jan 12, 2006

NFS Load Balancing - NLM and Status Monitor

Hi,

 

 

I am trying to setup NFS load balancing using the BigIP LTM to load balance between about 30 backend NFS servers. The servers are in a storage cluster and use GPFS on the backend to access the storage array. The servers export NFS shares for client computers. Most reads and writes are stateless and should not be a problem.

 

 

However, some Unix/Linux applications use file locking. File locking is usually handled by NLM (Network Lock Manager), which uses the native Status Monitor protocol. In basic terms, normally if a client is directly connected to an NFS server and the server it is connected to goes down, it has to wait till the server comes back up, at which point the NFS server machine alerts the status monitor on all the clients that were previously connected to it. This tells the client computers to resend or verify their file locks.

 

 

When I use the BigIp to load balance, the client sees the VIP as the NFS server. When a particular NFS server goes down, the connection can be load balanced to another NFS server in the pool. But if I don't notify the client somehow to resend the file lock information, the new NFS server is not aware of the client locks that may be open.

 

 

I'm looking for a rule that would trigger the NFS client computer to resend the file lock data when its NFS server fails and it is load balanced to a new server.

 

 

So I assume there are at least a couple of questions:

 

 

1) What event could be used to trigger the rule? Would this be like a node down, a re-LB, or something similar?

 

 

2) Once I have the trigger, how would I go about writing the iRule to send a status message of the VIP being restarted to the client? I assume there are ways to format a TCP or UDP packet to simulate a network status monitor alert for the VIP to client computer.

 

 

Background RFC information:

 

Although NLM is independent from NFS it is specified in the same RFC.

 

http://www.faqs.org/rfcs/rfc1813.html

 

 

Here is the status monitor protocol

 

http://www.opengroup.org/onlinepubs/009629799/chap11.htm

 

 

Thank you very much!
No RepliesBe the first to reply