Clustering is a high-availability solution that mitigates a hardware failure. Basically, you have two or more servers all capable of serving up SQL Server. Should the one server go down which is hosting SQL Server, another server will pick up. There is just one SQL Server name and one set of database and log files. Replication allows for the transfer of data and isn't necessarily a high availability solution. For instance, you could replicate data down to a sales rep's laptop before they go off-site.