Eu diria que as duas formas estão corretas, mas eu me inclino levemente a usar o memcached por servidor. Contanto que você não tenha dados compartilhados no memcached.
Com o memcached compartilhado, você obtém:
- maior latência
- tráfego de LAN mais alto
- estabilidade dos dados armazenados em cache no caso de fialure do servidor da web (o servidor que assume ainda tem todas as informações)
- você perde todos os dados em cache em caso de falha do servidor memcache (essa pode ser a única preocupação que vejo)
- você pode executar dois, mas isso reduz o orçamento
Com memcached por servidor, você obtém
- menor latência
- menor tráfego
- em caso de failover para outro servidor, não há dados antigos
- mas no caso de um servidor falhar, nenhum outro servidor perde nada
- e é mais barato