Customize the Installation
We are in the process of updating the information contained in this document. If you need assistance with the steps/processes described within, please contact Deephaven Support.
Configuration-as-Code
Configuration-as-Code is an important prerequisite to have reproducible and auditable configurations. It also makes configurations testable and easier to reuse.
This is especially important with distributed systems and micro services. Maintaining multiple services across a network of distributed systems, and keeping all their settings and configurations in sync is very hard to achieve when you have to manually configure everything by clicking through UI configuration screens.
It is therefore recommended to add the Deephaven configuration files to a version control system (VCS) such as Git. This allows updates to configuration files to be tested in a separate environment before deploying any configuration changes to your production Deephaven hosts.
Deephaven Configuration Files
The Deephaven configuration files are installed on the Deephaven server in:
/etc/sysconfig/illumon.d/
The following section provides a brief summary of the configuration files.
M/Monit Configurations:
/etc/sysconfig/illumon.d/monit/*.conf
Cron Configuration:
/etc/cron.d/illumon.iris.localhost
Host Configuration:
/etc/sysconfig/illumon.confs/illumon.iris.hostconfig
Deephaven Process Configurations:
/etc/sysconfig/illumon.d/resources/iris-common.prop
Authentication Configurations:
/etc/sysconfig/illumon.d/auth/keystore.authserver.pkcs12
/etc/sysconfig/illumon.d/auth/priv-authreconnect.base64.txt
/etc/sysconfig/illumon.d/auth/priv-iris.base64.txt
/etc/sysconfig/illumon.d/auth/priv-superuser.base64.txt
Schema Configurations:
/etc/sysconfig/illumon.d/schema/**/*.schema
/etc/sysconfig/illumon.d/schema/footer.schema
/etc/sysconfig/illumon.d/schema/header.schema
Installing Custom Classes
There are two methods by which customer classes can be added to your system: adding custom classes to the customer directory, or using the class push list. When Deephaven launches, these classes, such as custom widgets, will be available to end users to use in the console.
Customer Directory
To make custom classes available in Deephaven, they must be archived into a JAR file (see "Creating JAR Files" below) and then added to /etc/sysconfig/illumon.d/java_lib
.
After restarting the Client Update Service, the files from the server will automatically be downloaded to the client when the Deephaven Launcher runs and be usable in the console.
Adding JAR Directories
Instead of copying JARs into /etc/sysconfig/illumon.d/java_lib
, the Deephaven installation can also look for JAR files in existing customer directories. This is done by exporting the environment variable CUSTOMER_JAR_DIR with a comma-delimited list of directories in which JAR files may be contained. Any JAR files found in these directories will be added to the classpath. This is best done in the host configuration file. For example:
export CUSTOMER_JAR_DIR=/home/product1/java_lib/,/home/user/user1/java_lib
Class Push List
The class push list method is primarily intended for use by developers who are in the process of creating new classes for the Deephaven installation, or classes that only a small subset of users should have access to. For general, production use of custom classes, creating JAR files (see explanation below) for them and placing those JARs in the customer JAR directory is the recommended approach.
To utilize the class push list, a property must be defined for the console: RemoteQueryClient.defaultClassPushList=<listName>.txt
. Upon console-worker connection, the specified text file is searched for on the client classpath. The file should contain fully qualified names of your classes, which should also be on the client classpath. These classes will be pushed to the server and ultimately to the associated worker, which will then be able to utilize custom classes from your client.
Creating JAR Files
Compilation
First, compile your Java code:
javac -classpath "/path/to/iris/java_lib/*" -d /destination/path CustomClass.java...
-classpath "/path/to/iris/java_lib/*"
- ensures that you are compiling your code against Deephaven dependencies.-d /destination/path
- generates the appropriate package-associated directories to the destination path upon compilation.CustomClass.java...
- the source code files to compile.
Archiving
Then, group your compiled code into Java archive format, .jar
files:
jar cf CustomClasses.jar FileToInclude…
cf CustomClasses.jar
- creates a JAR file with the specified name.FileToInclude…
- can specify directories, which will in turn specify directory contents recursively.
Client Update Service Configuration for the Deephaven Launcher
The Deephaven console may be viewed over VNC without any additional client software. However, a more common implementation is performed where users access the Deephaven console through an application called the Deephaven Launcher, which must be installed on individual users' computers.
The Deephaven Launcher uses the "Client Update Service" to access code and configuration settings from your Deephaven server. However, before installing and running the Launcher, the "Client Update Service" must be configured and enabled on the server using M/Monit. Follow these steps to enable the "Client Update Service":
- On the Deephaven Server, edit the
/var/lib/iris/cus/iris/getdown.txt.pre file
:
Set the appbase value, replacing WEBHOST with the host address of your Deephaven Service. For example:
#appbase = http://WEBHOST/iris/
appbase = http://10.20.30.40/iris/
- In the M/Monit config folder, remove the .disabled extension from the
Client Update Service
config file name and runmonit reload
. This will instruct the M/Monit daemon to reread its configuration and re-initialize.
cd /etc/sysconfig/illumon.d/monit
mv 04-cus.conf.disabled 04-cus.conf
monit reload
- Check the status of the getdown service:
monit status client_update_service
- Once the "Client Update Service" is up and running, you can proceed to install and run the Launcher on client desktops. The installers for Windows, Mac and Linux desktops can be downloaded from the "Client Update Service" on your Deephaven Server at:
http://<IRIS_SERVER_ADDRESS>:80
Deephaven Process Ports
Deephaven processes listen on various TCP ports and port ranges. All ports are configurable.
TCP ports can be configured in the iris-common
file:
/etc/sysconfig/illumon.d/resources/iris-common.prop
The default Deephaven ports and port ranges follow:
TCP Ports |
Component |
Process Name |
Property |
---|---|---|---|
22013 |
Remote Query Dispatcher (RQD) |
db_query_server |
RemoteQueryDispatcherParameters.queryPort=22013 RemoteQueryDispatcher.workerPort=22012 RemoteQueryDispatcher.webPort=8084 |
30002 |
Remote Merge Dispatcher (RMD) |
db_merge_server |
RemoteQueryDispatcherParameters.queryPort=30002 RemoteQueryDispatcher.workerPort=30003 RemoteQueryDispatcher.webPort=8085 |
23000-24999 |
RQD Workers |
RemoteQueryDispatcher_worker_<number> |
RemoteQueryDispatcher.workerServerPorts=23000-23999 RemoteQueryDispatcher.workerServerWebsocketPorts=24000-24999 |
32000-32999 25000-25999 |
RMD Workers |
RemoteQueryDispatcher_worker_<number> |
RemoteQueryDispatcher.workerServerPorts=32000-32999 RemoteQueryDispatcher.workerServerWebsocketPorts=25000-25999 |
22021
|
db_dis |
routing_service.yml: dataImportServers: |
|
22020 |
Log Aggregator Service |
log_aggregator_service |
routing_service.yml: logAggregatorServers: |
22014 |
Local Data Table |
db_ltds |
routing_service.yml: tableDataServices: |
22016 |
Table Data Cache Proxy |
db_tdcp |
routing_service.yml: tableDataServices: db_tdcp: port: 22016 |
22023 |
Configuration Server (Centralized Schema Service, Data Routing Service and Configuration Service) |
configuration_server |
configuration.server.port=22023 |
9030, |
User Authentication Server |
authentication_server |
authentication.server.port.plaintext=9030 authentication.server.port.ssl=9031 |
9040 |
User Access Control Server |
db_acl_write_server |
dbaclwriter.port=9040 dbaclwriter.ssl.port=9041 |
20126
|
Persistent Query Controller |
iris_controller |
PersistentQueryController.port=20126 |
22021 (outbound) |
Log Tailer |
tailer1..tailerN |
This is determined by the |
80/443 |
Client Update Server |
client_update_service |
client-update-service.conf: server.port = 80 |
8123 |
Web API Service |
web_api_service |
Webapi.server.port=8123 |
3306 |
MySQL Database |
mariadb_server |
/etc/my.cnf: port=3306 # default |
2812 |
M/Monit Daemon |
monit |
/etc/monitrc: set httpd port 2812 |
Last Updated: 16 February 2021 18:07 -04:00 UTC Deephaven v.1.20200928 (See other versions)
Deephaven Documentation Copyright 2016-2020 Deephaven Data Labs, LLC All Rights Reserved