On Wed, Mar 15, 2017 at 9:19 AM, Monty Taylor <mord...@inaugust.com> wrote: > On 03/15/2017 11:37 AM, Davanum Srinivas wrote: >> Monty, Team, >> >> Sorry for the top post: >> >> Support for etcd/tooz in devstack (with file driver as default) - >> https://review.openstack.org/#/c/445432/ >> >> As of right now both zookeeper driver and etcd driver is working fine: >> https://review.openstack.org/#/c/445630/ >> https://review.openstack.org/#/c/445629/ >> >> The problem we have from before is that we do not have any CI jobs >> that used zookeeper. >> >> I am leaning towards just throwing the etcd as default and if folks >> are interested in zookeeper then they can add specific CI jobs with >> DLM_BACKEND variable set. > > That doesn't bother me - zk as the default choice was because at the > time zk worked and etcd did not. > > That said - etcd3 is a newer/better thing - so maybe instead of driving > etcd home as a default before we add etcd3 support, we just change tooz > to support etcd3, add the devstack jobs to use that, and start from a > position that doesn't involve dealing with any legacy?
Yep, jd__ and i confirmed that things work with 3.x Thanks, Dims > >> On Tue, Mar 14, 2017 at 11:00 PM, Monty Taylor <mord...@inaugust.com> wrote: >>> On 03/15/2017 03:13 AM, Jay Pipes wrote: >>>> On 03/14/2017 05:01 PM, Clint Byrum wrote: >>>>> Excerpts from Jay Pipes's message of 2017-03-14 15:30:32 -0400: >>>>>> On 03/14/2017 02:50 PM, Julien Danjou wrote: >>>>>>> On Tue, Mar 14 2017, Jay Pipes wrote: >>>>>>> >>>>>>>> Not tooz, because I'm not interested in a DLM nor leader election >>>>>>>> library >>>>>>>> (that's what the underlying etcd3 cluster handles for me), only a >>>>>>>> fast service >>>>>>>> liveness/healthcheck system, but it shows usage of etcd3 and Google >>>>>>>> Protocol >>>>>>>> Buffers implementing a simple API for liveness checking and host >>>>>>>> maintenance >>>>>>>> reporting. >>>>>>> >>>>>>> Cool cool. So that's the same feature that we implemented in tooz 3 >>>>>>> years ago. It's called "group membership". You create a group, make >>>>>>> nodes join it, and you know who's dead/alive and get notified when >>>>>>> their >>>>>>> status change. >>>>>> >>>>>> The point of os-lively is not to provide a thin API over ZooKeeper's >>>>>> group membership interface. The point of os-lively is to remove the need >>>>>> to have a database (RDBMS) record of a service in Nova. >>>>> >>>>> That's also the point of tooz's group membership API: >>>>> >>>>> https://docs.openstack.org/developer/tooz/compatibility.html#grouping >>>> >>>> Did you take a look at the code I wrote in os-lively? What part of the >>>> tooz group membership API do you think I would have used? >>>> >>>> Again, this was a weekend project that I was moving fast on. I looked at >>>> tooz and didn't see how I could use it for my purposes, which was to >>>> store a versioned object in a consistent key/value store with support >>>> for transactional semantics when storing index and data records at the >>>> same time [1] >>>> >>>> https://github.com/jaypipes/os-lively/blob/master/os_lively/service.py#L468-L511 >>>> >>>> >>>> etcd3 -- and specifically etcd3, not etcd2 -- supports the transactional >>>> semantics in a consistent key/value store that I needed. >>>> >>>> tooz is cool, but it's not what I was looking for. It's solving a >>>> different problem than I was trying to solve. >>>> >>>> This isn't a case of NIH, despite what Julien is trying to intimate in >>>> his emails. >>>> >>>>>> tooz simply abstracts a group membership API across a number of drivers. >>>>>> I don't need that. I need a way to maintain a service record (with >>>>>> maintenance period information, region, and an evolvable data record >>>>>> format) and query those service records in an RDBMS-like manner but >>>>>> without the RDBMS being involved. >>>>>> >>>>>>>> servicegroup API with os-lively and eliminate Nova's use of an >>>>>>>> RDBMS for >>>>>>>> service liveness checking, which should dramatically reduce the >>>>>>>> amount of both >>>>>>>> DB traffic as well as conductor/MQ service update traffic. >>>>>>> >>>>>>> Interesting. Joshua and Vilob tried to push usage of tooz group >>>>>>> membership a couple of years ago, but it got nowhere. Well, no, they >>>>>>> got >>>>>>> 2 specs written IIRC: >>>>>>> >>>>>>> >>>>>>> https://specs.openstack.org/openstack/nova-specs/specs/liberty/approved/service-group-using-tooz.html >>>>>>> >>>>>>> >>>>>>> But then it died for whatever reasons on Nova side. >>>>>> >>>>>> It died because it didn't actually solve a problem. >>>>>> >>>>>> The problem is that even if we incorporate tooz, we would still need to >>>>>> have a service table in the RDBMS and continue to query it over and over >>>>>> again in the scheduler and API nodes. >>>>> >>>>> Most likely it was designed with hesitance to have a tooz requirement >>>>> to be a source of truth. But it's certainly not a problem for most tooz >>>>> backends to be a source of truth. Certainly not for etcd or ZK, which >>>>> are both designed to be that. >>>>> >>>>>> I want all service information in the same place, and I don't want to >>>>>> use an RDBMS for that information. etcd3 provides an ideal place to >>>>>> store service record information. Google Protocol Buffers is an ideal >>>>>> data format for evolvable versioned objects. os-lively presents an API >>>>>> that solves the problem I want to solve in Nova. tooz didn't. >>>>> >>>>> Was there something inherent in tooz's design that prevented you from >>>>> adding it to tooz's group API? Said API already includes liveness (watch >>>>> the group that corresponds to the service you want). >>>> >>>> See above about transactional semantics. >>>> >>>> I'm actually happy to add an etcd3 group membership driver to tooz, >>>> though. After the experience gained this weekend using etcd3, I'd like >>>> to do that. >>>> >>>> Still doesn't mean that tooz would be the appropriate choice for what I >>>> was trying to do with os-lively, though. >>>> >>>>> The only thing missing is being able to get groups and group members >>>>> by secondary indexes. etcd3's built in indexes by field are pretty nice >>>> >>>> Not sure what you're talking about. etcd3 doesn't have any indexing by >>>> field. I built the os-lively library primarily as a well-defined set of >>>> index overlays (by uuid, by host, by service type, and by region) over >>>> etcd3's key/value store. >>>> >>>>> for that, but ZK can likely also do it too by maintaining the index in >>>>> the driver. >>>> >>>> Maybe, I'm not sure, I didn't spend much time this weekend looking at >>>> ZooKeeper. >>> >>> a) awesome. when the rest of this dips momentarily into words that might >>> sound negative, please hear it all wrapped in an "awesome" and know that >>> my personal desire is to see the thing you're working on be successful >>> without undue burden... >>> >>> b) In Tokyo, we had the big discussion about DLMs (where at least my >>> intent going in to the room was to get us to pick one and only one). >>> There were three camps in the room who were all vocal: >>> >>> 1) YES! Let's just pick one, I don't care which one >>> 2) I hate Java I don't want to run Zookeeper, so we can't pick that >>> 3) I hate go/don't trust coreos I don't want to run etcd so we can't >>> pick that >>> >>> Because of 2 and 3 the group represented by 1 lost and we ended up with: >>> "crap, we have to use an abstraction library" >>> >>> I'd argue that unless something has changed significantly, having Nova >>> grow a direct depend on etcd when the DLM discussion brought us to "the >>> operators in the room have expressed a need for a pluggable choice >>> between at least zk and etcd" should be pretty much a non-starter. >>> >>> Now, being that I was personally in group 1, I'd be THRILLED if we >>> could, as a community, decide to pick one and skip having an abstraction >>> library. I still don't care which one - and you know I love gRPC/protobuf. >>> >>> But I do think that given the anti-etcd sentiment that was expressed was >>> equally as vehement as the anti-zk sentiment, that we need to circle >>> back and make a legit call on this topic. >>> >>> If we can pick one, I think having special-purpose libraries like >>> os-lively for specific purposes would be neat. >>> >>> If we still can't pick one, then I think adding the liveness check you >>> implemented for os-lively as a new feature in tooz and also implementing >>> the same thing in the zk driver would be necessary. (of course, that'll >>> probably depend on getting etcd3 support added to tooz and making sure >>> there is a good functional test for etcd3. >>> >>> c) awesome >>> >>>>> I understand abstractions can seem pretty cumbersome when you're moving >>>>> fast. It's not something I want to see stand in your way. But it would >>>>> be nice to see where there's deficiency in tooz so we can be there for >>>>> the next project that needs it and maybe eventually factor out direct >>>>> etcd3 usage so users who have maybe chosen ZK as their tooz backend can >>>>> also benefit from your work. >>>> >>>> It's not a deficiency in tooz. It's a different problem domain. Look at >>>> the os-lively API and show me how you think I could have used tooz to >>>> implement that API. >>> >>> I think I already said this above - but what I was reading/hearing is >>> "why not add add the feature you need to tooz" ... not "tooz does that >>> already" - however, as you said, you were doing quick weekend POC work, >>> so it's possible that adding this to tooz is a next step. >>> >>> >>> __________________________________________________________________________ >>> OpenStack Development Mailing List (not for usage questions) >>> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe >>> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev >> >> >> > > > __________________________________________________________________________ > OpenStack Development Mailing List (not for usage questions) > Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe > http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev -- Davanum Srinivas :: https://twitter.com/dims __________________________________________________________________________ OpenStack Development Mailing List (not for usage questions) Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev