AbsaOSS / spline-getting-started

Apache License 2.0
24 stars 17 forks source link

Spline UI with Docker image installed on VM gives "Server Not available Error" #23

Closed rajendra-t closed 1 year ago

rajendra-t commented 2 years ago

Hi Team, We have installed Spline UI / Server/ Kafka and Arango DB using the docker images provided into a VM. All the docker containers are running without error. Also the REST Gateway status is showing success in the http://hostIP:8080. However when we open the Spline UI using http://hostIP:9090 it is showing an error "Server is unavailable."

Below are the details of version of the server installed Version: 0.7.4 Build Revision: 90363b3 Build Date: 2022-03-08 Project Pages: https://absaoss.github.io/spline Copyright: © 2019 ABSA Group Limited License: Apache License, Version 2.0.

Can you please suggest what is the issue here?

cerveada commented 2 years ago

This is probably wrongly set SPLINE_CONSUMER_URL this url must be accessible from the browser where you are opening the ui. It is used by javascript running in the browser.

rajendra-t commented 2 years ago

I was looking at the following URL and I see below error.

curl -L http://hostIP:8529

class="offline-header">

You have been disconnected from the server

The connection to the server has bee n lost. The server may be under heavy load.

Trying to reconnect in 10 seconds.

<but ton class="button-success">Reconnect now

wajda commented 2 years ago

I guess you are dealing with several independent problems.

  1. "Server is unavailable" message on the Spline UI. As Adam explained, please check the value of the SPLINE_CONSUMER_URL config variable that you provide to the Spline Web-UI container. That URL should be the same as the Consumer URL on the Spline Gateway index page: image But make sure that that URL is accessible from your Spline user browser, as the Spline UI page connects to it directly from the browser.

  2. curl -L http://hostip:8529/ - Here you connect to the ArangoDB UI. It doesn't have to be accessible from the outside of the docker or k8s network. But if you receive an HTML page that complains about the database server connection issue then there is indeed an issue. Make sure your ArangoDB cluster is working correctly. Please consult ArangoDB documentation.

rajendra-t commented 2 years ago

Thanks for the feedback, step #1 error is due to Step 2 not working. I have used the following command to start the docker container for arangodb and container is running however it is not available due to heavy load as you can see in the error message.

sudo sysctl -w "vm.max_map_count=512000" sudo bash -c "echo madvise > /sys/kernel/mm/transparent_hugepage/enabled" sudo bash -c "echo madvise > /sys/kernel/mm/transparent_hugepage/defrag" sudo docker run -p 8529:8529 -e ARANGO_NO_AUTH=1 arangodb/arangodb:3.8.4

image

Error message when we do - curl -L http://localhost:8529

You have been disconnected from the server

The connection to the server has bee n lost. The server may be under heavy load.

Trying to reconnect in 10 seconds.

Reconnect now<

I am using UbuntuServer 18_04-lts-gen2 VM to install above, I could not find much information from arangodb documentation - can you please help if there is any changes to configuration is required?

wajda commented 2 years ago

Is there a heavy traffic? What's VM resources? Make sure the VM is given enough RAM. 1Gb+ is recommended. If you are using it for anything more serious than test/dev purpose then you need a cluster deployment.

rajendra-t commented 2 years ago

I am using single node deployment on Azure VM (8cpu and 32gb memory ) Below Is the docker logs for the container, I don't see any issues with memory availability.

2022-07-30T14:25:50Z [1] INFO [25362] {memory} Available physical memory: 33672134656 bytes, available cores: 8 2022-07-30T14:25:50Z [1] INFO [144fe] {general} using storage engine 'rocksdb' 2022-07-30T14:25:50Z [1] INFO [3bb7d] {cluster} Starting up with role SINGLE 2022-07-30T14:25:50Z [1] INFO [f6e0e] {aql} memory limit per AQL query automatically set to 20203280793 bytes. to modify this value, please adjust the startup option --query.memory-limit 2022-07-30T14:25:50Z [1] INFO [a1c60] {syscall} file-descriptors (nofiles) hard limit is 1048576, soft limit is 1048576 2022-07-30T14:25:50Z [1] INFO [fe333] {engines} RocksDB recovery starting, scanning WAL starting from sequence number 44 2022-07-30T14:25:50Z [1] INFO [a4ec8] {engines} RocksDB recovery finished, WAL entries scanned: 65, max tick found in WAL: 101, last HLC value: 17397880178197 13536 2022-07-30T14:25:50Z [1] INFO [c1b63] {arangosearch} ArangoSearch maintenance: [1..1] commit thread(s), [1..1] consolidation thread(s) 2022-07-30T14:25:50Z [1] INFO [6ea38] {general} using endpoint 'http+tcp://0.0.0.0:8529' for non-encrypted requests 2022-07-30T14:25:51Z [1] INFO [cf3f4] {general} ArangoDB (version 3.8.4 [linux]) is ready for business. Have fun!

I noticed one more error when I do Curl -L http://localhost:8529

wajda commented 2 years ago

I noticed one more error when I do Curl -L http://localhost:8529/

You need to enable JavaScript to run this app.

This is not an error, it just tells you that ArangoDB UI requires a JavaScript enabled browser to work properly, which curl obviously is not.

rajendra-t commented 2 years ago

Thanks @wajda for the feedback.

So with above I understand that since javascript error is coming due to curl - is that same reason for also message that shows "You have been disconnected from the server The connection to the server has bee

n lost. The server may be under heavy load.

Trying to reconnect in 10 seconds."

Based on the arangodb container logs that I shared earlier it is not giving any error and docker status is also shows running.

Is there any issues due to the way web UI connects to the consumer API? ( my error is similar to this post - https://github.com/AbsaOSS/spline/issues/980)

I see, F12 gives below information. my guess is Linux is not able to resolve localhost:8080 somehow image

rajendra-t commented 2 years ago

Forgot to share the screenshot earlier, I am getting below error in web UI image

However REST gateway is running fine image

wajda commented 2 years ago

It's impossible to tell what's the issue by looking at those screenshots. From the fact the issue is intermittent I can assume that is either performance related problem or your cluster/LB (if you use one) is not working correctly.

rajendra-t commented 2 years ago

Thanks wajada, looks like this issue is with Load balancer and hence unable to make this work.

Instead I tried installing this on AKS, and there also I am stuck with 404 error while accessing the URL using Public / External IP

Do you have the steps to install ingress-nginx controller?

I am trying below

helm install \
  ingress-nginx ingress-nginx/ingress-nginx \
  --create-namespace --namespace ingress-nginx \
  --set controller.ingressClass="nginx" \
  --set controller.service.annotations."service\.beta\.kubernetes\.io/azure-load-balancer-health-probe-request-path"=/healthz \
  --set controller.service.externalTrafficPolicy=Local

The port forwarding to my local is working fine

wajda commented 2 years ago

Check the URL that you get 404 from. It has to be a valid IP to your Ingress, ClusterIP, NodePort or LoadBalancer

wajda commented 2 years ago

Check our helm charts here - https://github.com/AbsaOSS/spline-getting-started/tree/main/k8s/charts Please also check the following shell script to install Spline on K8S https://github.com/AbsaOSS/spline-getting-started/blob/main/k8s/charts/install-spline-on-k8s.sh

Note the commented lines 6 and 7:

# API=$(kubectl get svc -n ingress-nginx ingress-nginx-controller -o jsonpath="{.*.loadBalancer.ingress[*].hostname}")
# UI=$(kubectl get svc -n ingress-nginx ingress-nginx-extra-controller -o jsonpath="{.*.loadBalancer.ingress[*].hostname}")

You need to uncomment those when using ingress.