Elliptics and backrunner in docker on one node

101 views
Skip to first unread message

Anatoly Popov

unread,
Feb 9, 2016, 12:40:33 PM2/9/16
to reverbrain
Hello.

I have three VMs with elliptics, configured by file in attachment (ioserv.json, it differs for every node, of course in remote and address sections). I also installed on first (10.211.55.175) VM docker and pull latest reverbrain/backrunner image to run in container.

Then I run command:
docker run --rm -v /opt/backrunner:/mnt/backrunner reverbrain/backrunner /root/go/bin/bmeta -config /mnt/backrunner/etc/backrunner.json -bucket first

I see in log that bmeta hangs while trying to connect to one node, which is host for current docker container.

How I supposed to fix this in a correct and good way? I do not want to change docker network to host, because it's not a good way.

As far as I understand elliptics, removing this node from backrunner config will not change anything, because bmeta will receive full route table from elliptics server. Maybe I should point elliptics nodes to listen to both host and docker ips with route family "0"? Will it break other clients, because I suspect that docker host ip will be same for all nodes where I'll setup docker.

Why do I care? I'm trying to automate deployments and 15 seconds hang per node is not very good.
Why do I deploy backrunner on same host with elliptics? Because I don't have a lot of servers, also I have only 3 VMs in my test environment.

Regards,
Anatoly Popov.
backrunner.json
ioserv.json
bmeta.log

Evgeniy Polyakov

unread,
Feb 18, 2016, 1:43:15 PM2/18/16
to Anatoly Popov, reverbrain


09.02.2016, 20:40, "Anatoly Popov" <anatol...@gmail.com>:
Docker sets a number of iptables rules for exposed ports, I believe you should add 1025 to that list.
But running elliptics behind docker daemon adds fair amount of overhead, I would recommend to use host networking.

Also, running elliptics in container breaks redirect/streaming feature, since address elliptics announces (172.17.x.x) differs from what is used
by clients to connect to the storage (externally accessible address, 10.211.55.x in your case)

Anatoly Popov

unread,
Feb 18, 2016, 2:13:27 PM2/18/16
to reverbrain, anatol...@gmail.com, z...@ioremap.net
Maybe I mislead you. Elliptics is running on hosts and backrunner is running in docker on same hosts.

Regards,
Anatoly Popov.

Evgeniy Polyakov

unread,
Feb 23, 2016, 10:02:27 AM2/23/16
to Anatoly Popov, reverbrain
Hi Anatoly

18.02.2016, 22:13, "Anatoly Popov" <anatol...@gmail.com>:
> Maybe I mislead you. Elliptics is running on hosts and backrunner is running in docker on same hosts.

In this case you should always use "public" addresses in backrunner config.
Docker network doesn't forward requests between hosts (until explicitly asked),
so container will not be able to connect to 172.17.x.x address.

You should also check you iptables rules, they should allow to connect to "public" host address
from any interface and address.
Reply all
Reply to author
Forward
0 new messages