High Availability

Hello @ All

My project is going more serious and i need to set this up now. so i try it again to get some ideas, how to manage de LoraServer (NS) with a Loadbalancer in front.

So i try to clearify my questions:

  • I want to have two LoraServer (NS), to have redundance.
  • Infront of this two LoraServers is a F5 Loadbalancer

Questions:

  • Database:
    ā€“ Do i need one or two LoraServer Databases (one for each Server, or do they share it)
  • Configuration in LoraAppServer
    ā€“ Do i need to config the LoadBalancer Address in the LoarAppServer GUI, or do i need to configure both?

Thx for your help, i really appreciate it.

regards, Sil

We are using the same style of architecture under Kubernetes.

1.) Shared database is correct.
2.) Point the network server address in the app server UI at the load balancer.

2 Likes

hey @bconway

thank you verry much for the information. i will try to set it up this week.

great work, thx again

hey at all, hey at @bconway

As you said, you have the same style of architcture. there are some more questions about loadbalancer. maybe you can answer them:

  • Do you also F5 Loadbalancer?

i configured 4 Loadbalancer-Services

  • LoraAppServer

ā€“ Port: 8080 (works fine)
ā€“ Monitor: GET / HTTP/1.1\r\nHost: [ADDRESS] \r\nConnection: close\r\n\r\n
ā€“ expected Receive String (HTTP Code): 200

ā€“ Port: 8003 (works fine)
ā€“ Monitor: GET / HTTP/1.1\r\nHost: [ADDRESS] \r\nConnection: close\r\n\r\n
ā€“ expected Receive String (HTTP Code): 400

ā€“ Port: 8001 (does not work, as monitor says down)
ā€“ Monitor: GET / HTTP/1.1\r\nHost: [ADDRESS] \r\nConnection: close\r\n\r\n
ā€“ expected Receive String (HTTP Code): 200

  • LoraServer

ā€“ Port: 8000 (does not work, as monitor says down)
ā€“ Monitor: GET / HTTP/1.1\r\nHost: [ADDRESS] \r\nConnection: close\r\n\r\n
ā€“ expected Receive String (HTTP Code): 200

Now the Questions:

  • How did you config the LoraServer Loadbalancer and the LoraAppServer from Port 8001?

  • in the logs of the LoraServer and LoraAppServer i see the loadbalancher asking every few seconds. and it gets the following logs:

    time="2019-05-09T14:43:08Z" level=warning msg="grpc: Server.Serve failed to create ServerTransport: connection error: desc = "transport: http2Server.HandleStreams received bogus greeting from client: [\"GET](file:///%22GET) / HTTP/1.1\\r\\nHost: [\\r\\n\"](file://r//n/%22/)""

    time="2019-05-09T14:43:08Z" level=error msg="js: error handling request" error="unexpected end of JSON input"

Do you know how to avoid this errors in the log?

thanks and regards,
silvan

We are on Kubernetes, and the load balancer is NGINX.

I think you are conflating a couple things:

  • the load balancer
  • liveness monitoring

It sounds like your load balancing is working perfectly. One thing to be aware of is that some of those ports are HTTP, and others are gRPC. You may wish to adjust some of your monitors to just use TCP liveness checks instead of HTTP. Or use HTTP but change their expected returns, Iā€™m not sure.

On the app-server side, we only check port 8080, because the process is more frequently going to die or be killed and lose all ports rather than just one going down. But yes, we do get the log spam on the loraserver side. You could scale back the checks to every 60s to limit it, if you so desired.