I found this issue on the mesos jira that describes the exact issue I am 
hitting.

https://issues.apache.org/jira/browse/MESOS-3740

It doesn't appear to be resolved. 

Thanks
Eli

> On 5 Jun 2016, at 16:46, Eli Jordan <[email protected]> wrote:
> 
> Hmmm… that doesn’t seem to work for me. What version of mesos does this work 
> in? I am running 0.27.1.
> 
> When using this approach, I still get the following error when the kafka mess 
> framework is starting up.
> 
> "Scheduler driver bound to loopback interface! Cannot communicate with remote 
> master(s). You might want to set 'LIBPROCESS_IP' environment variable to use 
> a routable IP address.”
> 
> I tried setting LIBPROCESS_IP to ‘0.0.0.0’ and LIBPROCESS_ADVERTISE_IP=‘the 
> public ip’ and this works. But the host variations don’t seem to work. (i.e. 
> set LIBPROCESS_IP=0.0.0.0 and LIBPROCESS_ADVERTISE_HOST=$HOST)
> 
> It seems lib process doesn’t support using host names.
> 
> I think I might have to run the framework outside of docker, but I would 
> really like to avoid this. 
> 
> This problem would be solved if the docker executor was able to set the same 
> environment variables as the command executor. Is there a way to make this 
> happen?
> 
> I saw that mesos can be extended with a Hook ‘module’ to set extra 
> environment variables in docker containers. This might be a solution, but 
> seems over wrought for a simple problem.
> 
> 
>> On 5 Jun 2016, at 12:50 am, Sivaram Kannan <[email protected]> wrote:
>> 
>> 
>> Hi,
>> 
>> Can you try adding && after the LIBPROCESS_HOST variable and the actual 
>> command. We have been using this for sometime now.
>> 
>> "cmd": "LIBPROCESS_HOST=$HOST && ./kafka-mesos.sh ..
>> 
>> Thanks,
>> ./Siva.
>> 
>> 
>>> On Sat, Jun 4, 2016 at 8:34 AM, Eli Jordan <[email protected]> wrote:
>>> Hi @haosdent
>>> 
>>> Based on my testing, this is not the case.
>>> 
>>> I ran a task (from marathon) without using a docker container that just 
>>> printed out all environment variables. i.e. while [ true ]; do env; sleep 
>>> 2; done
>>> 
>>> I then run a task that executed the same command inside an alpine docker 
>>> image.
>>> 
>>> When running without a docker image LIBPROCESS_IP was defined along with 
>>> many other variables. 
>>> 
>>> Sample output when running without docker (note LIBPROCESS_IP) is defined
>>> 
>>> Registered executor on mesos-slave0
>>> Starting task plain-test.5e5b00cc-2645-11e6-a3dd-080027aa149e
>>> sh -c 'while [ true ]; do env; sleep 2; done'
>>> Forked command at 16571
>>> LIBPROCESS_IP=192.168.3.16
>>> MESOS_AGENT_ENDPOINT=192.168.3.16:5051
>>> MESOS_EXECUTOR_REGISTRATION_TIMEOUT=5mins
>>> HOST=mesos-slave0
>>> SHELL=/bin/sh
>>> MESOS_DIRECTORY=/var/mesos/slaves/7ad17efe-0f9e-4703-9d2e-7fb9ee03f64c-S0/frameworks/aae929c7-24a5-4463-9ae0-bc7b044973c5-0000/executors/plain-test.5e5b00cc-2645-11e6-a3dd-080027aa149e/runs/c9b6ef86-b37d-4e3c-b1ca-bd680aed779f
>>> PORT0=31082
>>> PORT_10001=31082
>>> LC_ALL=en_US.UTF-8
>>> … more
>>> 
>>> 
>>> Sample output when running with docker (note LIBPROCESS_IP is not defined)
>>> 
>>> --container="mesos-7ad17efe-0f9e-4703-9d2e-7fb9ee03f64c-S0.f3a94ab4-dfff-4e97-b806-f1cc501ecf42"
>>>  --docker="docker" --docker_socket="/var/run/docker.sock" --help="false" 
>>> --initialize_driver_logging="true" --launcher_dir="/usr/libexec/mesos" 
>>> --logbufsecs="0" --logging_level="INFO" 
>>> --mapped_directory="/mnt/mesos/sandbox" --quiet="false" 
>>> --sandbox_directory="/var/mesos/slaves/7ad17efe-0f9e-4703-9d2e-7fb9ee03f64c-S0/frameworks/aae929c7-24a5-4463-9ae0-bc7b044973c5-0000/executors/alpine-test.77d5a3d9-2644-11e6-a3dd-080027aa149e/runs/f3a94ab4-dfff-4e97-b806-f1cc501ecf42"
>>>  --stop_timeout="0ns"
>>> --container="mesos-7ad17efe-0f9e-4703-9d2e-7fb9ee03f64c-S0.f3a94ab4-dfff-4e97-b806-f1cc501ecf42"
>>>  --docker="docker" --docker_socket="/var/run/docker.sock" --help="false" 
>>> --initialize_driver_logging="true" --launcher_dir="/usr/libexec/mesos" 
>>> --logbufsecs="0" --logging_level="INFO" 
>>> --mapped_directory="/mnt/mesos/sandbox" --quiet="false" 
>>> --sandbox_directory="/var/mesos/slaves/7ad17efe-0f9e-4703-9d2e-7fb9ee03f64c-S0/frameworks/aae929c7-24a5-4463-9ae0-bc7b044973c5-0000/executors/alpine-test.77d5a3d9-2644-11e6-a3dd-080027aa149e/runs/f3a94ab4-dfff-4e97-b806-f1cc501ecf42"
>>>  --stop_timeout="0ns"
>>> Registered docker executor on mesos-slave0
>>> Starting task alpine-test.77d5a3d9-2644-11e6-a3dd-080027aa149e
>>> HOSTNAME=984809b0b720
>>> SHLVL=1
>>> HOME=/root
>>> PORT=31295
>>> MESOS_CONTAINER_NAME=mesos-7ad17efe-0f9e-4703-9d2e-7fb9ee03f64c-S0.f3a94ab4-dfff-4e97-b806-f1cc501ecf42
>>> MARATHON_APP_ID=/alpine-test
>>> PORTS=31295
>>> PORT0=31295
>>> MARATHON_APP_DOCKER_IMAGE=alpine
>>> PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
>>> MESOS_SANDBOX=/mnt/mesos/sandbox
>>> MARATHON_APP_RESOURCE_DISK=0.0
>>> MARATHON_APP_RESOURCE_MEM=128.0
>>> HOST=mesos-slave0
>>> PORT_10000=31295
>>> MARATHON_APP_VERSION=2016-05-30T08:56:59.065Z
>>> MARATHON_APP_LABELS=
>>> PWD=/
>>> MESOS_TASK_ID=alpine-test.77d5a3d9-2644-11e6-a3dd-080027aa149e
>>> MARATHON_APP_RESOURCE_CPUS=1.0
>>> 
>>> Is there some other config I need to do for the docker containerizer? Any 
>>> help greatly appreciated.
>>> 
>>>> On 4 Jun 2016, at 7:28 pm, haosdent <[email protected]> wrote:
>>>> 
>>>> Hi, @Jordan. I think not matter you use MesosContainerizer or 
>>>> DockerContainerizer, LIBPROCESS_IP always would be set if you launch you 
>>>> Agent with `--ip` flag.
>>>> 
>>>> On Fri, Jun 3, 2016 at 8:23 PM, Eli Jordan <[email protected]> 
>>>> wrote:
>>>>> 
>>>>> The reason I need to set LIBPROCESS_IP is because the slaves have 2 
>>>>> network interfaces, and the docker container is running in host 
>>>>> networking mode. So libmesos doesn’t know which IP to advertise. The 
>>>>> hostnames of the slaves are all resolvable.
>>>>> 
>>>>> I have noticed that if I run a marathon app that doesn’t use docker, e.g. 
>>>>> while [ true ]; do env; sleep 2; done, that LIBPROCESS_IP is defined in 
>>>>> the environment. However, when running a docker image this variable is 
>>>>> not defined. 
>>>>> 
>>>>> Is there a way to have marathon pass along all environment variables 
>>>>> defined by mesos?
>>>>> Thanks
>>>>> Eli
>>>>> 
>>>>>> On 4 Apr 2016, at 14:12, Eli Jordan <[email protected]> wrote:
>>>>>> 
>>>>>> @haosdent I’m not sure how this works internally, but it seems the mess 
>>>>>> master needs to send requests to the framework for resource offers, and 
>>>>>> therefore needs to know the external IP (i.e. the host IP)
>>>>>> 
>>>>>> @craig w
>>>>>> Would I need to do this in the cmd portion of the marathon JSON? I 
>>>>>> currently have the config below
>>>>>> {
>>>>>>     "container": ...,
>>>>>>     "id":"kafka-mesos-scheduler",
>>>>>>     "cpus": 0.5,
>>>>>>     "mem": 256,
>>>>>>     "ports": [9999],
>>>>>>     "cmd": "./kafka-mesos.sh scheduler --master=mesos-master:5050 
>>>>>> --zk=mesos-master:2181 --api=http://mesos-slave0:9999 
>>>>>> --storage=zk:/kafka-mesos",
>>>>>>     "instances": 1,
>>>>>>     "constraints": [["hostname", "LIKE", "mesos-slave0"]],
>>>>>>     "env": {
>>>>>>         "LIBPROCESS_IP": "192.168.3.16"
>>>>>>     }
>>>>>> }
>>>>>> 
>>>>>> @Chris Baker Currently we don’t have mess-dns setup but if this works it 
>>>>>> would seem to be a nice solution. However, I did try setting 
>>>>>> LIBPROCESS_IP to the slave hostname and it seems to produce a parse 
>>>>>> error. So I think it needs to be an actual IP address.
>>>>>> 
>>>>>> I was hoping there would be a configuration for the slave that would 
>>>>>> automatically populate this env variable when starting the docker 
>>>>>> container. So I don’t need to complicate the marathon file, and can 
>>>>>> reuse it in different clusters.
>>>>>> 
>>>>>> 
>>>>>>> On 4 Apr 2016, at 11:25 am, Chris Baker <[email protected]> wrote:
>>>>>>> 
>>>>>>> Alternatively, because the $HOST username is indirect, which would 
>>>>>>> require a runtime element to "export $LIBPROCESS_IP=$HOST", another 
>>>>>>> alternative is to fallback on Mesos-DNS, if that's part of the cluster 
>>>>>>> deployment, setting $LIBPROCESS_IP to the (a priori) Mesos-DNS entry 
>>>>>>> corresponding to the service.
>>>>>>> 
>>>>>>> On Sun, Apr 3, 2016 at 5:06 PM craig w <[email protected]> wrote:
>>>>>>>> Hi, marathon sets the HOST env var. If it's not the ip address you can 
>>>>>>>> use getent with the value from HOST to figure it out.
>>>>>>>> 
>>>>>>>> >However, in order for the frameworks to receive resource offers I 
>>>>>>>> >need to set the LIBPROCESS_IP environment variable to the hosts IP 
>>>>>>>> >address for the docker container running the frameworks. 
>>>>>>>> 
>>>>>>>> Hi, @Gmail. Could you provide more details about this?
>>>>>>>> 
>>>>>>>>> On Sun, Apr 3, 2016 at 10:40 PM, Rad Gruchalski 
>>>>>>>>> <[email protected]> wrote:
>>>>>>>>> Hi Gmail,
>>>>>>>>> 
>>>>>>>>> AFAIK not. The only way to do so is setting up the env variable as 
>>>>>>>>> you do now.
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Kind regards,
>>>>>>>>> 
>>>>>>>>> Radek Gruchalski
>>>>>>>>> 
>>>>>>>>> [email protected]
>>>>>>>>> 
>>>>>>>>> de.linkedin.com/in/radgruchalski/
>>>>>>>>> 
>>>>>>>>> Confidentiality:
>>>>>>>>> This communication is intended for the above-named person and may be 
>>>>>>>>> confidential and/or legally privileged.
>>>>>>>>> If it has come to you in error you must take no action based on it, 
>>>>>>>>> nor must you copy or show it to anyone; please delete/destroy and 
>>>>>>>>> inform the sender immediately.
>>>>>>>>>> On Sunday, 3 April 2016 at 16:09, Gmail wrote:
>>>>>>>>>> 
>>>>>>>>>> I'm pretty new to mesos and marathon, and I'm running a couple of 
>>>>>>>>>> frameworks with marathon (Kafka and elastic search). However, in 
>>>>>>>>>> order for the frameworks to receive resource offers I need to set 
>>>>>>>>>> the LIBPROCESS_IP environment variable to the hosts IP address for 
>>>>>>>>>> the docker container running the frameworks. Currently I am working 
>>>>>>>>>> around me this by using a constraint to hard wire the slave that the 
>>>>>>>>>> framework gets launched on, so then I can put the slaves ip in the 
>>>>>>>>>> marathon json file.
>>>>>>>>>> 
>>>>>>>>>> Obviously this is not ideal. Is there a better way to define the 
>>>>>>>>>> host ip Inside the docker container?
>>>>>>>>>> 
>>>>>>>>>> Sent from my iPad
>>>>>>>> 
>>>>>>>> 
>>>>>>>> 
>>>>>>>> -- 
>>>>>>>> Best Regards,
>>>>>>>> Haosdent Huang
>>>> 
>>>> 
>>>> 
>>>> -- 
>>>> Best Regards,
>>>> Haosdent Huang
>> 
>> 
>> 
>> -- 
>> ever tried. ever failed. no matter.
>> try again. fail again. fail better.
>>         -- Samuel Beckett
> 

Reply via email to