Yes. We have something called DRBD; Distributed Replicated Block Device. It is sort of a RAID1 mirroring between two computers, so that whenever something is written to the disk of Server1, the same data is written to the disk of Server2, either synchronously or asynchronously. That's the data part.
For simple cases, this should suffice. It's not difficult to get it up and running. Give it a go in a couple of VMs until you're comfortable. Then you might want to read up on other things to handle service failover. You'll need some way to make the secondary act as primary if the primary fails. Or you can use a primary-primary solution, but that requires special filesystems and you'll want a direct connection between the servers.
This document from the official Ubuntu Server documentation should get you started on DRBD: https://help.ubuntu.com/12.04/serverguide/drbd.html. You'll find more details on the official site: http://www.drbd.org/
The guide in Ubuntu Server documentation will give you a synchronous solution.