[SVN 3639] Multicast Issue
-
Here is my setup :
- One Master node on the subnet to which I would like to do multicast (it has only been installed as a storage node)
- One Slave node on another subnet (that node hosts the full fog installation)
I have the following issue with Multicast delpoyment :
- When I create a new multicast deployment task, it doesn’t shows up in “Active Multicast Tasks”. But, for each computer that is part of the multicast, I have a line in “Active Tasks”.
- In the “multicast.log” on my master node, I have repeatedly “* No Tasks Found!”
- When checking the Database, I saw in the table “multicastSessions” that the session I just created exists, but has strange values : msState and msClients have a 0 value
I tried to restart all fog services on both nodes and finally, both computers.
Thank for your help
-
@glefebvr When you’re looking at the log, with the repeated, “No tasks found”, is this off of the Master node?
-
is this off of the Master node?
I’m sorry, my mother tong is not english. I don’t understand.
On my master node, I have only this in the multicast.log file :
- No Tasks Found!
On the Slave node, I have this :
- This is not the master node
-
Is the FOGMulticastManager running?
-
@Wayne-Workman They are on both machines
-
I don’t think it is a configuration or system issue because I tried to start - stop FOG service on each computer. I also tried to restart completely both computers.
Every service is running without error in the logsWhat made me think that it’s a bug is the 0 value in the field “msState” of the table “multicastSessions”, because in the table “taskStates”, there is no entry for value 0
-
@glefebvr taskState 0 in multicast manager just means that it’s been “queued”, but nothing has been enacted on it.
Once the task initiates, it places the task state to 1, (in-line/progress).
-
I think I found the issue :
The problem is in the function “getAllMulticastTasks” in the “MulticastTask.class.php” and with that precise line
if (in_array($FOGCore->resolveHostname($Image->getStorageGroup()->getOptimalStorageNode()->get('ip')),$FOGCore->getIPAddress())) {
It means that if the IP Address of the node on which the FOGMulticastManager is running, is the same as an “optimal” IP address of any storage node of the same storage group, then the task will be created (stateID change from 0 to 1, my bad !).
Then problem with this, is the assumption that any node in the storage group can do Multi-Cast. This is not true, because some nodes of a same storage group could be on different subnets and in many companies (as the one where I work) multi-cast is not routed.
In my particular configuration, I use the storage node concept of FOG to circumvent the Multicast routing limitation. It was working like this in 0.32 and I expected that it worked the same in trunk.
Here is my solution (not yet tested for deployment, but the multicast task shows up correctly) :
if (in_array($FOGCore->resolveHostname($Image->getStorageGroup()->getMasterStorageNode()->get('ip')),$FOGCore->getIPAddress())) {
Would it be possible to implement either that solution directly (don’t know the implications) or at least to have an option saying "I want only my master node to do multicast) ?
-
I’ve made this change in current trunk.
This means, however, you will HAVE to have a master node. The current “getMasterNode()” method operates by checking the group for a master. If one is not present within the group (yes it is possible, though uncommon) it will still create a tasking, but nothing will actually initiate the tasking for the udp-sender.
I believe this was the intent, but some issue found later caused another issue.
-
@Tom-Elliott Thank you very much for answering so quickly and being so efficient !
BTW. I just have tested multicast deployment with the getMasterStorageNode() method and it works very well.