Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update seed.rs add seed-node #3282

Merged
merged 2 commits into from Apr 13, 2020
Merged

Conversation

MCM-Mike
Copy link
Contributor

@MCM-Mike MCM-Mike commented Mar 29, 2020

added mainnet-seed.grinnode.live

By using DNS Round-Robin (3 nodes) on mainnet-seed.grinnode.live we can provide a high-available seed-node.


name: Pull Request
about: Pull Request checklist
title: ''
labels: ''
assignees: ''


If your PR is a work in progress, please feel free to create it and include a [WIP] tag in the PR name. We encourage everyone to PR early and often so that other developers know what you're working on.

Before submitting your PR for final review, please ensure that it:

  • Includes a proper description of what problems the PR addresses, as well as a detailed explanation as to what it changes
  • Explains whether/how the change is consensus breaking or breaks existing client functionality
  • Contains unit tests exercising new/changed functionality
  • Fully considers the potential impact of the change on other parts of the system
  • Describes how you've tested the change (e.g. against Floonet, etc)
  • Updates any documentation that's affected by the PR

MCM-Mike added 2 commits March 29, 2020 19:56
added mainnet-seed.grinnode.live
Copy link
Member

@antiochp antiochp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can someone remind me how our seeds works? These are just treated as regular nodes right?

Is my understanding correct here?

  • On startup if we have too few peers then we connect to the seeds.
  • These in turn send us lists of their peers (we stay connected to initial seeds as regular peers).
  • And all of this is done via ip addresses, resolved one-time during startup when parsing the seeds in the config file.

So there is no situation where we associate a peer with a dns name and end up hitting multiple peers (behind the round robin DNS) without realising we are doing this.
I don't believe this is an issue here - but just want to be sure.

@antiochp
Copy link
Member

antiochp commented Apr 10, 2020

Follow up question - if we use round-robin here with a single DNS name resolving to multiple ip addresses. Is this actually giving us any benefits in terms of high-availability? We're going to just resolve it once, get one of many ip addresses and try that one (regardless of it being available or not).

Does the DNS here handle liveness of the underlying nodes behind the DNS?
And do we have any kind of "retry" functionality on our end (in the node) when starting up and trying the seeds?

@MCM-Mike
Copy link
Contributor Author

MCM-Mike commented Apr 10, 2020

Follow up question - if we use round-robin here with a single DNS name resolving to multiple ip addresses. Is this actually giving us any benefits in terms of high-availability? We're going to just resolve it once, get one of many ip addresses and try that one (regardless of it being available or not).

In parts it was my problem, when arguing DNS Round-Robin is a High-Available solution. Which technically it is not.
If one of the 3/3 IP addresses is down, 1/3 of the requests are not going to find an Grin-Node connection. It's just an easy way for distributing loads , but no real high-availability.

Does the DNS here handle liveness of the underlying nodes behind the DNS?
And do we have any kind of "retry" functionality on our end (in the node) when starting up and trying the seeds?

No, as we do not correlate the "liveness" of an IP address and add or delete it to the A-Records.

Based on what I did read on the documentation, all Seed-Nodes are only normal Grin-Nodes.
If you want we could change the IP address behind the DNS A-Record into our real High-Available but I thought by using a Round-Robin DNS setting this would be enough.

We can always roll back to only one IP address or substitute the IP address with the HA-IP address.

Lastly as I was checking all Seed-Nodes , a couple of them where down, this was my motivation to open this pull request.

@antiochp
Copy link
Member

@MCM-Mike thanks for the answers. Just to be clear, this was not in any way a criticism of what you are doing here. I just wanted to make sure I understood how the grin node was going to handle and respond to a single "seed" that resolved to multiple underlying grin nodes.

I'm 👍 on adding an additional seed here. Particularly one that is likely going to be at least as reliable as the existing seeds, if not more so.

@quentinlesceller quentinlesceller merged commit d7e6ac6 into mimblewimble:master Apr 13, 2020
MCM-Mike pushed a commit to Grinnode-live/grinnode.live that referenced this pull request May 15, 2020
disabled #seeds = ["mainnet-seed.grinnode.live:3414"]
due to mimblewimble/grin#3282 we are now part of core DNS seed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants