Replication between clusters

Please do not merge this pull request.
I would like to discuss some design issues which are commented by "TODO" in code.
It is better to add the error log when the retry is failed.