[ 
https://issues.apache.org/jira/browse/MESOS-2902?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14627054#comment-14627054
 ] 

Cody Maloney commented on MESOS-2902:
-------------------------------------

We have a build of mesos which is more or less "Statically built" inside a 
tarball, which only depends on the Host OS to have a Linux kernel above a 
certain version. Everything else is bundled.

The packaging system explicitly never runs scripts as part of install / 
uninstall upgrade, as that adds unmanaged / unmanageable state to machines (V1 
of package writes magic file foo to an unmanaged location, v2 of package 
doesn't, machine reboots and foo was on a temp folder and gets deleted, machine 
stops working unexpectedly).

Because of the use of MesosDNS the zk:// url on every slave is actually 
Identical. All we need to know is how to hook up mesos-dns, which we require a 
load balancer between the masters to find at the moment (Also works to do VRRP 
or something similar, or if you don't care about HA and have predictable Master 
IPs, we can just provide a single master IP). That way all you need to provide 
at cluster startup is the address where we can find the masters. That 
loadbalancer address is static per cluster, and then the rest of the machine 
config is static across the cluster. On masters the story is a little more 
complicated / convoluted, but they follow the same principal (We use exhibitor 
to know what the set of master machines is when it sets up a zookeeper cluster).

For resources, attributes, roles and similar flags, we use a notion of "slave 
groups". Every machine in a slave group should be "identical" (or able to just 
use Mesos' built-in resource calculation logic). That way you can ship a single 
static config for MESOS_DEFAULT_ROLE, MESOS_RESOURCES for every host in that 
group. If a group needs special values for those, we can tweak them for that 
one specific slave group and ship a new static mesos slave config for that 
specific role of machine.

> Enable Mesos to use arbitrary script / module to figure out IP, HOSTNAME
> ------------------------------------------------------------------------
>
>                 Key: MESOS-2902
>                 URL: https://issues.apache.org/jira/browse/MESOS-2902
>             Project: Mesos
>          Issue Type: Improvement
>          Components: master, modules, slave
>            Reporter: Cody Maloney
>            Assignee: Marco Massenzio
>            Priority: Critical
>              Labels: mesosphere
>
> Currently Mesos tries to guess the IP, HOSTNAME by doing a reverse DNS 
> lookup. This doesn't work on a lot of clouds as we want things like public 
> IPs (which aren't the default DNS), there aren't FQDN names (Azure), or the 
> correct way to figure it out is to call some cloud-specific endpoint.
> If Mesos / Libprocess could load a mesos-module (Or run a script) which is 
> provided per-cloud, we can figure out perfectly the IP / Hostname for the 
> given environment. It also means we can ship one identical set of files to 
> all hosts in a given provider which doesn't happen to have the DNS scheme + 
> hostnames that libprocess/Mesos expects. Currently we have to generate 
> host-specific config files which Mesos uses to guess.
> The host-specific files break / fall apart if machines change IP / hostname 
> without being reinstalled.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to