Thanks @alexmiller for the answer. I read and re-read it multiple times including the thread you pointed me to and I think I have more questions than I got answers to.
Maybe you could help me (and others) to understand how to properly structure a cluster. I read here the suggestion how to split 8 servers, but what am I not understanding is how would you deploy and expand something like this. What if you don’t have 8 but 100 servers?
So here are some questions that I’m struggling with (lets consider that I have 10 servers with a preference to expand to more):
You suggested that each server should be dedicated to a very specific class. So now if you have 4 core server, then 1 process will be lets say class=storage
and the rest would be stateless
. If it’s 4 core server, then for 10 servers, there are 40 cores, but only 10 assigned to storage/transactions and lets say 8 proxies and 5 logs.
- What about the rest? What are those going to do?
- Additionally how would you structure those servers, specially hard-drives? Are they equal (e.g. 1TB space each?)
- What about coordinators? Is it sensible to make one process from each “physical” server a coordinator? What is coordinator anyway. Is it a process that is dedicated to something, or just a discovery mechanism and it truly doesn’t matter how many are there?
- What’s the best spread of classes? Based on this guide it looks like 10 for logs, 9 for proxies. From your example you had 2 for logs, 6 for storage. So extrapolating that on 10 servers: 7 storage, 3 logs, 30 stateless with 10 of them used as proxies (on 4 core server)
- Would it be more sensible to have just 2 core server then?
Also one other question. I just altered the cluster to
Configuration:
Redundancy mode - double
Storage engine - ssd-2
Coordinators - 9
Desired Proxies - 5
Desired Logs - 8
but there is no information on which process is utilized and what class is being assigned.
I still have each server to have both data and log class
[fdbserver.4500]
class=stateless
[fdbserver.4501]
class=storage
[fdbserver.4502]
class=transaction
[fdbserver.4503]
class=stateless
as I need to figure out how to do the deployment across equal servers unequally.
Thank you for your help!