On Thu, Jul 7, 2016 at 11:37 AM, Han Zhou <zhou...@gmail.com> wrote:

> Hi Andy,
>
> Sorry #1 seems not clear to me. It sounds like a etcd cluster running
> behind a ovsdb-server cluster? Then what would be the HA mechanism for the
> ovsdb-server layer?
>

Yes, your understanding is correct, expect ovsdb-servers do not form a
cluster, they only connect to etcd servers.

etcd  servers form the HA cluster. All ovsdb-servers maintain connections
to the leader etcd server.  OVSDB servers do not store
transactions, they essentially translate ovsdb protocol into etcd gRPC
protocol.

>
>
> Han
>
> On Thu, Jul 7, 2016 at 11:07 AM, Andy Zhou <az...@ovn.org> wrote:
> >
> > Ben and I discussed briefly,  and came up with two possible alternatives:
> >
> > 1. Deploy ovsdb and etcd in tendon.
> > The Ovsdb clients still connect to ovsdb server. OVSDB server(s) stores
> the db in etcd, rather than
> > a file.  Referential integrity will be enforced by ovsdb server.
> >
> > 2. Absorb some ovsdb server functions into the idl layer.  The ovsdb
> client connects directly to etcd,
> > but need to guarantee referential integrity for each transaction.
> >
> > #1 is more straight forward to implement.  ovsdb client does not need to
> change; they are still talking
> > to ovsdb servers. However, the number of transactions will be 2x, so
> transaction latency will increase.
> > In addition, the overall system can be more complex because two database
> are in use.
> >
> > #2 can be more efficient than #1. But it seems odd to put the burden of
> referential integrity into client. (although
> > this must be the case if we were to write a native etcd client from
> ground up).  Technically, ovsdb clients
> > may not be possible when ovsdb clients only maintains a subset of the DB
> replica. Of course this can be solved
> > by replicating more data to the client than otherwise necessary.
> >
> >
> > Ben, please feel free to chime in in case I missed anything.
> >
> > I plan to prototype #1, and keep the code modular so that they can be
> applied to #2, just in case we like #2 more.
> >
> >
> >
> >
> >
> >
> >
> > On Fri, Jul 1, 2016 at 1:23 PM, Ben Pfaff <b...@ovn.org> wrote:
> >>
> >> On Wed, Jun 29, 2016 at 03:38:26PM -0700, Andy Zhou wrote:
> >> > This is one possible way to implement reference integrity with etcd:
> >> >
> >> > * DB wide versioning.
> >> >
> >> > Assign a key db/version that stores db wide transaction id. Assume
> the id
> >> > starts with 0. Any client issued transaction on the DB should also
> include
> >> > this key; A transaction will increase its value by 1; Any etcd client
> >> > transaction
> >> > will always bring this version number from even to an odd number.
> >> >
> >> > No further transaction can be issued until "db/version"'s value become
> >> > even.
> >> >
> >> > * A dedicated client enforces referential integrity
> >> >
> >> > There is a dedicated etcd client whose job is to enforce referential
> >> > integrity.
> >> > It starts to run when the version number is odd, commit the next
> transaction
> >> > that "fixes"  the etcd.  The version number is increased even if
> there is
> >> > nothing
> >> > to fix.
> >> >
> >> > In the HA setup, referential integrity checking clients should run on
> the
> >> > same machines
> >> > that run etcd. Only the etcd client that runs on the same machine as
> the
> >> > etcd leader
> >> > will actively enforce referential integrity.  Other clients will be
> running
> >> > in standby mode,
> >> > and only become active when its local etcd server become the leader.
> >> >
> >> > Will this work?
> >>
> >> I agree with Russell that this sounds really expensive.
> >
> >
> >
> > _______________________________________________
> > discuss mailing list
> > discuss@openvswitch.org
> > http://openvswitch.org/mailman/listinfo/discuss
> >
>
_______________________________________________
discuss mailing list
discuss@openvswitch.org
http://openvswitch.org/mailman/listinfo/discuss

Reply via email to