your approach is good, but a bit oldschool with new technologies.
Now servers got high memory, CPU, network … I recommend you to design :
- 1 login server
- n Proxy servers
- n world/instance server
PS : Never forget the rule #1 : never trust datum from clients. Everything must work on server except graphics effects (that no means you need an answer from server to make your graphic effect on client)