On Thu, Nov 8, 2018 at 2:42 PM Tom Pantelis <tompante...@gmail.com> wrote:
> > > On Thu, Nov 8, 2018 at 4:48 PM Ajay Lele <ajaysl...@gmail.com> wrote: > >> >> >> On Thu, Nov 8, 2018 at 4:32 AM Tom Pantelis <tompante...@gmail.com> >> wrote: >> >>> >>> >>> On Wed, Nov 7, 2018 at 9:28 PM Tom Pantelis <tompante...@gmail.com> >>> wrote: >>> >>>> >>>> >>>> On Wed, Nov 7, 2018 at 3:36 PM Robert Varga <n...@hq.sk> wrote: >>>> >>>>> On 07/11/2018 20:36, Ajay Lele wrote: >>>>> > >>>>> > >>>>> > On Wed, Nov 7, 2018 at 3:58 AM Robert Varga <n...@hq.sk >>>>> > <mailto:n...@hq.sk>> wrote: >>>>> > >>>>> > On 07/11/2018 02:07, Ajay Lele wrote: >>>>> > > Hi Controller-devs, >>>>> > > >>>>> > > [0] changed EOS behavior such that a non-voting member cannot >>>>> become >>>>> > > entity owner. But there are some situations where we want to >>>>> allow >>>>> > this >>>>> > > e.g. when BGP speaker config is local to node and not >>>>> replicated in >>>>> > > cluster. I think the behavior should be that non-voting member >>>>> > will not >>>>> > > become entity owner *provided* one or more voting candidates >>>>> are >>>>> > > available. Thoughts? >>>>> > >>>>> > This is a sticky topic. Non-voting members are meant to be used >>>>> for >>>>> > geo-redundancy only, in which case non-voting side should be >>>>> really >>>>> > passive. >>>>> > >>>>> > Can you describe the deployment scenario in more detail? >>>>> > >>>>> > >>>>> > One scenario is BGP route injection using application RIB. Injected >>>>> > route will be withdrawn when BGP connection over which it is >>>>> advertised >>>>> > goes down. To prevent downtime window when primary to DR cutover >>>>> > happens, BGP connection is established from non-voting member from DR >>>>> > site as well. This is accomplished by moving BGP speaker data to a >>>>> > separate shard which is not replicated. >>>>> >>>>> I see, so this is used for planned maintenance only, right? >>>>> >>>> >> Same situation for unplanned as well, as as soon as primary goes down the >> routes will be withdrawn, so we need to have a separate connection from DR >> in parallel >> >> >>>>> If that is the case, I think it would make sense to make the selection >>>>> policy switchable at runtime, such that under normal operation only >>>>> voting members are considered, but in preparation for a switchover, the >>>>> policy can be adjusted. Can you file an improvement issue against >>>>> controller, please? >>>> >>>> >>>>> Tom: do you have an opinion on how best implement this? It feels like >>>>> we >>>>> want to have a per-entity behavior table, so that BGP would switch to >>>>> non-voting, but other services would not... >>>>> >>>> >>>> >> One option I see is to give preference to voting members but if none >> exists, give ownership to non-voting one. This will have to be reevaluated >> every time the candidate list changes. Not giving ownership to a >> (non-voting) candidate when no other candidate exists, sounds extreme to >> me. What do you think? >> > > The problem with that is that it doesn't know what other candidates exist > at the time the decision is made. It would work in your case assuming > there's only the one local entity candidate in the entire 6-node cluster. > For others, it may be that a non-voting candidate arrives first then a > voting one, in which case ownership would get revoked. That is not ideal > and could lead to quite bit of churn across all entities before it finally > settles out. > > Therefore it seems there would need to be some setting per entity or > entity type as Robert suggested. However this BGP use case just seems like > it goes against the premise of the EOS. The EOS is intended to maintain one > entity owner across a clustered environment. However in your case, it seems > you essentially want to bypass this behavior and really use EOS to enable > functionality per node, ie you really want to treat it as if in a > non-clustered/single-node environment where the local candidate always gets > ownership, and which is why the BGP data shard is non-replicated. So that's > why I suggested the EOS not even be used in this case rather than trying to > shim changes in to accommodate a (seemingly) incompatible use case. That's > my opinion.... > Fair point, I will try making changes on the BGP side and see how it goes > > > >> Actually voting status is being considered for EOS shard, where as in BGP >> case we create a separate shard for BGP data which is not replicated and so >> it is still voting. So ideally it should look at voting status of the >> "service" shard, but I am not sure if it will be possible to implement that >> >> yeah that seems like one solution. However why is BGP even using the EOS >>>> in that case to establish a connection, ie if every node is intended to >>>> establish its own connection then it seems you don't need EOS to decide >>>> that... >>>> >>> >> Adding BGP "non-clustered" knob to indicate that EOS should not be used >> can be an option, but in a way the user has already expressed that intent >> by not replicating the BGP shard, so an additional config which will have >> to be kept in sync with shard config.. also other apps which are in same >> boat like PCEP will require similar update >> > > Base on my comments above, I think you're going to need a setting > somewhere no matter what. > > >> >> >>> BTW, this is not just for planned maintenance but also for DR should the >>> entire primary site become unavailable. Either way I don't think changing >>> some setting dynamically prior to fail-over (and fail-back) is a viable >>> solution - it would be some permanent setting at installation/deployment >>> time, similar to the configuration to put the BGP data in a local, >>> non-replicated shard. So perhaps there could be an additional "clustered" >>> setting in the BGP module that tells it whether or not to use EOS. >>> >>> >>>> >>>> >>>>> >>>>> Regards, >>>>> Robert >>>>> >>>>>
_______________________________________________ controller-dev mailing list controller-dev@lists.opendaylight.org https://lists.opendaylight.org/mailman/listinfo/controller-dev