Embedding PSRT server as EVA ICS v4 service
PSRT server can be embedded as EVA ICS v4 service and started by the EVA ICS service launcher. This allows to unify the deployment, configuration and management process.
Contents
Installing
If installed/updated from a .deb package, make sure psrtd is not running and disabled in systemd:
systemctl stop psrtd
systemctl disable psrtd
Configuring
Use the following configuration template:
command: /usr/sbin/psrtd --eva-svc
bus:
path: var/bus.ipc
config:
# all paths in config are relative to EVA ICS directory if do not start with . or /
server:
latency_warn: 50000
# data stream queue, per client (server buffer)
# larger data queue - more ops/sec for clients, but higher latency
data_queue: 1024
max_topic_depth: 32
# max topic length, for bulk requests - total request length + 1 byte per topic
max_topic_length: 1000000
# max pub frame size (topic + data, bytes)
max_pub_size: 1100000
#bind_stats: 0.0.0.0:8880
proto:
bind:
- 0.0.0.0:2873
- var/psrt.sock
bind_udp: 0.0.0.0:2873
# max udp frame size
udp_frame_size: 4096
#tls_cert: /etc/psrtd/certs/server.crt
# only RSA private keys are supported
#tls_key: /etc/psrtd/certs/server.key
allow_no_tls: true
auth:
allow_anonymous: true
# use htpasswd -B to manage password file
password_file: /etc/psrtd/psrt-passwd
acl: /etc/psrtd/acl.yml
# AES keys for UDP encryption
#key_file: /etc/psrtd/keys.yml
timeout:
default: 10
user: nobody
workers: 2
Create a PSRT service instance with eva-shell:
eva svc create eva.pubsub.default path/to/svc-tpl-psrtd.yml
Note that in the proposed configuration the server listens on two sockets: TCP port 2873 and UNIX socket var/psrt.sock (created as /opt/eva4/var/psrtd.sock.
Also note that certain parameters, such as timeout, FIPS mode, number of workers, are moved from the server configuration to EVA ICS service configuration and taken from there.
Running
The server is automatically launched as EVA ICS service. The process does not create a PID file and does not respond to system signals in a usual way. Use EVA ICS service management commands only.
Using with local replication services
The best practice for Replication service and Zero-failure replication service is to use UNIX socket instead of TCP to speed up data exchange and minimize system load.
Set socket path in the above service configurations as var/psrt.sock.