JavaBlog.fr / Java.lu Documentum Documentum : Projection of Content Server/Docbase To 2 Docbrokers / Load balancing Content Server

Documentum : Projection of Content Server/Docbase To 2 Docbrokers / Load balancing Content Server

Hi,
 
A post on the projection of a Content Server/Docbase to several Docbrokers.

When a DCTM client wants to request DCTM, there are several STEPS:

  1. Each CS projets itself (server.ini) to the 3 docbrokers on 3 hosts, so, the 3 CS are known on 3 docbrokers
  2. DCTM Client (application serveur) requests (cf dfc.properties) randomly the docbroker
  3. The requested docbroker gives to client the CS the closest content server (proximity)
  4. DCTM client requests CS given by docbroker

 


EXAMPLE 1


We have 1 docbase (DCTM database + content storing) which must be accessible through 2 Content Server / docbrokers of different versions. So, the CServer1 v6.5 and CServer2 v7.2 must projected themself to the docbroker1 v6.5 and docbrocker2 v7.2.

This is done via Parameterization in the server.ini file of Content Server / Repository / docbase (available in [DCTM_FOLDER]/dba/config/[DOCBASE]:
server.ini on CServer1

01#docbroker dctm v6.5
02[DOCBROKER_PROJECTION_TARGET]
03host = mydocbroker1
04port = 1489
05proximity = 1
06 
07#docbroker dctm v7.2
08[DOCBROKER_PROJECTION_TARGET_1]
09host = mydocbroker2
10port = 1489
11#proximity = 999
12# for load balancing on each docbroker
13proximity = 1
14 
15#...

server.ini on CServer2

01#docbroker dctm v6.5
02[DOCBROKER_PROJECTION_TARGET]
03host = mydocbroker1
04port = 1489
05#proximity = 999
06# for load balancing on each docbroker
07proximity = 1
08 
09#docbroker dctm v7.2
10[DOCBROKER_PROJECTION_TARGET_1]
11host = mydocbroker2
12port = 1489
13proximity = 1
14 
15#...

DCTM Client: dfc.properties

01dfc.docbroker.host[0]=host1
02dfc.docbroker.port[0]=1489
03dfc.docbroker.host[1]=host2
04dfc.docbroker.port[1]=1489
05 
06dfc.globalregistry.repository=GLOBALR
07dfc.globalregistry.username=dm_bof_registry
08dfc.globalregistry.password=13x.....A\=\=
09 
10dfc.docbroker.search_order=random

 
Note : If there are 2 clients with the host1 listed as the primary, then CS on host1 would be hit first by client apps (and predominantly used also). In this case, it is necessary to set dfc.docbroker.search_order=random so that at least all servers are hit evenly (for the most part).
==> As the “proximity = 1” parameter having the same value, the load balancing is done on DCTM client side AND docbroker side.

 


EXAMPLE 2


In this second example, we have one repository (mydocbase1) and for this repository, 3 instances of content server running on their own dedicated hosts : host1, host2 and host3. Each host contains 1 CS, 1 JMS and 1 docbroker.

Configuration of CServer1 on host1 : [DCTM_FOLDER]/dba/config/[DOCBASE]/server.ini

01[DOCBROKER_PROJECTION_TARGET]
02host = host1          #Private Docbroker
03port = 1499
04  
05[DOCBROKER_PROJECTION_TARGET_1]
06host = host1          #Public Docbroker
07port = 1489
08proximity = 1
09  
10[DOCBROKER_PROJECTION_TARGET_2]
11host = host2          #Public Docbroker
12port = 1489
13proximity = 999
14  
15[DOCBROKER_PROJECTION_TARGET_3]
16host = host3          #Public Docbroker
17port = 1489
18proximity = 999

Configuration of CServer2 on host2 : [DCTM_FOLDER]/dba/config/[DOCBASE]/server.ini

01[DOCBROKER_PROJECTION_TARGET]
02host = host2         #Private Docbroker
03port = 1499
04  
05[DOCBROKER_PROJECTION_TARGET_1]
06host = host2         #Public Docbroker
07port = 1489
08proximity = 1
09  
10[DOCBROKER_PROJECTION_TARGET_2]
11host = host1          #Public Docbroker
12port = 1489
13proximity = 999
14  
15[DOCBROKER_PROJECTION_TARGET_3]
16host = host3          #Public Docbroker
17port = 1489
18proximity = 999

Configuration of CServer3 on host3 : [DCTM_FOLDER]/dba/config/[DOCBASE]/server.ini

01[DOCBROKER_PROJECTION_TARGET]
02host = host3         #Private Docbroker
03port = 1499
04  
05[DOCBROKER_PROJECTION_TARGET_1]
06host = host3          #Public Docbroker
07port 1489
08proximity = 1
09  
10[DOCBROKER_PROJECTION_TARGET_2]
11host = host1          #Public Docbroker
12port = 1489
13proximity = 999
14  
15[DOCBROKER_PROJECTION_TARGET_3]
16host = host2          #Public Docbroker
17port = 1489
18proximity = 999

In a content server log indicates the proximity:

1[DM_DOCBROKER_I_PROJECTING]info:  "Sending information to Docbroker located on host (host1) with port (1499).  Information: (Config(mydocbase_host1), Proximity(1), Status(Open))."
2[DM_DOCBROKER_I_PROJECTING]info:  "Sending information to Docbroker located on host (host1) with port (1489).  Information: (Config(mydocbase_host1), Proximity(1), Status(Open))."
3[DM_DOCBROKER_I_PROJECTING]info:  "Sending information to Docbroker located on host (host2) with port (1489).  Information: (Config(mydocbase_host2), Proximity(999), Status(Open))."
4[DM_DOCBROKER_I_PROJECTING]info:  "Sending information to Docbroker located on host (host3) with port (1489).  Information: (Config(mydocbase_host3), Proximity(999), Status(Open))."

These configurations are also visible in the server config:

1select r_object_id, r_host_name, web_server_loc, projection_targets, agent_launcher from dm_server_config ;
2# CONTENT SERVER 1 : 3d02xxxx102    host1   host1   host2,host3,host1   agent_exec_method
3# CONTENT SERVER 2 : 3d02xxx4954    host2   host2   host1,host3,host2   agent_exec_method
4# CONTENT SERVER 3 (DRP) : 3d0xxx55e    host3   host3   host3,host1,host2   agent_exec_method

 
DCTM Client: dfc.properties

1dfc.docbroker.host[0]=host1
2dfc.docbroker.port[0]=1489
3dfc.docbroker.host[1]=host2
4dfc.docbroker.port[1]=1489
5dfc.docbroker.host[2]=host3
6dfc.docbroker.port[2]=1489
7dfc.docbroker.search_order = random

 
==> As the “proximity” having different value (1 <> 999), each docbroker returns “always” its Content Server instance. So, the load balancing is done ONLY on DCTM client side.

That’s all!!!

Huseyin OZVEREN

Leave a Reply

Your email address will not be published.

Time limit is exhausted. Please reload CAPTCHA.

Related Post