I am installing a WSO2 EI two nodes cluster and I have some doubts about the number of databases that have to be created.
I will try to explain my situation as best that I can: I am using WSO2 EI 6.5.0.
I have two nodes cluster. Each node contains the ESB and the MB profile. I will create the needed databases on a Microsoft SQL Server cluster DB.
So I have this situation:
NODE 1: ESB AND MB
NODE 2: ESB AND MB
Reading on the official documentation:
CLUSTERING WSO2 ESB PROFILE: https://docs.wso2.com/display/EI650/Clustered+Deployment
CLUSTERING WSO2 MB PROFILE: https://docs.wso2.com/display/EI650/Clustering+the+Message+Broker+Profile
I can found information of the DBs needed by ESB and MB profiles. In particular ESB profile need the creation of these 4 databases:
while MB profile need the following 5 databases:
So it appears that the first 4 databases are the same between the ESB and MB profiles and that the MB profiles uses an addictional database named MB_DB.
And here my doubt: in a situation like the one that I have (2 nodes cluster that both contains ESB and MB profiles) how many databases have do I have to create?
My original idea was 5 databases because I thought that the first 4 databases are shared between ESB and MB profiles but now I have the following doubt: in theory (correct me if I am doing wrong assertion) both ESB and MB may use same user database and registry but checking the default H2 setup we have that:
So in theory it should mean that it is better to do not mix databases between profile/products.
So what exactly I should do? How many and what databases I have to create?
I am now thinking that maybe I have to completly separate the ESB and MB profiles databases using prefix, something like this:
ESB profile databases: I have to create these 4 databases:
MB profiles databases: I have to create these 5 databases;
Could this be a good solution? But in this way I will have completlely separate dbs and not shared information for users and registry.
What is the best practice in a case like a two nodes cluster like mine?
Thank you
As you said, it is fine to keep separate databases. And what usually does is creating databases with a prefix as you mentioned.
However, let's say if its only one set of users that will be accessing both ESB and MB, then you can go ahead and point a single userdb from the both products (means all the four instances running in 2 nodes).
Regarding the registry database, let say if you have a configuration file that needs to be access from both ESB and MB, then you have to share a single registry_db (and also have to follow the proper registry mounting / see the docs for that). If there is no such case, it is best to keep separate databases.
Bottom line: As long as there is nothing to be shared between ESB and MB internally, it is best to maintain a separate set of databases. You only need to follow clustering and share databases only between the instances of the same product.
Cheers!