Question
How do I load balance Notes Integration?
Answer
1. Use standard Domino Cluster technology.
2. NRPC High Availability Mail and Calendar Routing for Foreign Domains
The Domino environment supports multiple Foreign Domain documents for the same Foreign Domain name. Under this concept, highly available mail routing and free busy services can be configured using the following techniques.
The Domino Router Task
The router task loads the Foreign Domain documents into the routing table based on the latest modified to earliest modified order, which most likely will NOT reflect the order found in Domains view of the Domino Directory. When a Domino mail server attempts to route mail to a Foreign Domain, the router checks the routing table for the server hosting the Foreign Domain, then checks connection points for routing to that Domino server. In the event of a flat Notes Named Network, if the Domino server hosting the Foreign Domain is not reachable via NRPC, then the router will attempt to connect to the next in order. In a structured Notes Named Network, the server with the ‘last hop’ to the Domino server hosting the Foreign Domain will use multiple documents as described above. The Domino router task delivers ‘calendar’ related routable documents to the Domino server listed on the Calendar Server tab, not to the server listed on the Mail Server tab.
The Domino CalConn Task
The calendar connector task is not quite as intelligent as the router task. The calendar connector task connects directly to the Domino server hosting the Foreign Domain. The calendar connector task will use the same order described above, the latest document modified first in order to the earliest modified document. The calendar connector task does not ‘relay’ requests like the router task. This is important to note in order to implement high availability for free busy requests to a Foreign Domain. The calendar connector task will throw the following informational warning to the console when multiple Foreign Domain documents are used in the environment every time a free busy request is made:
Warning: Multiple documents detected for domain 'BTEx' in Domino Directory for the scheduling request.
Defining Highly Available Services
Simple method for Highly Available Mail Routing
Create more than one coexistence server with identical configurations. Create multiple Foreign Domain documents and list a different Coexistence server on the Mail Server and Calendar Server tabs. The following behaviour will occur.
Primary Server (last document modified):DominoA (Mail) DominoA (Calendar)
Secondary Server: DominoB (Mail) DominoB (Calendar)
All mail routing is sent is DominoA including all routable calendar forms. All free busy requests flow to DominoA. Messages are routed to Exchange by SMTP and HTTP.
When DominoA is no longer reachable via NRPC (the server must be down and not reachable, not just busy) mail is routed to DominoB. Calendar related routable messages will also be routed to DominoB. All free busy requests will flow to DominoB. Mail items and routable calendar items are routed to Exchange by SMTP. All free busy requests fail at the calendar connector.
This is due to the calendar connector task on the second Coexistence server sees that DominoA is the first loaded calendar server in the calendaring table and that server is not reachable. The calendar connector task does not ‘relay’ to any other servers and does not recognize that it too is defined to handle these requests.
Making Free Busy Highly Available
Using the same scenario above, a Servers Only group is created containing all mail and application servers in the organization. A Domino administrators group should also already exist. On each of the Foreign Domain documents security is enabled (creating a readers field), giving access to the Servers Only group, administration group and the individual Coexistence server. This translates into all Domino servers, excluding the Coexistence servers, are able to see both Foreign Domain documents as well as the administrators of the environment; however each coexistence server will only be able to see and load the Foreign Domino document specific to itself. An additional step however is required for this function correctly. There is a field on the Foreign Domain document called ‘DocumentAccess’ that is a ‘readers’ field and contains a role that is commonly given to the group ‘LocalDomainServers’. This field must be programmatically removed. If the Foreign Domain document is ever edited this field will be added back onto the document. Appendix A contains a LotusScript agent that can be used for removing this field.
Regional Routing
Using the above method described, using Servers Only groups and multiple coexistence servers and multiple Foreign Domain Documents with reader security access set it is possible to create a regional routing topology that is highly available for both mail routing and free busy services.
Appendix A – Agent to Remove DocumentAccess field
This agent can be run from any Lotus Notes application. Agent can be run from Action Menu List or Agent list selection and the Target is set to None.
Option Public
Option Declare
Dim s As NotesSession
Dim nab As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim sName As String
Dim fName As String
Dim fddName As String
Dim searchStr As String
Dim cnt As Long
Dim gonogo As Integer
Sub Initialize
Set s = New NotesSession
sname = InputBox$("The Domino Directory server name (blank for local):)","Server Name")
fname = InputBox$("The file name of the Domino Directory:","File Name","names.nsf")
fddName = InputBox$("The Foreign Domain name to process:","Foreign Domain Name","BTEx")
If fddName ="" Then
MsgBox "No Foreign Domain Name as provided, exiting agent."
Exit sub
End If
Set nab = s.GetDatabase(sname,fname,False)
If nab Is Nothing Then
MsgBox "Unable to open the Domino Directory " & sname & "!!" & fname & " exiting agent."
Exit sub
End If
searchStr=|Form="Domain"& Type="Domain"& DomainType="ForeignDomain"& @LowerCase(DomainName)="| & LCase$(fddName)& |"|
Print searchStr
Set dc = nab.Search(searchStr,Nothing,0)
If dc.Count = 0 Then
MsgBox "No matchining documents found, check status bar for search string. Exiting agent."
Exit sub
End If
gonogo = MessageBox("Found " & dc.Count & " documents to process. Continue?",1+32,"Continue")
If gonogo = 2 Then
MsgBox "Processing has been cancelled. Exiting agent."
Exit sub
End If
Set doc = dc.Getfirstdocument()
While Not doc Is Nothing
cnt=cnt+1
Print "Processing UNID " & doc.Universalid
Call doc.Removeitem("DocumentAccess")
Call doc.Save(True,False)
Set doc = dc.Getnextdocument(doc)
Wend
MsgBox "Finished processing " & cnt & " documents."
End Sub
© ALL RIGHTS RESERVED. Feedback Terms of Use Privacy Cookie Preference Center