Hello,
I have 3 nodes (alpha, beta, gamma) that I am trying to access via a reverse-proxy with a balancer, the idea being that if one node goes down, the balancer will select another node automatically. I am using apache2 as the reverse proxy.
I got the web-interface working, but when using the console, I am getting a "Failed to connect to server" error.
The js console shows 2 errors:
The apache log shows the following when trying to connect to vnc:
I suspect i am not proxy-passing the Websocket connection the right way.
The config from this thread seems to solve a part of the problem, but i cannot get it to work with a load balancer.
ping
I should have all the necessary apache mods enabled (proxy*, ssl, lbmethod_byrequests, rewrite).
My apache config:
	
	
	
		
				
			I have 3 nodes (alpha, beta, gamma) that I am trying to access via a reverse-proxy with a balancer, the idea being that if one node goes down, the balancer will select another node automatically. I am using apache2 as the reverse proxy.
I got the web-interface working, but when using the console, I am getting a "Failed to connect to server" error.
The js console shows 2 errors:
Failed when connecting: Connection closed (code: 1006)
WebSocket connection to 'wss://revproxy.domain.com/api2/json/nodes/domain-alpha/qemu/1007/vncwebsocket?port=5900&vncticket=blabla' failed:
The apache log shows the following when trying to connect to vnc:
[Tue Apr 04 11:14:45.596190 2023] [proxy:error] [pid 13908:tid 140486551492352] [client myip:51628] AH00898: DNS lookup failure for: balancer: returned by /api2/json/nodes/alpha/qemu/1007/vncwebsocket
I suspect i am not proxy-passing the Websocket connection the right way.
The config from this thread seems to solve a part of the problem, but i cannot get it to work with a load balancer.
ping
I should have all the necessary apache mods enabled (proxy*, ssl, lbmethod_byrequests, rewrite).
My apache config:
		XML:
	
	<VirtualHost *:80>
    ServerName revproxy.domain.com
    
    Redirect permanent "/" "https://revproxy.domain.com/"
</VirtualHost>
<VirtualHost *:443>
    ServerName revproxy.domain.com
    
    Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
    <Proxy "balancer://revproxy">
        BalancerMember "https://alpha.domain.com:8006" route=1
        BalancerMember  "https://beta.domain.com:8006" route=2
        BalancerMember "https://gamma.domain.com:8006" route=3
        ProxySet lbmethod=byrequests stickysession=ROUTEID
    </Proxy>
    <Proxy "balancer://revproxy-ws">
                BalancerMember "wss://alpha.domain.com:8006" route=1
                BalancerMember  "wss://beta.domain.com:8006" route=2
                BalancerMember "wss://gamma.domain.com:8006" route=3
        ProxySet lbmethod=byrequests stickysession=ROUTEID
    </Proxy>
    SSLProxyEngine on
    ProxyPass            "/"    "balancer://revproxy/"
    ProxyPassReverse    "/"    "balancer://revproxy/"
    <LocationMatch ^/(api2/json/nodes/[^\/]+/[^\/]+/[^\/]+/vncwebsocket.*)$>
        ProxyPass wss://balancer://revproxy-ws/$1 retry=0
    </LocationMatch>
    <Location /websockify>
        ProxyPass balancer://revproxy-ws
        ProxyPassReverse balancer://revproxy-ws
    </Location>
    SSLEngine on
    SSLCertificateFile "/root/domain.crt"
    SSLCertificateKeyFile "/root/domain.key"
</VirtualHost> 
	 
	