Every Monero pool I know of (including the pool you linked), reserves 32 bytes in the block template for the purposes of dealing with job uniqueness, which is laid out something like:
job_nonce | instance_nonce | pool_nonce | worker_nonce
job_nonce would be unique to the job,
instance_nonce unique to the server and lastly
worker_nonce is space a mining proxy can use.
Thus each server, as you correctly observe, needs to use a unique
instance_nonce (per the example above). It doesn't matter what it is, but it needs to be unique. The simplest way of achieving this is to read 4 random bytes. This can be read from
/dev/urandom, or anything which sources random data (such as a UUID). Alternatively you could set an instance ID via a pool config file, removing the need to create a random ID, but you'd have to make sure each pool was configured with it's own unique ID.
If you don't need to support proxies, you don't need to reserve the space for the proxy related nonces.
What is the simplest to do this?
Simplest is probably reading 4 bytes from