It's good to have 3 ZKs, for majority-rule
Some colocation would also help make best use of resources here.
I would do 3 "master server" (Coordinator, Overlord, ZK colocated on same server):
https://druid.apache.org/docs/latest/design/processes.html#master-server
Since these are so big (64 CPU, 500GB RAM is quite large for a master) you could even co-locate the "query server" stuff (Broker, Router) on those same 3 physical servers:
https://druid.apache.org/docs/latest/design/processes.html#query-server
That leaves you with 22 remaining servers
For these you have two basic options:
1) Colocate MM and Historical, "data server" style:
https://druid.apache.org/docs/latest/design/processes.html#data-server
2) Separate MM and Historical
Advantage of (1) is potentially better resource utilization, as both kinds of processes can burst to use the full resources of those 22 servers.
Advantage of (2) is less resource conflict between the two kinds of processes. This is the typical approach in containerized or virtualized environments.
For a bare metal environment IMO (1) is a good place to start, as you don't have to think so much about how much resources to allocate to Historical vs MM