Ejabberd Cluster file / images send not working for one node to second node
Environment
- ejabberd version: 20.04
- Erlang version:
erl +V - OS: Linux (Debian)
- Installed from: source | distro package | official deb/rpm | official binary installer | other
Configuration (only if needed): grep -Ev '^$|^\s*#' ejabberd.yml
loglevel: 4
...
Errors from error.log/crash.log
2020-08-19 10:57:54.010 [warning] <0.1997.0>@mod_http_upload:process:563 Rejecting file ca427369-3812-4459-8162-ba4694f831fd.jpg from ::ffff:127.0.0.1 for 7049.xxxx.yyyyy.com: Invalid slot
Ejabberd Clustor file sharing not working for one node to second node
Bug description
The Ejabberd cluster setup via HAProxy load balancer. In the cluster setup I have Node1(Ejabberd server 1) and Node2(Ejabberd server 2). When I upload file some time get rejected regarding invalid slot.
Our setup is HAProxy connect with two nodes(Node1 and Node2)
Note: Single Node(Ejabberd server) working fine.
Please any one share your ideas and feedback.
Yes indeed there is no sharing token assignments between nodes in this module, so you could be only be able to perform upload on node where slot allocation was performed. To make this work we would need to move slot keeping logic to outside each module state, possibly in memory mnesia db?
To make this work we would need to move slot keeping logic to outside each module state, possibly in memory mnesia db?
My plan is to get rid of the module state altogether by replacing it with the external_secret mechanism.
@kamalakkannan1984 right now my suggestion would be to have an external web server handle the actual file uploads by using one of the implementations mentioned here. If you specify the same external_secret for mod_http_upload and the web servers running on your nodes, uploads will be accepted by all of them.
The same thing happens to me on ejabberd 19.09.1. I have a similar setup with 2 nodes and a HAProxy server.
Sure. The suggested solution would work with 19.09.1 as well.
@kamalakkannan1984 right now my suggestion would be to have an external web server handle the actual file uploads by using one of the implementations mentioned here. If you specify the same external_secret for
mod_http_uploadand the web servers running on your nodes, uploads will be accepted by all of them.
Here two catches as I see:
- You should ditribute files across the cluster by hand.
- You can't use global hostname of upload node, instead you should vhost per each vhost in ejabberd.
Am I wrong?