You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-user@james.apache.org by David Leangen <ap...@leangen.net> on 2019/10/28 06:07:12 UTC
Problems connecting to Cassandra using Docker
Hi!
I am sure the problem is due to my inexperience with Docker and Cassandra, and even more so networking between multiple Docker containers… but I have tried everything I can think of and would like to ask for some help. 😅
I am getting this error:
[root@e5cc3846b51c apache-james-3.3.0]# java -Dworking.directory=/opt/apache-james-3.3.0 -jar server/container/guice/cassandra-guice/target/james-server-cassandra-guice.jar
2019-10-28 05:51:54,981 WARN [main] - [org.apache.james.modules.mailbox.ResilientClusterProvider]- Error establishing Cassandra connection. Next retry scheduled in PT5S ms
com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /172.17.0.2:9042 (com.datastax.driver.core.exceptions.TransportException: [/172.17.0.2:9042] Cannot connect))
The error is shown when I try to run JAMES from within a Docker container.
Cassandra is up and running, and ought to be available via the IP address 172.17.0.2, on port 9042.
[root@james ~]# ip addr
1: lo: <SNIP>
2: eth0: <SNIP>
3: eth1: <SNIP>
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:76:5f:17:bb brd ff:ff:ff:ff:ff:ff
inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
valid_lft forever preferred_lft forever
inet6 fe80::42:76ff:fe5f:17bb/64 scope link
valid_lft forever preferred_lft forever
10: veth81426b0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 1a:70:e2:f3:7e:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet6 fe80::1870:e2ff:fef3:7e70/64 scope link
valid_lft forever preferred_lft forever
12: vethc13d660@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
link/ether 5a:fd:2d:ad:df:12 brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet6 fe80::58fd:2dff:fead:df12/64 scope link
valid_lft forever preferred_lft forever
The two virtual ethernet ports are for the james and cassandra containers.
Here is the run command for cassandra:
docker run \
-dit \
-v /home/cassandra/conf:/opt/cassandra/latest/conf \
-v /home/cassandra/data:/data \
-v /home/cassandra/commitlog:/commitlog \
-v /home/cassandra/saved_caches:/saved_caches \
-v /home/cassandra/hints:/hints \
-p 7000:7000 \
-p 7001:7001 \
-p 7199:7199 \
-p 9042:9042 \
-p 9160:9160 \
--ulimit memlock=-1:-1 \
--memory='1g' \
--name=cassandra \
dleangen/cassandra:3.11.4
Here is docker ps from the host:
[root@james ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5cc3846b51c dleangen/james:3.3.0 "/bin/bash" 7 minutes ago Up 7 minutes youthful_pascal
1fefe86df493 dleangen/cassandra:3.11.4 "cassandra -f" 9 minutes ago Up 9 minutes 0.0.0.0:7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, 0.0.0.0:9042->9042/tcp, 0.0.0.0:9160->9160/tcp cassandra
Here is the /etc/hosts file in the Cassandra container:
bash-4.2$ more /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 1fefe86df493
Cassandra is up. I tested that it is indeed available from within the Docker container over 127.0.0.1.
So how the heck do I get my james container to be able to connect to it??
(I plan to use Docker Compose later… right now I’m trying to just connect my containers directly.)
Thank you in advance for your help!!! 😇
Cheers,
=David
Re: Problems connecting to Cassandra using Docker
Posted by David Leangen <ap...@leangen.net>.
Hi,
Several months later, I want to give JAMES another try.
In the meantime, I have familiarized myself a little bit with Docker, and have started moving all of my infrastructure to Kubernetes. I am now interested in going directly to Kubernetes (bypassing Docker and Docker Compose). I am more than happy to submit PRs as well as I figure it out.
However, for me to start working with JAMES, I am not even able to build the project via Maven. Worse, I am unable to understand from the documentation what needs to be done.
Since this is now off topic for this thread, I will open another thread.
Thanks,
=David
> On Nov 4, 2019, at 16:36, David Leangen <ap...@leangen.net> wrote:
>
>
> Hi Benoit,
>
> Sure, would be happy to.
>
> I am still a Docker novice, but I am learning. If my learnings can be of any help to others, that would be nice.
>
>
> Cheers,
> =David
>
>
>
>> On Nov 4, 2019, at 16:17, Tellier Benoit <bt...@apache.org> wrote:
>>
>> Hi David,
>>
>> We currently have an open ticket for documenting network usage:
>>
>> - JAMES-2333 Docker links concidered legacy [1]
>>
>> [1] https://issues.apache.org/jira/browse/JAMES-2333
>>
>> Would you like to contribute some documentation on the topic?
>>
>> Benoit Tellier
>>
>>
>>
>> On 02/11/2019 19:59, David Leangen wrote:
>>>
>>> Hi,
>>>
>>> Just for anybody who ever somehow stumbles across this thread, I wanted to provide some closure.
>>>
>>> I did not know that there was a difference between a named network in Docker, and the default bridge network. (I am currently using v19.) The differences are described here:
>>>
>>> https://docs.docker.com/network/bridge/##differences-between-user-defined-bridges-and-the-default-bridge <https://docs.docker.com/network/bridge/##differences-between-user-defined-bridges-and-the-default-bridge>
>>>
>>>
>>> Connecting to Cassandra is a piece of cake if you use a named network. Note that all containers need to belong to the same network. Docker will handle all the networking automatically.
>>>
>>>
>>> That’s all there was to it. For some reason it took me a very long time to actually find that information.
>>>
>>>
>>> Cheers,
>>> =David
>>>
>>>
>>>
>>>> On Oct 29, 2019, at 19:14, David Leangen <ap...@leangen.net> wrote:
>>>>
>>>>
>>>> Hi Benoit,
>>>>
>>>> Thank you very much for your hints. That gives me some ideas of a few more things I can investigate.
>>>>
>>>> Cheers,
>>>> =David
>>>>
>>>>
>>>>
>>>>
>>>>> On Oct 29, 2019, at 12:58, Tellier Benoit <bt...@apache.org> wrote:
>>>>>
>>>>> Hello David,
>>>>>
>>>>> - 1. Does the `cassandra` DNS entry within the James container resolves
>>>>> to Cassandra? (this can be achieved with links or network).
>>>>>
>>>>> - 2. A restarting Cassandra (with many data in the commitlog) might
>>>>> reject clients. Monitor Cassandra logs to check if this happens.
>>>>>
>>>>> I also noticed you used an unoffical image for Cassandra. Could this be
>>>>> a cause for your issue? Are you sure cassandra is well started after
>>>>> your configuration modifications?
>>>>>
>>>>> Cheers,
>>>>>
>>>>> Benoit
>>>>>
>>>>> On 28/10/2019 13:07, David Leangen wrote:
>>>>>>
>>>>>> Hi!
>>>>>>
>>>>>> I am sure the problem is due to my inexperience with Docker and Cassandra, and even more so networking between multiple Docker containers… but I have tried everything I can think of and would like to ask for some help. 😅
>>>>>>
>>>>>> I am getting this error:
>>>>>>
>>>>>> [root@e5cc3846b51c apache-james-3.3.0]# java -Dworking.directory=/opt/apache-james-3.3.0 -jar server/container/guice/cassandra-guice/target/james-server-cassandra-guice.jar
>>>>>> 2019-10-28 05:51:54,981 WARN [main] - [org.apache.james.modules.mailbox.ResilientClusterProvider]- Error establishing Cassandra connection. Next retry scheduled in PT5S ms
>>>>>> com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /172.17.0.2:9042 (com.datastax.driver.core.exceptions.TransportException: [/172.17.0.2:9042] Cannot connect))
>>>>>>
>>>>>>
>>>>>> The error is shown when I try to run JAMES from within a Docker container.
>>>>>>
>>>>>> Cassandra is up and running, and ought to be available via the IP address 172.17.0.2, on port 9042.
>>>>>>
>>>>>> [root@james ~]# ip addr
>>>>>> 1: lo: <SNIP>
>>>>>> 2: eth0: <SNIP>
>>>>>> 3: eth1: <SNIP>
>>>>>> 4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
>>>>>> link/ether 02:42:76:5f:17:bb brd ff:ff:ff:ff:ff:ff
>>>>>> inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
>>>>>> valid_lft forever preferred_lft forever
>>>>>> inet6 fe80::42:76ff:fe5f:17bb/64 scope link
>>>>>> valid_lft forever preferred_lft forever
>>>>>> 10: veth81426b0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>>>>>> link/ether 1a:70:e2:f3:7e:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0
>>>>>> inet6 fe80::1870:e2ff:fef3:7e70/64 scope link
>>>>>> valid_lft forever preferred_lft forever
>>>>>> 12: vethc13d660@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>>>>>> link/ether 5a:fd:2d:ad:df:12 brd ff:ff:ff:ff:ff:ff link-netnsid 1
>>>>>> inet6 fe80::58fd:2dff:fead:df12/64 scope link
>>>>>> valid_lft forever preferred_lft forever
>>>>>>
>>>>>> The two virtual ethernet ports are for the james and cassandra containers.
>>>>>>
>>>>>> Here is the run command for cassandra:
>>>>>>
>>>>>> docker run \
>>>>>> -dit \
>>>>>> -v /home/cassandra/conf:/opt/cassandra/latest/conf \
>>>>>> -v /home/cassandra/data:/data \
>>>>>> -v /home/cassandra/commitlog:/commitlog \
>>>>>> -v /home/cassandra/saved_caches:/saved_caches \
>>>>>> -v /home/cassandra/hints:/hints \
>>>>>> -p 7000:7000 \
>>>>>> -p 7001:7001 \
>>>>>> -p 7199:7199 \
>>>>>> -p 9042:9042 \
>>>>>> -p 9160:9160 \
>>>>>> --ulimit memlock=-1:-1 \
>>>>>> --memory='1g' \
>>>>>> --name=cassandra \
>>>>>> dleangen/cassandra:3.11.4
>>>>>>
>>>>>>
>>>>>> Here is docker ps from the host:
>>>>>>
>>>>>> [root@james ~]# docker ps
>>>>>> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
>>>>>> e5cc3846b51c dleangen/james:3.3.0 "/bin/bash" 7 minutes ago Up 7 minutes youthful_pascal
>>>>>> 1fefe86df493 dleangen/cassandra:3.11.4 "cassandra -f" 9 minutes ago Up 9 minutes 0.0.0.0:7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, 0.0.0.0:9042->9042/tcp, 0.0.0.0:9160->9160/tcp cassandra
>>>>>>
>>>>>> Here is the /etc/hosts file in the Cassandra container:
>>>>>>
>>>>>> bash-4.2$ more /etc/hosts
>>>>>> 127.0.0.1 localhost
>>>>>> ::1 localhost ip6-localhost ip6-loopback
>>>>>> fe00::0 ip6-localnet
>>>>>> ff00::0 ip6-mcastprefix
>>>>>> ff02::1 ip6-allnodes
>>>>>> ff02::2 ip6-allrouters
>>>>>> 172.17.0.2 1fefe86df493
>>>>>>
>>>>>>
>>>>>> Cassandra is up. I tested that it is indeed available from within the Docker container over 127.0.0.1.
>>>>>>
>>>>>> So how the heck do I get my james container to be able to connect to it??
>>>>>>
>>>>>> (I plan to use Docker Compose later… right now I’m trying to just connect my containers directly.)
>>>>>>
>>>>>>
>>>>>> Thank you in advance for your help!!! 😇
>>>>>>
>>>>>> Cheers,
>>>>>> =David
>>>>>>
>>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Problems connecting to Cassandra using Docker
Posted by David Leangen <ap...@leangen.net>.
Hi Benoit,
Sure, would be happy to.
I am still a Docker novice, but I am learning. If my learnings can be of any help to others, that would be nice.
Cheers,
=David
> On Nov 4, 2019, at 16:17, Tellier Benoit <bt...@apache.org> wrote:
>
> Hi David,
>
> We currently have an open ticket for documenting network usage:
>
> - JAMES-2333 Docker links concidered legacy [1]
>
> [1] https://issues.apache.org/jira/browse/JAMES-2333
>
> Would you like to contribute some documentation on the topic?
>
> Benoit Tellier
>
>
>
> On 02/11/2019 19:59, David Leangen wrote:
>>
>> Hi,
>>
>> Just for anybody who ever somehow stumbles across this thread, I wanted to provide some closure.
>>
>> I did not know that there was a difference between a named network in Docker, and the default bridge network. (I am currently using v19.) The differences are described here:
>>
>> https://docs.docker.com/network/bridge/##differences-between-user-defined-bridges-and-the-default-bridge <https://docs.docker.com/network/bridge/##differences-between-user-defined-bridges-and-the-default-bridge>
>>
>>
>> Connecting to Cassandra is a piece of cake if you use a named network. Note that all containers need to belong to the same network. Docker will handle all the networking automatically.
>>
>>
>> That’s all there was to it. For some reason it took me a very long time to actually find that information.
>>
>>
>> Cheers,
>> =David
>>
>>
>>
>>> On Oct 29, 2019, at 19:14, David Leangen <ap...@leangen.net> wrote:
>>>
>>>
>>> Hi Benoit,
>>>
>>> Thank you very much for your hints. That gives me some ideas of a few more things I can investigate.
>>>
>>> Cheers,
>>> =David
>>>
>>>
>>>
>>>
>>>> On Oct 29, 2019, at 12:58, Tellier Benoit <bt...@apache.org> wrote:
>>>>
>>>> Hello David,
>>>>
>>>> - 1. Does the `cassandra` DNS entry within the James container resolves
>>>> to Cassandra? (this can be achieved with links or network).
>>>>
>>>> - 2. A restarting Cassandra (with many data in the commitlog) might
>>>> reject clients. Monitor Cassandra logs to check if this happens.
>>>>
>>>> I also noticed you used an unoffical image for Cassandra. Could this be
>>>> a cause for your issue? Are you sure cassandra is well started after
>>>> your configuration modifications?
>>>>
>>>> Cheers,
>>>>
>>>> Benoit
>>>>
>>>> On 28/10/2019 13:07, David Leangen wrote:
>>>>>
>>>>> Hi!
>>>>>
>>>>> I am sure the problem is due to my inexperience with Docker and Cassandra, and even more so networking between multiple Docker containers… but I have tried everything I can think of and would like to ask for some help. 😅
>>>>>
>>>>> I am getting this error:
>>>>>
>>>>> [root@e5cc3846b51c apache-james-3.3.0]# java -Dworking.directory=/opt/apache-james-3.3.0 -jar server/container/guice/cassandra-guice/target/james-server-cassandra-guice.jar
>>>>> 2019-10-28 05:51:54,981 WARN [main] - [org.apache.james.modules.mailbox.ResilientClusterProvider]- Error establishing Cassandra connection. Next retry scheduled in PT5S ms
>>>>> com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /172.17.0.2:9042 (com.datastax.driver.core.exceptions.TransportException: [/172.17.0.2:9042] Cannot connect))
>>>>>
>>>>>
>>>>> The error is shown when I try to run JAMES from within a Docker container.
>>>>>
>>>>> Cassandra is up and running, and ought to be available via the IP address 172.17.0.2, on port 9042.
>>>>>
>>>>> [root@james ~]# ip addr
>>>>> 1: lo: <SNIP>
>>>>> 2: eth0: <SNIP>
>>>>> 3: eth1: <SNIP>
>>>>> 4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
>>>>> link/ether 02:42:76:5f:17:bb brd ff:ff:ff:ff:ff:ff
>>>>> inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
>>>>> valid_lft forever preferred_lft forever
>>>>> inet6 fe80::42:76ff:fe5f:17bb/64 scope link
>>>>> valid_lft forever preferred_lft forever
>>>>> 10: veth81426b0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>>>>> link/ether 1a:70:e2:f3:7e:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0
>>>>> inet6 fe80::1870:e2ff:fef3:7e70/64 scope link
>>>>> valid_lft forever preferred_lft forever
>>>>> 12: vethc13d660@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>>>>> link/ether 5a:fd:2d:ad:df:12 brd ff:ff:ff:ff:ff:ff link-netnsid 1
>>>>> inet6 fe80::58fd:2dff:fead:df12/64 scope link
>>>>> valid_lft forever preferred_lft forever
>>>>>
>>>>> The two virtual ethernet ports are for the james and cassandra containers.
>>>>>
>>>>> Here is the run command for cassandra:
>>>>>
>>>>> docker run \
>>>>> -dit \
>>>>> -v /home/cassandra/conf:/opt/cassandra/latest/conf \
>>>>> -v /home/cassandra/data:/data \
>>>>> -v /home/cassandra/commitlog:/commitlog \
>>>>> -v /home/cassandra/saved_caches:/saved_caches \
>>>>> -v /home/cassandra/hints:/hints \
>>>>> -p 7000:7000 \
>>>>> -p 7001:7001 \
>>>>> -p 7199:7199 \
>>>>> -p 9042:9042 \
>>>>> -p 9160:9160 \
>>>>> --ulimit memlock=-1:-1 \
>>>>> --memory='1g' \
>>>>> --name=cassandra \
>>>>> dleangen/cassandra:3.11.4
>>>>>
>>>>>
>>>>> Here is docker ps from the host:
>>>>>
>>>>> [root@james ~]# docker ps
>>>>> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
>>>>> e5cc3846b51c dleangen/james:3.3.0 "/bin/bash" 7 minutes ago Up 7 minutes youthful_pascal
>>>>> 1fefe86df493 dleangen/cassandra:3.11.4 "cassandra -f" 9 minutes ago Up 9 minutes 0.0.0.0:7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, 0.0.0.0:9042->9042/tcp, 0.0.0.0:9160->9160/tcp cassandra
>>>>>
>>>>> Here is the /etc/hosts file in the Cassandra container:
>>>>>
>>>>> bash-4.2$ more /etc/hosts
>>>>> 127.0.0.1 localhost
>>>>> ::1 localhost ip6-localhost ip6-loopback
>>>>> fe00::0 ip6-localnet
>>>>> ff00::0 ip6-mcastprefix
>>>>> ff02::1 ip6-allnodes
>>>>> ff02::2 ip6-allrouters
>>>>> 172.17.0.2 1fefe86df493
>>>>>
>>>>>
>>>>> Cassandra is up. I tested that it is indeed available from within the Docker container over 127.0.0.1.
>>>>>
>>>>> So how the heck do I get my james container to be able to connect to it??
>>>>>
>>>>> (I plan to use Docker Compose later… right now I’m trying to just connect my containers directly.)
>>>>>
>>>>>
>>>>> Thank you in advance for your help!!! 😇
>>>>>
>>>>> Cheers,
>>>>> =David
>>>>>
>>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Problems connecting to Cassandra using Docker
Posted by Tellier Benoit <bt...@apache.org>.
Hi David,
We currently have an open ticket for documenting network usage:
- JAMES-2333 Docker links concidered legacy [1]
[1] https://issues.apache.org/jira/browse/JAMES-2333
Would you like to contribute some documentation on the topic?
Benoit Tellier
On 02/11/2019 19:59, David Leangen wrote:
>
> Hi,
>
> Just for anybody who ever somehow stumbles across this thread, I wanted to provide some closure.
>
> I did not know that there was a difference between a named network in Docker, and the default bridge network. (I am currently using v19.) The differences are described here:
>
> https://docs.docker.com/network/bridge/##differences-between-user-defined-bridges-and-the-default-bridge <https://docs.docker.com/network/bridge/##differences-between-user-defined-bridges-and-the-default-bridge>
>
>
> Connecting to Cassandra is a piece of cake if you use a named network. Note that all containers need to belong to the same network. Docker will handle all the networking automatically.
>
>
> That’s all there was to it. For some reason it took me a very long time to actually find that information.
>
>
> Cheers,
> =David
>
>
>
>> On Oct 29, 2019, at 19:14, David Leangen <ap...@leangen.net> wrote:
>>
>>
>> Hi Benoit,
>>
>> Thank you very much for your hints. That gives me some ideas of a few more things I can investigate.
>>
>> Cheers,
>> =David
>>
>>
>>
>>
>>> On Oct 29, 2019, at 12:58, Tellier Benoit <bt...@apache.org> wrote:
>>>
>>> Hello David,
>>>
>>> - 1. Does the `cassandra` DNS entry within the James container resolves
>>> to Cassandra? (this can be achieved with links or network).
>>>
>>> - 2. A restarting Cassandra (with many data in the commitlog) might
>>> reject clients. Monitor Cassandra logs to check if this happens.
>>>
>>> I also noticed you used an unoffical image for Cassandra. Could this be
>>> a cause for your issue? Are you sure cassandra is well started after
>>> your configuration modifications?
>>>
>>> Cheers,
>>>
>>> Benoit
>>>
>>> On 28/10/2019 13:07, David Leangen wrote:
>>>>
>>>> Hi!
>>>>
>>>> I am sure the problem is due to my inexperience with Docker and Cassandra, and even more so networking between multiple Docker containers… but I have tried everything I can think of and would like to ask for some help. 😅
>>>>
>>>> I am getting this error:
>>>>
>>>> [root@e5cc3846b51c apache-james-3.3.0]# java -Dworking.directory=/opt/apache-james-3.3.0 -jar server/container/guice/cassandra-guice/target/james-server-cassandra-guice.jar
>>>> 2019-10-28 05:51:54,981 WARN [main] - [org.apache.james.modules.mailbox.ResilientClusterProvider]- Error establishing Cassandra connection. Next retry scheduled in PT5S ms
>>>> com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /172.17.0.2:9042 (com.datastax.driver.core.exceptions.TransportException: [/172.17.0.2:9042] Cannot connect))
>>>>
>>>>
>>>> The error is shown when I try to run JAMES from within a Docker container.
>>>>
>>>> Cassandra is up and running, and ought to be available via the IP address 172.17.0.2, on port 9042.
>>>>
>>>> [root@james ~]# ip addr
>>>> 1: lo: <SNIP>
>>>> 2: eth0: <SNIP>
>>>> 3: eth1: <SNIP>
>>>> 4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
>>>> link/ether 02:42:76:5f:17:bb brd ff:ff:ff:ff:ff:ff
>>>> inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
>>>> valid_lft forever preferred_lft forever
>>>> inet6 fe80::42:76ff:fe5f:17bb/64 scope link
>>>> valid_lft forever preferred_lft forever
>>>> 10: veth81426b0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>>>> link/ether 1a:70:e2:f3:7e:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0
>>>> inet6 fe80::1870:e2ff:fef3:7e70/64 scope link
>>>> valid_lft forever preferred_lft forever
>>>> 12: vethc13d660@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>>>> link/ether 5a:fd:2d:ad:df:12 brd ff:ff:ff:ff:ff:ff link-netnsid 1
>>>> inet6 fe80::58fd:2dff:fead:df12/64 scope link
>>>> valid_lft forever preferred_lft forever
>>>>
>>>> The two virtual ethernet ports are for the james and cassandra containers.
>>>>
>>>> Here is the run command for cassandra:
>>>>
>>>> docker run \
>>>> -dit \
>>>> -v /home/cassandra/conf:/opt/cassandra/latest/conf \
>>>> -v /home/cassandra/data:/data \
>>>> -v /home/cassandra/commitlog:/commitlog \
>>>> -v /home/cassandra/saved_caches:/saved_caches \
>>>> -v /home/cassandra/hints:/hints \
>>>> -p 7000:7000 \
>>>> -p 7001:7001 \
>>>> -p 7199:7199 \
>>>> -p 9042:9042 \
>>>> -p 9160:9160 \
>>>> --ulimit memlock=-1:-1 \
>>>> --memory='1g' \
>>>> --name=cassandra \
>>>> dleangen/cassandra:3.11.4
>>>>
>>>>
>>>> Here is docker ps from the host:
>>>>
>>>> [root@james ~]# docker ps
>>>> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
>>>> e5cc3846b51c dleangen/james:3.3.0 "/bin/bash" 7 minutes ago Up 7 minutes youthful_pascal
>>>> 1fefe86df493 dleangen/cassandra:3.11.4 "cassandra -f" 9 minutes ago Up 9 minutes 0.0.0.0:7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, 0.0.0.0:9042->9042/tcp, 0.0.0.0:9160->9160/tcp cassandra
>>>>
>>>> Here is the /etc/hosts file in the Cassandra container:
>>>>
>>>> bash-4.2$ more /etc/hosts
>>>> 127.0.0.1 localhost
>>>> ::1 localhost ip6-localhost ip6-loopback
>>>> fe00::0 ip6-localnet
>>>> ff00::0 ip6-mcastprefix
>>>> ff02::1 ip6-allnodes
>>>> ff02::2 ip6-allrouters
>>>> 172.17.0.2 1fefe86df493
>>>>
>>>>
>>>> Cassandra is up. I tested that it is indeed available from within the Docker container over 127.0.0.1.
>>>>
>>>> So how the heck do I get my james container to be able to connect to it??
>>>>
>>>> (I plan to use Docker Compose later… right now I’m trying to just connect my containers directly.)
>>>>
>>>>
>>>> Thank you in advance for your help!!! 😇
>>>>
>>>> Cheers,
>>>> =David
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>>> For additional commands, e-mail: server-user-help@james.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Problems connecting to Cassandra using Docker
Posted by David Leangen <ap...@leangen.net>.
Hi,
Just for anybody who ever somehow stumbles across this thread, I wanted to provide some closure.
I did not know that there was a difference between a named network in Docker, and the default bridge network. (I am currently using v19.) The differences are described here:
https://docs.docker.com/network/bridge/##differences-between-user-defined-bridges-and-the-default-bridge <https://docs.docker.com/network/bridge/##differences-between-user-defined-bridges-and-the-default-bridge>
Connecting to Cassandra is a piece of cake if you use a named network. Note that all containers need to belong to the same network. Docker will handle all the networking automatically.
That’s all there was to it. For some reason it took me a very long time to actually find that information.
Cheers,
=David
> On Oct 29, 2019, at 19:14, David Leangen <ap...@leangen.net> wrote:
>
>
> Hi Benoit,
>
> Thank you very much for your hints. That gives me some ideas of a few more things I can investigate.
>
> Cheers,
> =David
>
>
>
>
>> On Oct 29, 2019, at 12:58, Tellier Benoit <bt...@apache.org> wrote:
>>
>> Hello David,
>>
>> - 1. Does the `cassandra` DNS entry within the James container resolves
>> to Cassandra? (this can be achieved with links or network).
>>
>> - 2. A restarting Cassandra (with many data in the commitlog) might
>> reject clients. Monitor Cassandra logs to check if this happens.
>>
>> I also noticed you used an unoffical image for Cassandra. Could this be
>> a cause for your issue? Are you sure cassandra is well started after
>> your configuration modifications?
>>
>> Cheers,
>>
>> Benoit
>>
>> On 28/10/2019 13:07, David Leangen wrote:
>>>
>>> Hi!
>>>
>>> I am sure the problem is due to my inexperience with Docker and Cassandra, and even more so networking between multiple Docker containers… but I have tried everything I can think of and would like to ask for some help. 😅
>>>
>>> I am getting this error:
>>>
>>> [root@e5cc3846b51c apache-james-3.3.0]# java -Dworking.directory=/opt/apache-james-3.3.0 -jar server/container/guice/cassandra-guice/target/james-server-cassandra-guice.jar
>>> 2019-10-28 05:51:54,981 WARN [main] - [org.apache.james.modules.mailbox.ResilientClusterProvider]- Error establishing Cassandra connection. Next retry scheduled in PT5S ms
>>> com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /172.17.0.2:9042 (com.datastax.driver.core.exceptions.TransportException: [/172.17.0.2:9042] Cannot connect))
>>>
>>>
>>> The error is shown when I try to run JAMES from within a Docker container.
>>>
>>> Cassandra is up and running, and ought to be available via the IP address 172.17.0.2, on port 9042.
>>>
>>> [root@james ~]# ip addr
>>> 1: lo: <SNIP>
>>> 2: eth0: <SNIP>
>>> 3: eth1: <SNIP>
>>> 4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
>>> link/ether 02:42:76:5f:17:bb brd ff:ff:ff:ff:ff:ff
>>> inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
>>> valid_lft forever preferred_lft forever
>>> inet6 fe80::42:76ff:fe5f:17bb/64 scope link
>>> valid_lft forever preferred_lft forever
>>> 10: veth81426b0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>>> link/ether 1a:70:e2:f3:7e:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0
>>> inet6 fe80::1870:e2ff:fef3:7e70/64 scope link
>>> valid_lft forever preferred_lft forever
>>> 12: vethc13d660@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>>> link/ether 5a:fd:2d:ad:df:12 brd ff:ff:ff:ff:ff:ff link-netnsid 1
>>> inet6 fe80::58fd:2dff:fead:df12/64 scope link
>>> valid_lft forever preferred_lft forever
>>>
>>> The two virtual ethernet ports are for the james and cassandra containers.
>>>
>>> Here is the run command for cassandra:
>>>
>>> docker run \
>>> -dit \
>>> -v /home/cassandra/conf:/opt/cassandra/latest/conf \
>>> -v /home/cassandra/data:/data \
>>> -v /home/cassandra/commitlog:/commitlog \
>>> -v /home/cassandra/saved_caches:/saved_caches \
>>> -v /home/cassandra/hints:/hints \
>>> -p 7000:7000 \
>>> -p 7001:7001 \
>>> -p 7199:7199 \
>>> -p 9042:9042 \
>>> -p 9160:9160 \
>>> --ulimit memlock=-1:-1 \
>>> --memory='1g' \
>>> --name=cassandra \
>>> dleangen/cassandra:3.11.4
>>>
>>>
>>> Here is docker ps from the host:
>>>
>>> [root@james ~]# docker ps
>>> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
>>> e5cc3846b51c dleangen/james:3.3.0 "/bin/bash" 7 minutes ago Up 7 minutes youthful_pascal
>>> 1fefe86df493 dleangen/cassandra:3.11.4 "cassandra -f" 9 minutes ago Up 9 minutes 0.0.0.0:7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, 0.0.0.0:9042->9042/tcp, 0.0.0.0:9160->9160/tcp cassandra
>>>
>>> Here is the /etc/hosts file in the Cassandra container:
>>>
>>> bash-4.2$ more /etc/hosts
>>> 127.0.0.1 localhost
>>> ::1 localhost ip6-localhost ip6-loopback
>>> fe00::0 ip6-localnet
>>> ff00::0 ip6-mcastprefix
>>> ff02::1 ip6-allnodes
>>> ff02::2 ip6-allrouters
>>> 172.17.0.2 1fefe86df493
>>>
>>>
>>> Cassandra is up. I tested that it is indeed available from within the Docker container over 127.0.0.1.
>>>
>>> So how the heck do I get my james container to be able to connect to it??
>>>
>>> (I plan to use Docker Compose later… right now I’m trying to just connect my containers directly.)
>>>
>>>
>>> Thank you in advance for your help!!! 😇
>>>
>>> Cheers,
>>> =David
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-user-help@james.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
Re: Problems connecting to Cassandra using Docker
Posted by David Leangen <ap...@leangen.net>.
Hi Benoit,
Thank you very much for your hints. That gives me some ideas of a few more things I can investigate.
Cheers,
=David
> On Oct 29, 2019, at 12:58, Tellier Benoit <bt...@apache.org> wrote:
>
> Hello David,
>
> - 1. Does the `cassandra` DNS entry within the James container resolves
> to Cassandra? (this can be achieved with links or network).
>
> - 2. A restarting Cassandra (with many data in the commitlog) might
> reject clients. Monitor Cassandra logs to check if this happens.
>
> I also noticed you used an unoffical image for Cassandra. Could this be
> a cause for your issue? Are you sure cassandra is well started after
> your configuration modifications?
>
> Cheers,
>
> Benoit
>
> On 28/10/2019 13:07, David Leangen wrote:
>>
>> Hi!
>>
>> I am sure the problem is due to my inexperience with Docker and Cassandra, and even more so networking between multiple Docker containers… but I have tried everything I can think of and would like to ask for some help. 😅
>>
>> I am getting this error:
>>
>> [root@e5cc3846b51c apache-james-3.3.0]# java -Dworking.directory=/opt/apache-james-3.3.0 -jar server/container/guice/cassandra-guice/target/james-server-cassandra-guice.jar
>> 2019-10-28 05:51:54,981 WARN [main] - [org.apache.james.modules.mailbox.ResilientClusterProvider]- Error establishing Cassandra connection. Next retry scheduled in PT5S ms
>> com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /172.17.0.2:9042 (com.datastax.driver.core.exceptions.TransportException: [/172.17.0.2:9042] Cannot connect))
>>
>>
>> The error is shown when I try to run JAMES from within a Docker container.
>>
>> Cassandra is up and running, and ought to be available via the IP address 172.17.0.2, on port 9042.
>>
>> [root@james ~]# ip addr
>> 1: lo: <SNIP>
>> 2: eth0: <SNIP>
>> 3: eth1: <SNIP>
>> 4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
>> link/ether 02:42:76:5f:17:bb brd ff:ff:ff:ff:ff:ff
>> inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
>> valid_lft forever preferred_lft forever
>> inet6 fe80::42:76ff:fe5f:17bb/64 scope link
>> valid_lft forever preferred_lft forever
>> 10: veth81426b0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>> link/ether 1a:70:e2:f3:7e:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0
>> inet6 fe80::1870:e2ff:fef3:7e70/64 scope link
>> valid_lft forever preferred_lft forever
>> 12: vethc13d660@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
>> link/ether 5a:fd:2d:ad:df:12 brd ff:ff:ff:ff:ff:ff link-netnsid 1
>> inet6 fe80::58fd:2dff:fead:df12/64 scope link
>> valid_lft forever preferred_lft forever
>>
>> The two virtual ethernet ports are for the james and cassandra containers.
>>
>> Here is the run command for cassandra:
>>
>> docker run \
>> -dit \
>> -v /home/cassandra/conf:/opt/cassandra/latest/conf \
>> -v /home/cassandra/data:/data \
>> -v /home/cassandra/commitlog:/commitlog \
>> -v /home/cassandra/saved_caches:/saved_caches \
>> -v /home/cassandra/hints:/hints \
>> -p 7000:7000 \
>> -p 7001:7001 \
>> -p 7199:7199 \
>> -p 9042:9042 \
>> -p 9160:9160 \
>> --ulimit memlock=-1:-1 \
>> --memory='1g' \
>> --name=cassandra \
>> dleangen/cassandra:3.11.4
>>
>>
>> Here is docker ps from the host:
>>
>> [root@james ~]# docker ps
>> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
>> e5cc3846b51c dleangen/james:3.3.0 "/bin/bash" 7 minutes ago Up 7 minutes youthful_pascal
>> 1fefe86df493 dleangen/cassandra:3.11.4 "cassandra -f" 9 minutes ago Up 9 minutes 0.0.0.0:7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, 0.0.0.0:9042->9042/tcp, 0.0.0.0:9160->9160/tcp cassandra
>>
>> Here is the /etc/hosts file in the Cassandra container:
>>
>> bash-4.2$ more /etc/hosts
>> 127.0.0.1 localhost
>> ::1 localhost ip6-localhost ip6-loopback
>> fe00::0 ip6-localnet
>> ff00::0 ip6-mcastprefix
>> ff02::1 ip6-allnodes
>> ff02::2 ip6-allrouters
>> 172.17.0.2 1fefe86df493
>>
>>
>> Cassandra is up. I tested that it is indeed available from within the Docker container over 127.0.0.1.
>>
>> So how the heck do I get my james container to be able to connect to it??
>>
>> (I plan to use Docker Compose later… right now I’m trying to just connect my containers directly.)
>>
>>
>> Thank you in advance for your help!!! 😇
>>
>> Cheers,
>> =David
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
> For additional commands, e-mail: server-user-help@james.apache.org
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org
Re: Problems connecting to Cassandra using Docker
Posted by Tellier Benoit <bt...@apache.org>.
Hello David,
- 1. Does the `cassandra` DNS entry within the James container resolves
to Cassandra? (this can be achieved with links or network).
- 2. A restarting Cassandra (with many data in the commitlog) might
reject clients. Monitor Cassandra logs to check if this happens.
I also noticed you used an unoffical image for Cassandra. Could this be
a cause for your issue? Are you sure cassandra is well started after
your configuration modifications?
Cheers,
Benoit
On 28/10/2019 13:07, David Leangen wrote:
>
> Hi!
>
> I am sure the problem is due to my inexperience with Docker and Cassandra, and even more so networking between multiple Docker containers… but I have tried everything I can think of and would like to ask for some help. 😅
>
> I am getting this error:
>
> [root@e5cc3846b51c apache-james-3.3.0]# java -Dworking.directory=/opt/apache-james-3.3.0 -jar server/container/guice/cassandra-guice/target/james-server-cassandra-guice.jar
> 2019-10-28 05:51:54,981 WARN [main] - [org.apache.james.modules.mailbox.ResilientClusterProvider]- Error establishing Cassandra connection. Next retry scheduled in PT5S ms
> com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /172.17.0.2:9042 (com.datastax.driver.core.exceptions.TransportException: [/172.17.0.2:9042] Cannot connect))
>
>
> The error is shown when I try to run JAMES from within a Docker container.
>
> Cassandra is up and running, and ought to be available via the IP address 172.17.0.2, on port 9042.
>
> [root@james ~]# ip addr
> 1: lo: <SNIP>
> 2: eth0: <SNIP>
> 3: eth1: <SNIP>
> 4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
> link/ether 02:42:76:5f:17:bb brd ff:ff:ff:ff:ff:ff
> inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
> valid_lft forever preferred_lft forever
> inet6 fe80::42:76ff:fe5f:17bb/64 scope link
> valid_lft forever preferred_lft forever
> 10: veth81426b0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
> link/ether 1a:70:e2:f3:7e:70 brd ff:ff:ff:ff:ff:ff link-netnsid 0
> inet6 fe80::1870:e2ff:fef3:7e70/64 scope link
> valid_lft forever preferred_lft forever
> 12: vethc13d660@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default
> link/ether 5a:fd:2d:ad:df:12 brd ff:ff:ff:ff:ff:ff link-netnsid 1
> inet6 fe80::58fd:2dff:fead:df12/64 scope link
> valid_lft forever preferred_lft forever
>
> The two virtual ethernet ports are for the james and cassandra containers.
>
> Here is the run command for cassandra:
>
> docker run \
> -dit \
> -v /home/cassandra/conf:/opt/cassandra/latest/conf \
> -v /home/cassandra/data:/data \
> -v /home/cassandra/commitlog:/commitlog \
> -v /home/cassandra/saved_caches:/saved_caches \
> -v /home/cassandra/hints:/hints \
> -p 7000:7000 \
> -p 7001:7001 \
> -p 7199:7199 \
> -p 9042:9042 \
> -p 9160:9160 \
> --ulimit memlock=-1:-1 \
> --memory='1g' \
> --name=cassandra \
> dleangen/cassandra:3.11.4
>
>
> Here is docker ps from the host:
>
> [root@james ~]# docker ps
> CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
> e5cc3846b51c dleangen/james:3.3.0 "/bin/bash" 7 minutes ago Up 7 minutes youthful_pascal
> 1fefe86df493 dleangen/cassandra:3.11.4 "cassandra -f" 9 minutes ago Up 9 minutes 0.0.0.0:7000-7001->7000-7001/tcp, 0.0.0.0:7199->7199/tcp, 0.0.0.0:9042->9042/tcp, 0.0.0.0:9160->9160/tcp cassandra
>
> Here is the /etc/hosts file in the Cassandra container:
>
> bash-4.2$ more /etc/hosts
> 127.0.0.1 localhost
> ::1 localhost ip6-localhost ip6-loopback
> fe00::0 ip6-localnet
> ff00::0 ip6-mcastprefix
> ff02::1 ip6-allnodes
> ff02::2 ip6-allrouters
> 172.17.0.2 1fefe86df493
>
>
> Cassandra is up. I tested that it is indeed available from within the Docker container over 127.0.0.1.
>
> So how the heck do I get my james container to be able to connect to it??
>
> (I plan to use Docker Compose later… right now I’m trying to just connect my containers directly.)
>
>
> Thank you in advance for your help!!! 😇
>
> Cheers,
> =David
>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: server-user-unsubscribe@james.apache.org
For additional commands, e-mail: server-user-help@james.apache.org