LDAP is the answer, it's awkward to get the hang of, but it's centralised, optimised for read, can be configured with failover and the user logs in as themselves and retrieves their settings. Also there is the handy Net::LDAP module to ease integration into applications.