@david_allen I have a single node neo4j:4.0.1-enterprise in a Kubernetes cluster. It is behind a load balancer and we are using Ingress to expose the browser and the bolt connection via the following configuration:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: alma-ingress
spec:
rules:
- host: neo4j.foo.example.com
http:
paths:
- path: /
backend:
serviceName: neo4j
servicePort: 7474
- host: bolt.foo.example.com
http:
paths:
- path: /
backend:
serviceName: neo4j
servicePort: 7687
This type of configuration had worked fine for us on neo4j:3.5-enterprise
, so we could connect to the browser just fine. We are using Amazon certs so SSL/TLS is legit and not a problem.
When we upgraded to 4.0 this broke. Our load balancer exposes only two ports: 80, 443. Our Ingress redirects all 80 to 443 and our cert is valid, and the load balancer terminates the TLS for us.
We have encryption turned off on the Neo4j server and we have HTTPS also turned off.
When I connect to the browser, I'll use the address like https://neo4j.foo.example.com
and the browser loads. For the bolt address, then I will use bolt.foo.example.com:443
with user/pass.
What happens next is we do connect and get the 101 UPGRADE, and there are some websocket frames exchanged. The client issues the command dbms.routing.getRoutingTable
it seems:
But the server responds back with address 0.0.0.0:7687
and this is not routable, so the browser tries to connect to that and fails, and this repeats ad infinitum.
I have tried to disable this with the settings:
dbms.mode=single
causal_clustering.cluster_allow_reads_on_followers=false
as per Configuration settings - Operations Manual
I don't want the server to run causal clustering, but we want some of the other enterprise features. We want to run in single mode, and I'm unsure how to get the WebSocket connection back working again.
Can you please advise?
Thanks in advance,
Davis