The problem is I can get session replication work within the two nodes in the same host but cannot get session replicated with the two nodes in different hosts. Any idea what I might have missed here?
Mostly likely the nodes across physical hosts are not discovering each other. By default, they are discovered by UDP multicast (see jgroups subsystem configuration). This is often due to network or firewall blocking multicast.
You can switch to TCP but you need to subsitute the multicast discovery with something else (e.g. static configuration via TCPPING). See Chapter 7. List of Protocols