GraphEngine icon indicating copy to clipboard operation
GraphEngine copied to clipboard

Question: Is there any examples about how to run in distributed mode?

Open bingzhangdai opened this issue 8 years ago • 7 comments

I cannot find any demos about how to configure and run servers and proxies. I am afraid that just by following the guide to generate the trinity.xml configuration file is far from enough. Distributed Hashtable example has only one server and no proxy. Is there any instructions about this, especially running distributed mode on different machines?

bingzhangdai avatar Aug 07 '17 12:08 bingzhangdai

Please take a look here: https://www.graphengine.io/docs/manual/Config/config-v2.html, the GEConfig tool is now deprecated. Currently, we support a fixed distributed cluster. Once you populate your config file with the server endpoints and start all the instances they will connect to each other.

A duplicate of #62, and we're working on a new deployment model taking availability and cloud infrastructure into consideration.

yatli avatar Aug 07 '17 14:08 yatli

nuget package GraphEngine.Core 1.0.8482 and below only support configuration specification 1.0.
However, the most updated version of NuGet package is 1.0.8482. Although VSExtension version is also 1.0.8482, does this mean VSExtension can use the version 2 xml configuration file?

If not, should I build the SDK from source file myself?

bingzhangdai avatar Aug 08 '17 03:08 bingzhangdai

@bingzhangdai yep it's better to build a package yourself. Simply run tools\build.bat and you're good to go :)

yatli avatar Aug 08 '17 05:08 yatli

In the configuration file, I use IPv4 address instead of loopback address. However, the starting process of the server has been blocked at the stage:

[ INFO ] My IPEndPoint: 10.172.209.92:5304
I have run it as administrator.

bingzhangdai avatar Aug 09 '17 10:08 bingzhangdai

@bingzhangdai I see that you're trying to setup a distributed cluster. Looks like this instance is started, but it's waiting for the other peers.

Did you start up the others?

yatli avatar Aug 09 '17 13:08 yatli

@yatli great! I should have noticed that. After starting the other servers, it seems to work normally. Thanks very much!

One more question about the AvailabilityGroup attributes.

The servers within the same availability group correspond to the same server Id in MemoryCloud.SendMessage(...).
Does that mean if I send the message to the server, all the servers within the same availability group will get the same message, and will call the same handler? So they can be seen as duplicate of the others? (I think if they are the duplication of each other, their configuration should be the same.)

bingzhangdai avatar Aug 10 '17 02:08 bingzhangdai

@bingzhangdai currently the AG implementation is still under construction... It is better to keep a single server within an AG. Our current implementation does something like this:

Allocate a RemoteStorage (a communication object for sending messages to another partition) for each AG
For each server in an AG:
    Create 2 TCP connections to it
    Put the connections into the corresponding RemoteStorage
EndFor

During each message passing, the RemoteStorage takes the first available connection and send the message. ...which means that they serve as load-balancing replicas. Good for read-only queries, bad for any writing to the storage.

It is a work in progress though (so we'll get something better in our current sprint). You can find more information wrt this at https://github.com/Microsoft/GraphEngine/issues/108

yatli avatar Aug 10 '17 08:08 yatli