Not sure about the scheduler but I have hosted redash on multiple servers.
Redash is inherently stateless. It depends on the database that it uses and the workers that are spun up.
So if you have 2 machines running redash and celery workers running on both the machines, when a request is sent it will be sent to one of the machines and the task will be performed by celery. Then state will be stored in redis which I advice you host on a separate instance or use elasticcache. This setup means that redash is just like an API hosted on machines with a UI. As all processing and storage is decoupled and no state is shared, it’s pretty easy to scale out and use a load balancer.
Scheduler is needed to run scheduled queries if I’m right. I think having 2 schedulers may run the queries twice if they are in the same queue. Not sure about this though