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

#docbroker dctm v6.5
[DOCBROKER_PROJECTION_TARGET]
host = mydocbroker1
port = 1489
proximity = 1

#docbroker dctm v7.2 
[DOCBROKER_PROJECTION_TARGET_1]
host = mydocbroker2
port = 1489
#proximity = 999
# for load balancing on each docbroker
proximity = 1 

#...

server.ini on CServer2

#docbroker dctm v6.5
[DOCBROKER_PROJECTION_TARGET]
host = mydocbroker1
port = 1489
#proximity = 999
# for load balancing on each docbroker
proximity = 1 

#docbroker dctm v7.2 
[DOCBROKER_PROJECTION_TARGET_1]
host = mydocbroker2
port = 1489
proximity = 1

#...

DCTM Client: dfc.properties

dfc.docbroker.host[0]=host1
dfc.docbroker.port[0]=1489
dfc.docbroker.host[1]=host2
dfc.docbroker.port[1]=1489

dfc.globalregistry.repository=GLOBALR
dfc.globalregistry.username=dm_bof_registry
dfc.globalregistry.password=13x.....A\=\=

dfc.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

[DOCBROKER_PROJECTION_TARGET]
host = host1          #Private Docbroker
port = 1499
 
[DOCBROKER_PROJECTION_TARGET_1]
host = host1          #Public Docbroker
port = 1489
proximity = 1
 
[DOCBROKER_PROJECTION_TARGET_2]
host = host2          #Public Docbroker
port = 1489
proximity = 999
 
[DOCBROKER_PROJECTION_TARGET_3]
host = host3          #Public Docbroker
port = 1489
proximity = 999

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

[DOCBROKER_PROJECTION_TARGET]
host = host2         #Private Docbroker
port = 1499
 
[DOCBROKER_PROJECTION_TARGET_1]
host = host2         #Public Docbroker
port = 1489
proximity = 1
 
[DOCBROKER_PROJECTION_TARGET_2]
host = host1          #Public Docbroker
port = 1489
proximity = 999
 
[DOCBROKER_PROJECTION_TARGET_3]
host = host3          #Public Docbroker
port = 1489
proximity = 999

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

[DOCBROKER_PROJECTION_TARGET]
host = host3         #Private Docbroker
port = 1499
 
[DOCBROKER_PROJECTION_TARGET_1]
host = host3          #Public Docbroker
port 1489
proximity = 1
 
[DOCBROKER_PROJECTION_TARGET_2]
host = host1          #Public Docbroker
port = 1489
proximity = 999
 
[DOCBROKER_PROJECTION_TARGET_3]
host = host2          #Public Docbroker
port = 1489
proximity = 999

In a content server log indicates the proximity:

[DM_DOCBROKER_I_PROJECTING]info:  "Sending information to Docbroker located on host (host1) with port (1499).  Information: (Config(mydocbase_host1), Proximity(1), Status(Open))."
[DM_DOCBROKER_I_PROJECTING]info:  "Sending information to Docbroker located on host (host1) with port (1489).  Information: (Config(mydocbase_host1), Proximity(1), Status(Open))."
[DM_DOCBROKER_I_PROJECTING]info:  "Sending information to Docbroker located on host (host2) with port (1489).  Information: (Config(mydocbase_host2), Proximity(999), Status(Open))."
[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:

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

 
DCTM Client: dfc.properties

dfc.docbroker.host[0]=host1
dfc.docbroker.port[0]=1489
dfc.docbroker.host[1]=host2
dfc.docbroker.port[1]=1489
dfc.docbroker.host[2]=host3
dfc.docbroker.port[2]=1489
dfc.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