Sync between application server when setting up load balancer
I tried setting up a load balancer and 2 app servers as Academy guided. The load balancer works well, but once I customize something, only one app server is being built. Therefore, the changes are not replicated in the other servers. How to make it replicated to other servers automatically?
Do you mean that changes made in the configuration are not reflecting on other nodes?
Currently, there is no functionality that synchronises those files. You can either change them manually on all nodes or use third-application tools to synchronise files.
I created a business process. But if a user is connecting to another server than the original server which the business process was created, that user cannot run that process until we manually restart that server (or call UnloadAppDomain).
In addition, the UnloadAppDomain service is affecting only a server reached by the user at that time. Other servers are not affected.
One more thing. I added some dialog. If 2 users are connecting to the same server, the task panel shows immediately the task assigned . However, if the user who triggers the process is connecting to a different server than the other, the task is not shown immediately. We have to refresh the page, or close/open the task panel to see it.
I see that this is the problem of Websocket/SignalR, which only announce to the users connecting to the same server. Is there any switch to make it push to other servers, through Redis for example?
Dear Van Ly,
Creatio webapp is stateful. The static content, js schemas and dll are stored in file system. Lets say there are 3 nodes. I changed some schema or updated the process on one of them. During the saving process, schema will appear in the file system. After publishing the process, the correspondent file will be also generated in the file system. It means that it is necessary to move these files to other nodes to reflect your changes.
The only workaround -
1. the first node is being disabled in balancer.
2. one performs necessary changes on it.
3. the first node is enabled in balancer
4. the second node is disabled to be deployed out of the 1st one.
5. the second node is enabled in balancer
6. the third node is disabled from balancer to be deployed out of the 1st or the 2nd one.
There are no other options since on the first stages of Creatio development, we did not expect that there might be demand in balancers. This idea only appeared in some time. That is why there are some complications.
Finally I come up with a solution: put load balancer under active / passive mode.
backend creatio stick-table type integer size 1 nopurge stick on int(1) server node_1 x.x.x.x check check on-marked-down shutdown-sessions server node_2 x.x.x.x check backup on-marked-down shutdown-sessions
In this mode, the websocket messages will always work. The configuration changes will be sync via syncthing. 1 way sync will not introduce conflicts.