For load balancing and failure safety I want my system should run on multilple machines .
But replicating CQ instance just replicates the data and if some changes are made in one instance then it is not visible in other instances.
Is there a way to configure this (changes made in one instances should be visible in other instances too)?
Not sure if I understand your question, But I guess you can use clustering for your use case (For author). Also see if  is helpful.
You can configure replication agent as first publish instance and then configure a reverse replication agent which will pull the data from publish to author. Then you can configure second replication agent for publish 2 and reverse replication agent for it as well.
This will ensure that all the data is being shared between both the publish instances via author.