Re: Problems connecting to Cassandra using Docker

David Leangen <[email protected]>
Newsgroups gmane.comp.jakarta.james.user
Message-ID <[email protected]>
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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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 <[email protected]> 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: [email protected]
>>>>> For additional commands, e-mail: [email protected]
>>>>> 
>>>> 
>>>> 
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: [email protected]
>>>> For additional commands, e-mail: [email protected]
>>>> 
>>> 
>>> 
>> 
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.