Thank you. This is what I needed. -- Dmitrii Kishchukov. Leading software developer Submission Portal Team
On 12/7/18, 2:52 PM, "Joseph Wu" <jos...@mesosphere.io> wrote: There are currently three components of Mesos that use Zookeeper: *Master Detector:* This object is used by the Mesos Master, Agent, and Scheduler to find which Master is the leader. The existing detector code will parse a "zk://" URL if given here: https://github.com/apache/mesos/blob/1.7.x/src/master/detector/detector.cpp#L62 Not including tests, there are four call sites which pass in a ZK URL to the detector: - Master: https://github.com/apache/mesos/blob/1.7.x/src/master/main.cpp#L430-L433 - Agent: https://github.com/apache/mesos/blob/1.7.x/src/slave/main.cpp#L487-L490 - Scheduler: https://github.com/apache/mesos/blob/1.7.x/src/sched/sched.cpp#L152 - (Deprecated) CLI helper binary: https://github.com/apache/mesos/blob/1.7.x/src/cli/resolve.cpp#L95-L96 *Master Contender:* This object is used by the Mesos Master to contend for leadership of the cluster. The contender will parse a ZK URL just like the detector: https://github.com/apache/mesos/blob/1.7.x/src/master/contender/contender.cpp#L53 Unlike the detector, there is only a single call site for the contender: https://github.com/apache/mesos/blob/1.7.x/src/master/main.cpp#L418-L421 *Replicated Log Library:* This is a library which is used by the Mesos Master and some custom frameworks, to persist data via the Paxos algorithm. The Master's call site is straightforward: https://github.com/apache/mesos/blob/1.7.x/src/master/main.cpp#L383-L391 The library is built into a JAR for use by java frameworks, so there are two references in this JNI code: https://github.com/apache/mesos/blob/1.7.x/src/java/jni/org_apache_mesos_Log.cpp#L673 https://github.com/apache/mesos/blob/1.7.x/src/java/jni/org_apache_mesos_state_LogState.cpp#L75 Some other files that you will likely need to modify include: - The zookeeper::Authentication class: https://github.com/apache/mesos/blob/1.7.x/include/mesos/zookeeper/authentication.hpp This will need to be extended to allow non-digest schemes. It will currently exit if a non-digest scheme is passed in the URL. - The zookeeper::URL class: https://github.com/apache/mesos/blob/1.7.x/include/mesos/zookeeper/url.hpp Depending on how flexible the authentication schemes are, you may need to update the URL parsing logic, or scrap the URL altogether if there are authentication schemes that cannot be encoded in a URL. - The "--zk" flag for the Master: https://github.com/apache/mesos/blob/1.7.x/src/master/flags.cpp#L666-L673 You may need to update the documentation of this flag, or perhaps add new flags. - The "--master" flag for the Agent: https://github.com/apache/mesos/blob/1.7.x/src/slave/flags.cpp#L1421-L1427 This will look similar to the "--zk" Master flag, but it also supports non-ZK masters. Hopefully this list of code locations will give you some idea of where to start. Feel free to ping us in Slack too. On Fri, Dec 7, 2018 at 6:01 AM Kishchukov, Dmitrii (NIH/NLM/NCBI) [C] < dmitrii.kishchu...@nih.gov> wrote: > Yes. I want to do it. And it would be good if someone could give an advise > how to do it. For example is there one place where Authentication object > constructed for Zookeeper? > For me it looks like there many places which is strange. > > -- > > Dmitrii Kishchukov. > Leading software developer > Submission Portal Team > > > On 12/6/18, 12:56 PM, "Vinod Kone" <vinodk...@apache.org> wrote: > > Dmitrii. > > That approach sounds reasonable. Would you like to work on this? Are > you > looking for a reviewer/shepherd? > > On Thu, Dec 6, 2018 at 11:28 AM Kishchukov, Dmitrii (NIH/NLM/NCBI) [C] > < > dmitrii.kishchu...@nih.gov> wrote: > > > Mesos allow using only digest authentication scheme for Zookeeper. > Which > > is bad because Zookeeper has quite a flexible security model. > > It is easy to make you own authenticator with its own scheme name. > > > > To support fully Zookeeper authentication, Mesos has pass two items > into > > Zookeeper: > > scheme and credentials. > > credentials can have different format depending on authentication > scheme. > > For digest scheme it is ‘login:password’ > > > > All Mesos should do just pass scheme and credentials to Zookeeper. > > > > Another improvement might be be to configure credentials via file > instead > > of URI > > > > For example it can be two command line options: > > --zk_auth_scheme and –zk_auth_credentials > > > > It can be used like this: > > --zk_auth_scheme=some_custome_scheme –zk_auth_credentials=filename > > > > --zk_auth_credentials can just get all contents of the file as > credentials > > string. > > > > Class Authentication in Mesos already contains all that we need. The > > problem is what Mesos pass to the constructor. > > > > > > -- > > > > Dmitrii Kishchukov. > > > > > > >