Yup. Works a heck of a lot better than Nomadix, too.
http://mum.mikrotik.com/presentations/US10/FelixWindt.pdf - that outlines basic details for optimizing Hotspot performance.
You will want to offload authentication (external AAA) unless everyone is going to use the same username and password. The local user database only really scales to about 100 users for efficient look ups - but it is much faster if everyone uses the same account. Post details on your requirements if you need more information.
I would also definitely offload DNS. The built in DNS server isn’t made for lots and lots of concurrent requests. It is very simple to install a Linux/BSD (or anything else) server and run a simple caching forwarder. Alternatively hand out DNS servers on the Internet, either ones you already control, or something close by (ISP).
You will definitely want to run the short circuits outlined, both for authenticated traffic and DNS:
/ip firewall nat
add chain=pre-hotspot action=accept dst-address-type=!local hotspot=auth
add action=accept chain=pre-hotspot dst-port=53 protocol=udp
DHCP can run on the router as long as you pick large enough subnet sizes and long lease times (I would recommend a /16 and 3h lease times for that many users).
Where the HTML should be hosted depends on what needs to be shown to users, if you post details on what your requirements are I can make more recommendations. Basically - if you need to show a login page, and the combined resources of it exceed 100KB, use an external web server. Keep the login.html as light as possible by moving everything you can into files that are referred to (external CSS etc.) so that client processes that will never need those since they can’t do anything with them (like desktop widgets) don’t have to be served that data.
Use PCQ instead of simple queues, simple queues don’t scale to thousands of users. This is the most important part to scale to many users.
I’ve run 1,800 concurrent users with the above optimizations on an RB1100, but it ran at near 90%. An RB1100AH, RB1000, or RB1100AH2 (depending on when you buy) is should handle 2,000 users just fine. Also keep in mind that while you’ll want to plan for the capacity of users given to you in my experience about half of that number will actually connect.
We’re also running 5.0 on Dell P210s (hardware + level 6 license comes to approximately $1,000). We’re still in the testing phase so I haven’t done huge numbers on them yet, but the other day we had 500 concurrent Hotspot users on one and it was running at 5% utilization. Getting the OS installed is a little tricky since you have to remove the hard drive and do it in another machine for some reason, but after that it seems to work flawlessly.
RouterOS will NOT be able to do true HA for this, where if a router fails users transparently go through a standby router. There are no provisions for syncing user state, for one thing. You could possibly use VRRP, but at the very least users would be shown a login screen since the new router wouldn’t know anything about them. True HA is simply not possible on RouterOS for Hotspot applications, the OS doesn’t support it.
I would go for a warm standby. Have another router ready, configured the same way. Have all user traffic come into the main switch where the routers hook up on a VLAN, with the primary accepting that VLAN on a port. The secondary sits on a port that has the VLAN pruned off. Should the primary fail, reconfigure the switch ports to put the VLAN against the second router. Alternatively simply replug cables. Simple is better - the more complicated your failover solution is, the more likely it is going to cause problems with normal processes. You can hard set the MAC address of the inside interface on both routers to the same so that clients don’t have to re-ARP for their gateway, but have to make sure you only ever have one router connected to the inside network (could be a VLAN) at the same time to prevent duplicate MAC address issues.
A variation of this is to have the warm standby not be a captive gateway at all, but to just let people out to the Internet (configure it the same way as the primary but turn off the Hotspot). The idea there is that after a failure customers shouldn’t be bothered with the downsides of the failover and should just get network access.