Looks like to me. I marked it as such. Patrick
On Mon, Jan 9, 2012 at 6:49 PM, Neha Narkhede <neha.narkh...@gmail.com> wrote: > Patrick, > > Looks like https://issues.apache.org/jira/browse/ZOOKEEPER-1356 is a > duplicate of 338 ? If yes, then I'll mark it to reflect the same. > > Thanks, > Neha > > On Mon, Jan 9, 2012 at 5:36 PM, Patrick Hunt <ph...@apache.org> wrote: >> dup of https://issues.apache.org/jira/browse/ZOOKEEPER-338 ? >> >> Patrick >> >> On Mon, Jan 9, 2012 at 3:17 PM, Ted Dunning <ted.dunn...@gmail.com> wrote: >>> Neha >>> >>> Filing a jira is a great way to further the discussion. >>> >>> Sent from my iPhone >>> >>> On Jan 9, 2012, at 15:33, Neha Narkhede <neha.narkh...@gmail.com> wrote: >>> >>>>>> If you just have machine names in a list that you pass in, then yes, we >>>> could re-resolve on every reconnect and you could just re-alias that name >>>> to a new IP. But you'll have to put in logic that will do that but not >>>> break people using DNS RR. >>>> >>>> Having a list of machine names that can be changed to point to new IPs >>>> seems reasonable too. To be able to do the upgrade without having to >>>> restart all clients, besides turning off DNS caching in the JVM, we >>>> still have to solve the problem of zookeeper client caching the IPs in >>>> code. Having 2 levels of DNS caching, one in the JVM and one in code >>>> (which cannot be turned off) doesn't look like a good idea. Unless I'm >>>> missing the purpose of such IP caching in zookeeper ? >>>> >>>>>> I realize that moving machines is difficult when you have lots of >>>>>> clients. >>>> I'm a bit surprised your admins can't maintain machine IP addresses on a >>>> machine move given a cluster of that complexity, though >>>> >>>> Its not like it can't be done, it definitely has quite some >>>> operational overhead. We are trying to brainstorm various approaches >>>> and come up with one that will involve the least overhead on such >>>> upgrades going forward. >>>> >>>> Having said that, seems like re-resolving host names in reconnect >>>> doesn't look like a bad idea, provided it doesn't break the DNS RR use >>>> case. If that sounds good, can I go ahead a file a JIRA for this ? >>>> >>>> Thanks, >>>> Neha >>>> >>>> On Mon, Jan 9, 2012 at 11:04 AM, Camille Fournier <cami...@apache.org> >>>> wrote: >>>>> We don't shuffle IPs after the initial resolution of IP addresses. >>>>> >>>>> In DNS RR, you resolve to a list of IPs, shuffle these, and then we round >>>>> robin through them trying to connect. If you re-resolve on every >>>>> round-robin, you have to put in logic to know which ones have changed and >>>>> somehow maintain that shuffle order or you aren't doing a fair back end >>>>> round robin, which people using the ZK client against DNS RR are relying >>>>> on >>>>> today. >>>>> >>>>> If you just have machine names in a list that you pass in, then yes, we >>>>> could re-resolve on every reconnect and you could just re-alias that name >>>>> to a new IP. But you'll have to put in logic that will do that but not >>>>> break people using DNS RR. >>>>> >>>>> I realize that moving machines is difficult when you have lots of clients. >>>>> I'm a bit surprised your admins can't maintain machine IP addresses on a >>>>> machine move given a cluster of that complexity, though. I also think that >>>>> if we're going to be putting special cases like this in we might just want >>>>> to go all the way to a pluggable reconnection scheme, but maybe that is >>>>> too >>>>> aggressive. >>>>> >>>>> C >>>>> >>>>> On Mon, Jan 9, 2012 at 1:51 PM, Neha Narkhede >>>>> <neha.narkh...@gmail.com>wrote: >>>>> >>>>>> Maybe I didn't express myself clearly. When I said DNS RR, I meant its >>>>>> simplest implementation which resolves a hostname to multiple IPs. >>>>>> >>>>>> Whatever method you use to map host names to IPs, the problem is that >>>>>> the zookeeper client code will always cache the IPs. So to be able to >>>>>> swap out a machine, all clients would have to be restarted, which if >>>>>> you have 100s of clients, is a major pain. If you want to move the >>>>>> entire cluster to new machines, this becomes even harder. >>>>>> >>>>>> I don't see why re-resolving host names to IPs in the reconnect logic >>>>>> is a problem for zookeeper, since you shuffle the list of IPs anyways. >>>>>> >>>>>> Thanks, >>>>>> Neha >>>>>> >>>>>> >>>>>> On Mon, Jan 9, 2012 at 10:31 AM, Camille Fournier <cami...@apache.org> >>>>>> wrote: >>>>>>> You can't sensibly round robin within the client code if you re-resolve >>>>>> on >>>>>>> every reconnect, if you're using dns rr. If that's your goal you'd want >>>>>>> a >>>>>>> list of dns alias names and re-resolve each hostname when you hit it on >>>>>>> reconnect. But that will break people using dns rr. >>>>>>> You can look into writing a pluggable reconnect logic into the zk >>>>>>> client, >>>>>>> that's what would be required to do this but at the end of the day >>>>>>> you'll >>>>>>> have to give your users special clients to make that work. >>>>>>> >>>>>>> C >>>>>>> On Jan 9, 2012 1:16 PM, "Neha Narkhede" <neha.narkh...@gmail.com> >>>>>> wrote: >>>>>>> >>>>>>>> I was reading through the client code and saw that zookeeper client >>>>>>>> caches the server IPs during startup and maintains it for the rest of >>>>>>>> its lifetime. If we go with the DNS RR approach or a load balancer >>>>>>>> approach, and later swap out a server with a new one ( with a new IP >>>>>>>> ), all clients would have to be restarted to be able to "forget" the >>>>>>>> old IP and see the new one. That doesn't look like a clean approach to >>>>>>>> such upgrades. One way of getting around this problem, is adding the >>>>>>>> resolution of host names to IPs in the "reconnect" logic in addition >>>>>>>> to the constructor. So when such upgrades happen and the client >>>>>>>> reconnects, it will see the new list of IPs, and wouldn't require to >>>>>>>> be restarted. >>>>>>>> >>>>>>>> Does this approach sound good or am I missing something here ? >>>>>>>> >>>>>>>> Thanks, >>>>>>>> Neha >>>>>>>> >>>>>>>> On Wed, Dec 21, 2011 at 7:21 PM, Camille Fournier <cami...@apache.org> >>>>>>>> wrote: >>>>>>>>> DNS RR is good. I had good experiences using that for my client >>>>>>>>> configs for exactly the reasons you are listing. >>>>>>>>> >>>>>>>>> On Wed, Dec 21, 2011 at 8:43 PM, Neha Narkhede < >>>>>> neha.narkh...@gmail.com> >>>>>>>> wrote: >>>>>>>>>> Thanks for the responses! >>>>>>>>>> >>>>>>>>>>>> How are your clients configured to find the zks now? >>>>>>>>>> >>>>>>>>>> Our clients currently use the list of hostnames and ports that >>>>>>>>>> comprise the zookeeper cluster. For example, >>>>>>>>>> zoo1:port1,zoo2:port2,zoo3:port3 >>>>>>>>>> >>>>>>>>>>>>> - switch DNS, >>>>>>>>>>> - wait for caches to die, >>>>>>>>>> >>>>>>>>>> This is something we thought about however, if I understand it >>>>>>>>>> correctly, doesn't JVM cache DNS entries forever until it is >>>>>> restarted >>>>>>>>>> ? We haven't specifically turned DNS caching off on our clients. So >>>>>>>>>> this solution would require us to restart the clients to see the new >>>>>>>>>> list of zookeeper hosts. >>>>>>>>>> >>>>>>>>>> Another thought is to use DNS RR and have the client zk url have one >>>>>>>>>> name that resolves to and returns a list of IPs to the zookeeper >>>>>>>>>> client. This has the advantage of being able to perform hardware >>>>>>>>>> migration without changing the client connection url, in the future. >>>>>>>>>> Do people have thoughts about using a DNS RR ? >>>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> Neha >>>>>>>>>> >>>>>>>>>> On Tue, Dec 20, 2011 at 1:06 PM, Ted Dunning <ted.dunn...@gmail.com> >>>>>>>> wrote: >>>>>>>>>>> In particular, aren't you using DNS names? If you are, then you can >>>>>>>>>>> >>>>>>>>>>> - expand the quorum with the new hardware on new IP addresses, >>>>>>>>>>> - switch DNS, >>>>>>>>>>> - wait for caches to die, >>>>>>>>>>> - restart applications without reconfig or otherwise force new >>>>>>>> connections, >>>>>>>>>>> - decrease quorum size again >>>>>>>>>>> >>>>>>>>>>> On Tue, Dec 20, 2011 at 12:26 PM, Camille Fournier < >>>>>> cami...@apache.org >>>>>>>>> wrote: >>>>>>>>>>> >>>>>>>>>>>> How are your clients configured to find the zks now? How many >>>>>> clients >>>>>>>> do >>>>>>>>>>>> you have? >>>>>>>>>>>> >>>>>>>>>>>> From my phone >>>>>>>>>>>> On Dec 20, 2011 3:14 PM, "Neha Narkhede" <neha.narkh...@gmail.com> >>>>>>>> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> As part of upgrading to Zookeeper 3.3.4, we also have to migrate >>>>>> our >>>>>>>>>>>>> zookeeper cluster to new hardware. I'm trying to figure out the >>>>>> best >>>>>>>>>>>>> strategy to achieve that with no downtime. >>>>>>>>>>>>> Here are some possible solutions I see at the moment, I could >>>>>> have >>>>>>>>>>>>> missed a few though - >>>>>>>>>>>>> >>>>>>>>>>>>> 1. Swap each machine out with a new machine, but with the same >>>>>>>> host/IP. >>>>>>>>>>>>> >>>>>>>>>>>>> Pros: No client side config needs to be changed. >>>>>>>>>>>>> Cons: Relatively tedious task for Operations >>>>>>>>>>>>> >>>>>>>>>>>>> 2. Add new machines, with different host/IPs to the existing >>>>>>>> cluster, >>>>>>>>>>>>> and remove the older machines, taking care to maintain the >>>>>> quorum at >>>>>>>>>>>>> all times >>>>>>>>>>>>> >>>>>>>>>>>>> Pros: Easier for Operations >>>>>>>>>>>>> Cons: Client side configs need to be changed and clients need to >>>>>> be >>>>>>>>>>>>> restarted/bounced. Another problem is having a large quorum for >>>>>>>>>>>>> sometime (potentially 9 nodes). >>>>>>>>>>>>> >>>>>>>>>>>>> 3. Hide the new cluster behind either a Hardware load balancer >>>>>> or a >>>>>>>>>>>>> DNS server resolving to all host ips. >>>>>>>>>>>>> >>>>>>>>>>>>> Pros: Makes it easier to move hardware around in the future >>>>>>>>>>>>> Cons: Possible timeout issues with load balancers messing with >>>>>>>>>>>>> zookeeper functionality or performance >>>>>>>>>>>>> >>>>>>>>>>>>> Read this and found it helpful - >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>> >>>>>> http://apache.markmail.org/message/44tbj53q2jufplru?q=load+balancer+list:org%2Eapache%2Ehadoop%2Ezookeeper-user&page=1 >>>>>>>>>>>>> But would like to hear from the authors and the users who might >>>>>> have >>>>>>>>>>>>> tried this in a real production setup. >>>>>>>>>>>>> >>>>>>>>>>>>> I'm very interested in finding a long term solution for masking >>>>>> the >>>>>>>>>>>>> zookeeper host names. Any inputs here are appreciated ! >>>>>>>>>>>>> >>>>>>>>>>>>> In addition to this, it will also be great to know what people >>>>>> think >>>>>>>>>>>>> about options 1 and 2, as a solution for hardware changes in >>>>>>>>>>>>> Zookeeper. >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Neha >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>> >>>>>>