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] <[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