Configuring Optimizer Hub Host
As an Optimizer Hub administrator, you must provide users the DNS name of the Optimizer Hub service the JVMs must connect to. The JVMs need this DNS for the value to be specified in the -XX:OptHubhost
option.
We highly recommend to use load-balanced setups where the load balancers translate the DNS name to an IP address of an appropriate Optimizer Hub service for the requesting JVM.
Using an External Load Balancer
It is strongly recommended to use an external load balancer. If you correctly defined the load-balancer in values-override.yaml
as described in Installing Optimizer Hub, you can discover the external IP of the service using the following command:
$ kubectl describe service gateway -n my-opthub | grep 'LoadBalancer Ingress:'
LoadBalancer Ingress: internal-add1ff3e1591e4f93a49af3523b68e3b-1321158844.us-west-2.elb.amazonaws.com
JVM customers then connect using the following command:
java -XX:OptHubHost=internal-add1ff3e1591e4f93a49af3523b68e3b-1321158844.us-west-2.elb.amazonaws.com \
-XX:+EnableRNO \
-jar my-app.jar
Connecting Without an External Load Balancer
If you did not set up an external load balancer, you can find the endpoint using the following steps:
-
Run the following command:
kubectl -n my-opthub get services -
Look for the
gateway
service and note the ports corresponding to port 50051 inside the container. This is the port to use for connecting VMs to this Optimizer Hub cluster.service/gateway NodePort 10.233.15.55 <none> 8080:31951/TCP,50051:30926/TCP 52dIn this example the port is
30926
.NoteOnly the internal ports 8080
and50051
in Optimizer Hub are fixed. The port in each setup is a random value. You need to use this lookup to find the port of your Optimizer Hub instance. -
Run the
kubectl get nodes
command and note the IP address or name of any node. -
Concatenate node IP with service ports to get something like
10.22.20.131:30926
. Do not prefix it withhttp://
. -
JVM customers set
-XX:OptHubHost=host:port
flag to the port mapped to 50051.java -XX:OptHubHost=10.22.20.131:30926 \ -XX:+EnableRNO \ -jar my-app.jar
Configuring gRPC Proxy
Optimizer Hub comes with Envoy as the default gRPC proxy for optimal session balancing. But it’s recommended to use your own preferred load balancers, consistent with how you dispatch HTTP traffic to your other applications. In such a case, disable Envoy in Optimizer Hub and use your own instance.