EdgeMesh supports high availability architecture
Background:

The current architecture of edgemesh is divided into two parts, edgemesh-agent and edgemesh-server. For edgemesh-server, its accusation are:
- Assist two edgemesh-agents to exchange peer information and then try to punch holes.
- Act as a relay server if the hole punching fails.
As mentioned above, edgemesh-server does not currently support multi-point deployments, so it can be problematic in some cases.
Case 1:

When the number of connections is too large or the communication traffic is too large, it will cause the single point of failure problem of edgemesh-server.
Case 2:

The location of edgemesh-server will affect the delay with traffic forwarding. If the location of the relay server is too far away, it will greatly increase the delay.
Case 3:

In the case of some private networks, edgemesh-agent cannot connect to edgemesh-server in external network, thus causing edgemesh-agent not to work properly.
What contents are to be added/modified:
- The implementation code of autorelay and autonat in edgemesh
Consider how to incorporate edgemesh-server capabilities into edgemesh-agent. That is, the edgemesh-agent can become a coordinator and help other peers with the responsibilities of punching and relaying. This can refer to: https://github.com/libp2p/specs/tree/master/relay.
- The implementation code of mdns discovery in edgemesh
Ensure that non-coordinator peers can work even when the external network cannot be connected. This can refer to: https://github.com/libp2p/specs/blob/master/discovery/mdns.md
- Documentation of all new code and user manual
May I ask other question? When I deploy the "Cloud access edge " test case, they are scheduled correctly. But when I try using the "Edge access cloud" test case, I get the error "telnet: bad address 'tcp-echo-cloud-svc.cloudzone'". What is the problem?
@Aix6 Please create a new issue