Configuring Network Topology (Shelley Testnet)

I am currently configuring my relay and core node typologies and have run into an error. As instructed by the tutorials I have used the topology file located here
However when i then try to run the node
cardano-node: FatalError {fatalErrorMessage = “Cardano.Node.Run.readTopologyFile: Error in $: empty”}
Google suggests a possible int/string mismatch, however I cannot find such a case in the topology file.

you can find latest configurations files for operational Testnet and mainnet here:
https://hydra.iohk.io/job/Cardano/cardano-node/cardano-deployment/latest-finished/download/1/index.html

Hi Derren,

Check the file name of your topology file and make sure it matches the file path and name referring to the topology file config parameter you are using in your node start command. There have been reports of inconsistencies in the documentation regarding topology and configuration file names.

Your friend, FROG

I have confirmed that I am running in the working relay directory and file names are correct. Is it right to assume I need to add my core node address details onto the test net topology file that lauris has outlined above in this format? :

{
“Producers”: [
{
“addr”: “relays-new.cardano-testnet.iohkdev.io”,
“port”: 3001,
“valency”: 2
},
{
“addr”: “xxx.xxx.xxx.xxx”,
“port”: xxxx,
“valency”: 1
}
]
}

This step in the tutorials has me quite confused as there are many different formats i have found floating around and am not sure which way to approach it.

Another question I have relating to topology; Is it possible to have the relays and the core node running from the same dedicated hardware just in different visualizations or is this going to cause me more issues down the line since they all have the same ip address.

Thank you for your help :slight_smile:

the format looks good to me (except incorrect quotes by RFC 8259 JSON specifications, but that’s due to automated forum post reformatting… so double check if you copy any json configuration from forum posts :slight_smile: )

The best practice is to separate the BP node and relay and to run them on different servers, if you do the virtualization, then they each run as isolated, independent system, so i think it’s fine.

I seem to still be having some issues trying to get the nodes to connect to one another. I have a hunch it might just be down to inexperience in my end :sweat_smile:

My Block node’s topology is listening on 127.0.0.1 and port 3001 for the relay node and is started with the public Ip as the host address on port 3002. I have also tried using the public IP but both are the same for Both nodes, so that might also be an issue.
And my relay’s topology is listening for the same, on port 3002 and is started the same but on port 3001.

Im not 100% sure what these ports are used for but i assume they need to be different if the ip’s are the same.

Any clarification would be appreciated

start your nodes with this host address setting:
–host-addr 0.0.0.0

127.0.0.1 is the loopback address (also known as localhost), so only local machine processes will be able to connect to that port.

In the context of servers, 0.0.0.0 means all IPv4 addresses on the local machine . If a host has two IP addresses, 192.168.1.1 and 10.1.2.1, and a server running on the host listens on 0.0.0.0, it will be reachable at both of those IPs.

source: https://www.howtogeek.com/225487/what-is-the-difference-between-127.0.0.1-and-0.0.0.0/

also - don’t forget to check if ports are open in firewall setings.

Let me know if this solved your issue

As for the typologies, do I set the addr as the public IP of the host machine for both of the vms?

eg:
“addr”: “45.132.224.79”,
“port”: 3001,
“valency”: 1

The Simple view provides some form of connection error listed below:

[core:cardano.node.IpSubscription:Error:57] [2020-08-27 07:27:34.59 UTC] [String “Failed to start all required subscriptions”,String “[45.132.224.79:3001]”,String “WithIPList SubscriptionTrace”,String “LocalAddresses {laIpv4 = Just 0.0.0.0:0, laIpv6 = Nothing, laUnix = Nothing}”]

put internal IP addresses (if both nodes are running on the same AWS/Google Cloud account)