Configure satellite communication
This topic covers how to configure communication between Deploy satellites and the Deploy master to ensure secure and effective operations.
Enable communication with satellites
To begin with, enable communication between Deploy and the satellites. In Deploy, communication with satellites is disabled by default. To enable it:
- Locate the
satellite
section in thedeploy-satellite.yaml
file. - Set
enabled
totrue
.
deploy.satellite:
enabled: true
- Restart Deploy. The server will be enabled to connect to satellites.
Configure hostname and port
This section describes the process to configure a hostname and port for satellites to connect with Deploy. For instructions on specifically configuring communication to Deploy running on a Kubernetes cluster, skip to the Configure communication between satellites and Deploy on a Kubernetes cluster section. Other sections in this topic are applicable to all installations of Deploy.
The default settings in the deploy-server.yaml
file are:
hostname: ""
bind-hostname: "0.0.0.0"
port: 8180
Set hostname
to an IP address or a host name where Deploy can connect. Deploy sends this value to the satellites. The hostname must be visible from the network(s) where the satellites are located.
Satellites use this value to re-establish connection with Deploy if the initial connection breaks. If you do not provide a value, Deploy assign a value from a network interface that is available, or to a loopback address if no interfaces are available.
Set bind-hostname
to an IP address or a host name to listen on. The default setting listens on all network interfaces.
Set port
to the port that Deploy connects to. The port must also be accessible from the satellites. The default port is set to 8180
.
You cannot connect multiple Deploy server instances to the same satellite. In Deploy, you can assign the same satellite to multiple hosts from the same Deploy instance.
Configure communication between satellites and Deploy on a Kubernetes cluster
Deploy uses Akka Remoting to communicate with Satellites outside the K8S cluster. Akka needs a unique, globally accessible canonical address to communicate with the master and worker pods. Until now, Deploy required the canonical and bind configurations to be the same.
Starting with version 23.1.6, Deploy allows you to create separate canonical and bind configurations. Following sections describe the newly introduced changes and the canonical and bind configurations based on the Kubernetes service and setup you use. All other configurations remain the same.
Configure canonical and bind properties
We have added new configuration properties (deploy.server.bind-port
, deploy.cluster.node.hostname
, and deploy.cluster.node.bind-hostname
) that allow you to create separate canonical and bind configurations.
The following table shows how these configurations work:
Property | Explanation |
---|---|
Cluster canonical hostname | This is set by the following configuration properties, in the order of listing. If first property is not available, the next property is used.
ServerConfiguration.getInstance().getServerHostname() is used. |
Cluster bind hostname | This is set by the following configuration properties, in the order of listing. If first property is not available, the next property is used.
|
Cluster canonical port | This is set by the following configuration properties, in the order of listing. If first property is not available, the next property is used.
|
Cluster bind port | This is set using the |
Set up connection with different Kubernetes services
We have added support for remote satellite connection to Deploy running on Kubernetes via the following methods:
- NodePort dedicated service to the Akka port.
- LoadBalanced service to the Akka port.
- Headless service with an external DNS to the Akka port.
See Kubernetes documentation for information on these service types.
Service Configuration Parameters in the Deploy Custom Resources file
Based on your Kubernetes setup, the appropriate Service Configuration parameters in the Deploy Custom Resources file are set.
Here are some common Kubernetes setups and sample configurations:
Note: When using satellites to communicate with Deploy on Kubernetes, set the xl.satellite.streaming.connection-resolver
property in conf/satellite.conf
to blocking
.
Kubernetes setup | Description | Sample Configuration |
---|---|---|
NodePort setup with defaults |
|
|
NodePort setup with custom hostnames, custom hostname suffix, and different ports |
| This sample configuration lists the properties for masters. You can configure the workers using the same properties with values appropriate for the workers.
|
Fixed ClusterIP setup that uses a single port for all masters and workers | This setup uses a fixed cluster IP for each master and worker but uses the same port for all masters and workers. | This sample configuration lists the properties for masters. You can configure the workers using the same properties with values appropriate for the workers.
|
Fixed ClusterIP setup that uses External DNS with a headless service. | Need description |
|
LoadBalanced setup with an External IP-based service | In this example, we use a LoadBalanced service setup based on the Openshift AWS cluster. The hostnames are set from the provided AWS External IPs (AWS DNS names that are exposing LoadBalanced Service). | This sample configuration lists the properties for masters. You can configure the workers using the same properties with values appropriate for the workers.
|
Configure the ping timeout
To configure the ping timeout while reaching a satellite, change the satellite.timeout.ping
property in the deploy-satellite.yaml
file:
satellite {
timeout {
ping = "<timeout>"
}
}
hostname: ""
bind-hostname: "0.0.0.0"
port: 8180
You can specify the ping timeout in milliseconds, seconds, or minutes. For example: 100 ms
or 10 seconds
.
Configure the upload idle timeout
The upload idle timeout occurs when a satellite has accepted an incoming streaming connection but does not need to accept the uploaded file. This prevents unused TCP connections from remaining open.
To configure the upload idle timeout, change the satellite.timeout.upload.idle
property in the deploy-satellite.yaml
file:
deploy.satellite:
timeout:
upload:
idle: "<timeout>"
You can specify the ping timeout in milliseconds, seconds, or minutes. For example, 100 ms
or 10 seconds
.
Configure the file streaming timeout
This timeout occurs when Deploy attempts to connect to satellites for file transfer. To configure this value, change the satellite.timeout.streaming
property in the deploy-satellite.yaml
file:
deploy.satellite:
timeout:
streaming: "<timeout>"
The default timeout is 10 seconds.
Configure the maximum upload threads per task
To configure the maximum threads per upload task, change the satellite.streaming.max-uploads
property in the deploy-satellite.yaml
file:
deploy.satellite:
streaming:
max-uploads: 5
Configure secure communication
Deploy communicates with satellite servers over a secure communication channel using TLS/SSL technology to encrypt data. For more information about configuring SSL, see Configure secure communication between Deploy and satellites.