Hi Somil,
I'm using the similar architecture - 2 nodes in cluster and 3rd node outside for rebuilding indexes. The fact that 3rd node is not in the cluster (EHCache is not synchronized) means you have a broken cluster. With version 3.x it works ok, but after we upgraded to 4.x some issues appeared with reindexation and DB data. Maybe you will face it as I do, but it depends on environment and Alfresco release so maybe you will be lucky.
To your trouble - if you have a 3rd node outside of cluster you need:
1) Completely disable EHCache on this 3rd node, because you need to use data directly from DB. Nodes in cluster inform each other about changes, but your 3rd node is outside of cluster and it's not receiving these infos.
Try to add this JVM parameter to your app. server:
-Dnet.sf.ehcache.disabled=true
You can verify if EHCache is enabled from log file or do a heapdump - You will see if EHCache is using some heap or not.
2) 3rd node should be just readonly. You need to change these properties:
server.transaction.mode.default=PROPAGATION_REQUIRED, readOnly
server.transaction.allow-writes=false