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 <apa...@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 <btell...@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-unsubscr...@james.apache.org
>> For additional commands, e-mail: server-user-h...@james.apache.org
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-user-unsubscr...@james.apache.org
> For additional commands, e-mail: server-user-h...@james.apache.org
> 

Reply via email to