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:
- Each CS projets itself (server.ini) to the 3 docbrokers on 3 hosts, so, the 3 CS are known on 3 docbrokers
- DCTM Client (application serveur) requests (cf dfc.properties) randomly the docbroker
- The requested docbroker gives to client the CS the closest content server (proximity)
- 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