Whenever you are building a distributed system it is important to understand the different functions that are performed, which systems are involved, and what specific distributed/replication measures those systems support internally.
In your specific case you mentioned Wordpress so I’ll go with that as an example.
Whenever you are dealing with static files or media files, it is best to store them in Object Storage, such as Spaces, by default, this will is a system that is automatically distributed and fault tolerant, and you don’t need to monitor it for available diskspace and you can also enable a CDN immediately.
You can find information on how to integrate spaces here:
When it comes to storing media, block storage itself can only be mounted to a single droplet, so you would need to export it out via NFS if you want multiple systems to access it. But there isn’t a need to do this, as you are better off using Spaces instead.
Next you would have to distribute the database. DigitalOcean now has a Managed Database service which provides support for MySQL and Postgres and sets up replication for you. This way you can create a master database sever and add slave replicas as necessary. You can also enable backups to ensure that if anything goes wrong you can always roll back.
Now your assets and media are stored on Object Storage and your database is replicated.
Last you will need to replicate your web servers and you would use load balancing to split the load across them.
You can find a full tutorial series on that here:
You can also use DigitalOcean’s load balancers for this setup to reduce the need to setup HAproxy yourself.
Hopefully that gives you a head start as well as some basic explanation of the implementation and process.