As above, you can super-centralize or spread out with smaller, local servers. Asterisk servers can trunk calls to various other via SIP or IAX2 (inter-Asterisk exchange) protocols. You'll route calls based on extension range (2xxx is NYC, 3xxx is Boston, etc) just by which server has it (Wiki for DUNDi)