Вы определенно можете запустить главный, подчиненный и zk-процесс на одном и том же узле. Вы даже можете запустить несколько главных и подчиненных процессов на одном узле, при условии, что вы дадите им каждый уникальный порт, но это полезно только для тестового кластера.
Обычно мы рекомендуем запускать ZK на тех же узлах, что и ваши мастера, но если у вас есть дополнительные ZK, вы, безусловно, можете запускать их на подчиненных устройствах или смешивать и сопоставлять по своему усмотрению, если все узлы master / slave / framework могут достигают узлов ZK, и все ведомые устройства могут достигать мастеров.
Для меньшего кластера (‹10 узлов) может иметь смысл запускать подчиненный процесс на каждом главном устройстве, тем более, что резервные мастера не будут много делать. Даже активный мастер для небольшого кластера использует лишь небольшой объем ЦП, памяти и сетевых ресурсов. Просто убедитесь, что вы настроили --resources на этом ведомом устройстве, чтобы учесть использование ресурсов ведущим.
Когда ваш кластер становится больше (особенно> 100 узлов), сетевой трафик к / от мастера, а также его использование процессора / памяти становится достаточно значительным, чтобы вы не захотели запускать подчиненное устройство mesos на том же узле, что и мастер. Совместите ZK с вашим мастером даже в больших масштабах.
Вы специально не спрашивали, но я также расскажу, где запускать ваши планировщики фреймворка (например, Spark, Marathon или Chronos). Они могут быть совмещены с любыми другими компонентами, но на самом деле они должны иметь доступ только к главному узлу и узлам zk, так как вся связь с подчиненными идет через мастер. Некоторые клиенты запускают планировщики на главных узлах, некоторые запускают их на граничных узлах (поэтому пользователи не имеют доступа к ведомым устройствам), а другие используют мета-фреймворки, такие как Marathon, для запуска других планировщиков на ведомых устройствах в качестве задач Mesos.
person
Adam
schedule
30.10.2014