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
02 | [DOCBROKER_PROJECTION_TARGET] |
08 | [DOCBROKER_PROJECTION_TARGET_1] |
12 | # for load balancing on each docbroker |
server.ini on CServer2
02 | [DOCBROKER_PROJECTION_TARGET] |
06 | # for load balancing on each docbroker |
10 | [DOCBROKER_PROJECTION_TARGET_1] |
DCTM Client: dfc.properties
01 | dfc.docbroker.host[0]=host1 |
02 | dfc.docbroker.port[0]=1489 |
03 | dfc.docbroker.host[1]=host2 |
04 | dfc.docbroker.port[1]=1489 |
06 | dfc.globalregistry.repository=GLOBALR |
07 | dfc.globalregistry.username=dm_bof_registry |
08 | dfc.globalregistry. password =13x.....A\=\= |
10 | 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
01 | [DOCBROKER_PROJECTION_TARGET] |
02 | host = host1 #Private Docbroker |
05 | [DOCBROKER_PROJECTION_TARGET_1] |
06 | host = host1 # Public Docbroker |
10 | [DOCBROKER_PROJECTION_TARGET_2] |
11 | host = host2 # Public Docbroker |
15 | [DOCBROKER_PROJECTION_TARGET_3] |
16 | host = host3 # Public Docbroker |
Configuration of CServer2 on host2 : [DCTM_FOLDER]/dba/config/[DOCBASE]/server.ini
01 | [DOCBROKER_PROJECTION_TARGET] |
02 | host = host2 #Private Docbroker |
05 | [DOCBROKER_PROJECTION_TARGET_1] |
06 | host = host2 # Public Docbroker |
10 | [DOCBROKER_PROJECTION_TARGET_2] |
11 | host = host1 # Public Docbroker |
15 | [DOCBROKER_PROJECTION_TARGET_3] |
16 | host = host3 # Public Docbroker |
Configuration of CServer3 on host3 : [DCTM_FOLDER]/dba/config/[DOCBASE]/server.ini
01 | [DOCBROKER_PROJECTION_TARGET] |
02 | host = host3 #Private Docbroker |
05 | [DOCBROKER_PROJECTION_TARGET_1] |
06 | host = host3 # Public Docbroker |
10 | [DOCBROKER_PROJECTION_TARGET_2] |
11 | host = host1 # Public Docbroker |
15 | [DOCBROKER_PROJECTION_TARGET_3] |
16 | host = host2 # Public Docbroker |
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:
1 | select 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
1 | dfc.docbroker.host[0]=host1 |
2 | dfc.docbroker.port[0]=1489 |
3 | dfc.docbroker.host[1]=host2 |
4 | dfc.docbroker.port[1]=1489 |
5 | dfc.docbroker.host[2]=host3 |
6 | dfc.docbroker.port[2]=1489 |
7 | 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
Related