Awesome! I'm happy to see so many options now. Back when I had this
problem, couldn't find much of a solution. Glad that users will now have
multiple options where to start from when using ODB with Docker.

@Tobie thank you for your image. Haven't tried yet, but looks solid.

On Thu, Mar 5, 2015 at 7:42 PM, Simon Gemmell <simongemm...@gmail.com>
wrote:

> Here is my set up: orientdb running in a docker container on an AWS server
> in Frankfurt, and a similar container on AWS in Sydney. IPSEC tunneling
> between them. My docker file looks like this:
>
> FROM dockerfile/java:oracle-java8
>
> MAINTAINER Simon Gemmell
>
> # Update the default application repository sources list
> RUN apt-get update
>
> # Install supervisord
> RUN apt-get -y install supervisor
> RUN mkdir -p /var/log/supervisor
>
> # Install orientdb
> ENV ORIENT_VERSION orientdb-community-2.0.3
> ENV ORIENT_TAR ${ORIENT_VERSION}.tar.gz
> ENV ORIENT_URL
> http://www.orientechnologies.com/download.php?file=${ORIENT_TAR}
> ENV ROOT /opt
>
> RUN cd ${ROOT} \
>     && curl -o ${ORIENT_TAR} ${ORIENT_URL} \
>     && tar -xzf ${ORIENT_TAR} \
>     && ln -s ${ROOT}/${ORIENT_VERSION} ${ROOT}/orientdb \
>     && ln -s ${ROOT}/orientdb/bin/*.sh /usr/local/bin/ \
>     && mkdir /usr/local/log
>
> # cleanup
> RUN apt-get -y -qq --force-yes clean \
>     && rm -rf /opt/downloads/linux /var/lib/apt/lists/* /tmp/* /var/tmp/*
>
> # use supervisord to start orientdb
> ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf
>
> #EXPOSE 2424
> EXPOSE 2480
> EXPOSE 5701
>
> # Set the user to run OrientDB daemon
> USER root
>
> # Default command when starting the container
> CMD ["/usr/bin/supervisord", "-c",
> "/etc/supervisor/conf.d/supervisord.conf"]
>
>
> I don't expose 2424 as it is "linked" to another container.
>
> Then I run it like this:
> #!/bin/bash
> sudo docker run --name orientdb -d -v
> `pwd`/orientdb/config:/opt/orientdb/config -v
> /mnt/EBS/databases:/opt/orientdb/databases -v
> /mnt/EBS/backup:/opt/orientdb/backup -v `pwd`/orientdb/log:/var/log -p
> 2424:2424 -p 2480:2480 -p 5701:5701  tkbt/orientdb
> cd orientdb
> ./updateip.sh
> cd ..
>
>
> updateip.sh does this:
> #!/bin/bash
> IP=`sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}'
> orientdb`
> sed -i  's/<property name="hazelcast.local.localAddress">.*/<property
> name="hazelcast.local.localAddress">'$IP'<\/property>/' config/hazelcast.xml
>
>
> My supervisord:
> [supervisord]
> nodaemon=true
>
> [program:orientdb]
> directory=/opt/orientdb/bin/
> command=server.sh -Ddistributed=true -Xmx1024m
> autostart=true
> autorestart=true
> stderr_logfile=/var/log/orientdb.err.log
> stdout_logfile=/var/log/orientdb.out.log
> ; startsecs 5 delays starting orient by 5 secs, which will allow any
> external scripts to update IPs etc
> startsecs = 5
> stopwaitsecs = 120
> ; make sure we send the signals to any process started by the top scripts
> stopasgroup=true
>
>
> My hazelcastconfig:
> ....
>  <properties>
>            <property name="hazelcast.mancenter.enabled">false</property>
>            <property name="hazelcast.memcache.enabled">false</property>
>            <property name="hazelcast.rest.enabled">false</property>
>            <property name="hazelcast.wait.seconds.before.join">0</property>
>            <property name="hazelcast.logging.type">jdk</property>
>            <property
> name="hazelcast.local.localAddress">172.17.0.22</property>
>            <property
> name="hazelcast.socket.server.bind.any">false</property>
>            <property name="hazelcast.socket.client.bind">false</property>
>         </properties>
>         <network>
>             <!-- CHANGE: This is the public ip address of the host: -->
>             <public-address>10.0.1.96</public-address>
>             <!-- CHANGE: This port should be mapped on the docker level,
> e.g. -p 5701:5701: -->
>             <port auto-increment="false" port-count="100">5701</port>
>             <outbound-ports>
>                <!--
>                Allowed port range when connecting to other nodes.
>                0 or * means use system provided port.
>                -->
>                <ports>0</ports>
>             </outbound-ports>
>             <join>
>             <!-- CHANGE: disable multicast -->
>                <multicast enabled="false">
>                   <multicast-group>224.2.2.3</multicast-group>
>                   <multicast-port>54327</multicast-port>
>                </multicast>
>                <!-- CHANGE: enable tcp-ip and specify the public ip
> addresses of all the hosts that should communicate -->
>                <tcp-ip enabled="true">
>                   <interface>172.31.6.12</interface>
>                </tcp-ip>
>             </join>
>         </network>
>         <executor-service>
>                 <pool-size>16</pool-size>
>         </executor-service>
> ...
>
>
> On Thursday, March 5, 2015 at 6:32:36 AM UTC+11, Tobie Morgan Hitchcock
> wrote:
>>
>> Hi Luca,
>>
>> Docker differences
>>
>> 1. Using `centos:7` not `debian`
>> 2. Using `java-1.7.0-openjdk-headless` instead of `java-1.7.0-openjdk`
>> 3. The OrientDB install tar file (https://abcum-deploy.s3.
>> amazonaws.com/orient/orientdb-community-2.0.4.tar.gz) is an exact copy
>> of the one available at http://www.orientechnologies.com/download/
>> except that it has had the demo database removed to make it smaller.
>> 4. The OrientDB configs are included in the docker image in the /conf/
>> folder, and do not need to be included on a shared volume.
>> 5. The OrientDB config and startup script has been simplified slightly so
>> that it runs in the foreground on CoreOS in a distributed setup.
>> 6. Running the docker image will launch a 'ready to go' distributed
>> OrientDB instance using either TCP or AWS node discovery.
>> 7. The OrientDB instance is launched in the foreground (not as a daemon)
>> so that it can be controlled by Fleet on CoreOS
>> 8. Using Hazelcast variables (http://blog.hazelcast.com/
>> 2013/08/14/xml-variables/) for putting the docker environment variables
>> into the hazelcast.xml file.
>>
>> If running OrientDB on a CoreOS cluster in Amazon EC2/VPC you should be
>> able to launch any number of OrientDB instances which connect with each
>> other using the Fleetctl service file, which is included in the repository.
>>
>> I think those are the main differences off the top of my head!
>>
>> Tobie
>>
>> On Wednesday, 4 March 2015 18:24:24 UTC, Lvc@ wrote:
>>>
>>> Hi Tobie,
>>> How your project compares to https://github.com/
>>> orientechnologies/orientdb-docker ?
>>>
>>>
>>> Lvc@
>>>
>>>
>>> On 4 March 2015 at 14:41, Tobie Morgan Hitchcock <to...@abcum.com>
>>> wrote:
>>>
>>>> Hi Esen,
>>>>
>>>> I've just been through the same problem, but have a solution.
>>>>
>>>> Basically, Hazelcast attaches itself to the private ip address of the
>>>> docker container, and notifies other nodes of this ip address (meaning that
>>>> it does not ever match the members). There are two solutions...
>>>>
>>>> 1. Use *docker run --net=host* to run the docker container (works ok,
>>>> but the container is therefore not running in it's separate network).
>>>> 2. Pass the private/public IP address of the machine to the docker
>>>> container so that Hazelcast knows which IP address to bind to.
>>>>
>>>>    1. Add <properties><property name="hazelcast.local.localAddress"
>>>>    >IPV4ADDRESSHERE</property></properties> into hazelcast.xml
>>>>    2. Add <network><public-address>IPV4ADDRESSHERE</public-address></n
>>>>    etwork>
>>>>
>>>> I've setup a docker container to do exactly this, which can be used to
>>>> setup a distributed OrientDB running on CoreOS using Fleet (fleetctl). This
>>>> will work on Vagrant or Amazon EC2/VPC.
>>>>
>>>> The repository is available here: https://github.com/
>>>> abcum/docker-orientdb.git
>>>>
>>>> Tobie
>>>>
>>>>
>>>> On Tuesday, 6 January 2015 07:19:42 UTC, Esen Sagynov wrote:
>>>>>
>>>>> I can successfully telnet to each server from any other server because
>>>>> incoming requests are allowed. In fact, each server successfully receives 
>>>>> a
>>>>> connection request, however, there seems to be some kind of a validation.
>>>>> When the host A receives a connection request from host B, host A checks 
>>>>> if
>>>>> the requested IP address is host A's IP address. Now here this validation
>>>>> fails according to the above error message.
>>>>>
>>>>> I wonder if it is necessary to do such validations in ODB?
>>>>>
>>>>> On Monday, January 5, 2015 9:27:31 PM UTC+9, Lvc@ wrote:
>>>>>>
>>>>>> Hi Esen,
>>>>>> Seems OrientDB servers can't see each other. I suggest you to try if
>>>>>> connections are allowed between hosts with CURL.
>>>>>>
>>>>>> Lvc@
>>>>>>
>>>>>>
>>>>>> On 5 January 2015 at 07:19, Esen Sagynov <kadi...@gmail.com> wrote:
>>>>>>
>>>>>>> Using ODB 2.0-SNAPSHOT (Jan 5, 2015).
>>>>>>>
>>>>>>> My nodes in Docker containers on separate physical machines cannot
>>>>>>> join to each other. The establish a connection however eventually they
>>>>>>> refuse joining because some conditions aren't met.
>>>>>>>
>>>>>>> The following are logs on Host 2:
>>>>>>>
>>>>>>> 2015-01-05 06:07:15:691 INFO  [172.17.0.3]:2434 [orientdb] [3.3]
>>>>>>> Accepting socket connection from /123.123.123.124:55647 [
>>>>>>> SocketAcceptor]
>>>>>>> 2015-01-05 06:07:15:692 INFO  [172.17.0.3]:2434 [orientdb] [3.3]
>>>>>>> Established socket connection between /172.17.0.3:2434 and /123.123.
>>>>>>> 123.124:55647 [TcpIpConnectionManager]
>>>>>>> 2015-01-05 06:07:15:694 WARNING [172.17.0.3]:2434 [orientdb] [3.3]
>>>>>>> Wrong bind request from Address[172.17.0.12]:2434! This node is not
>>>>>>> requested endpoint: Address[123.123.123.124]:2434 [
>>>>>>> TcpIpConnectionManager]
>>>>>>>
>>>>>>> Host 1 (123.123.123.123) running ODB in a container 172.17.0.3:2434.
>>>>>>> Host 2 (123.123.123.124) running ODB in a container 172.17.0.12
>>>>>>> :2434.
>>>>>>> Host 3 (123.123.123.125) running ODB in a container 172.17.0.10
>>>>>>> :2434.
>>>>>>>
>>>>>>> Because docker on each host manages its own bridge each ODB
>>>>>>> container doesn't see it directly. This is why in config/hazelcast.xml I
>>>>>>> specify the IP of the host machines.
>>>>>>>
>>>>>>>                         <tcp-ip enabled="true">
>>>>>>>                                 <member> 123.123.123.123:2434<
>>>>>>> /member>
>>>>>>>                                 <member> 123.123.123.124:2434<
>>>>>>> /member>
>>>>>>>                                 <member> 123.123.123.125:2434<
>>>>>>> /member>
>>>>>>>                         </tcp-ip>
>>>>>>>
>>>>>>> All ODB containers expose all 3 ports (2424, 2480, 2434). I can
>>>>>>> telnet and ping. However, because each container requests a dynamic 
>>>>>>> docker
>>>>>>> IP address, each node cannot join the same cluster because host IP 
>>>>>>> doesn't
>>>>>>> not match the actual Docker IP inside the container as shown in the 
>>>>>>> above
>>>>>>> error log.
>>>>>>>
>>>>>>> Any solutions for this?
>>>>>>>
>>>>>>> --
>>>>>>>
>>>>>>> ---
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "OrientDB" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to orient-databa...@googlegroups.com.
>>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>>
>>>>>>
>>>>>>  --
>>>>
>>>> ---
>>>> You received this message because you are subscribed to the Google
>>>> Groups "OrientDB" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>> an email to orient-databa...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>>
>>>  --
>
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "OrientDB" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/orient-database/ehfKcInWZXs/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> orient-database+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to orient-database+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to