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