A technique for performing synchronous replication on both block and file-based objects employs a replication appliance embedded alongside a unified data path IO stack within a storage processor of a data storage system. Various arrangements are described for achieving failover, migration, failback, and load balancing, both involving other embedded replication appliances and involving external replication appliances.