scmaster

scmaster

Description

A SeisComP3 system consists of a set of independent applications each performing a discrete task. The communication between the applications is realized by a TCP/IP based messaging system. This messaging system is based on the open source toolkit Spread that provides a high performance messaging service across local and wide area networks. At the top of Spread a mediator, scmaster, handles additional requirements of SeisComP3 that are not natively provided by Spread. The messaging system is used for the exchange of meta data (e.g. picks) and configurations to some extent.

sketch of a distributed system

Schematic view on a distributed SeisComP3 system.


scmaster was designed as a kind of microkernel which delegates client requests. Therefore it is the key application responsible for the orchestration of the distributed system. In order to participate in the distributed system a client needs to send a connect request to the scmaster. In turn the master returns an acknowledgment message which either informs the client of its admission or rejection. If the connect request was successful the acknowledgment message will provide the client with the available message groups it can subscribe to. Moreover, all currently connected clients will be notified about the newly joined member. In case the master is configured with a database the client will also receive a direct follow up message which holds the address of this database if the dbplugin is enabled. The address can be used to retrieve archived data later on.

After a connection has been established every message will pass through the master first where it is processed accordingly and then relayed to the target groups. Once a client is done with processing a disconnect message will be sent to the master who in turn notifies all remaining clients about the leaving. scmaster can be configured with a database (dbplugin) to ensure the integrity of the system. Before a message is distributed by scmaster the message is written to the specified database. This way each message is stored before it enters the system. In case of a crash all necessary information can be recovered from the database. Currently, driver exist for MySQL, PostgreSQL and sqlite. Note that the scmaster can run without a database but loses data integrity in doing so.

A common scmaster.cfg looks like this:

plugins = dbplugin
plugins.dbPlugin.dbDriver = mysql
plugins.dbPlugin.readConnection = "sysop:sysop@host/seiscomp3"
plugins.dbPlugin.writeConnection = "sysop:sysop@localhost/seiscomp3"

Configuration

etc/defaults/global.cfg
etc/defaults/scmaster.cfg
etc/global.cfg
etc/scmaster.cfg
~/.seiscomp3/global.cfg
~/.seiscomp3/scmaster.cfg

scmaster inherits global options.

msgGroups

Type: list:string

Configures the available message groups. If nothing is configured, the default message groups AMPLITUDE, PICK, LOCATION, MAGNITUDE, FOCMECH, EVENT, QC, PUBLICATION, GUI, INVENTORY, CONFIG, LOGGING, SERVICE_REQUEST and SERVICE_PROVIDE are provided.

schemaVersionOverride

Type: string

Force the schema version to be reported to clients. This must be equal or lower than the one the code supports otherwise scmaster will fail to start. This is an expert setting and can be required if clients with version equal or lower than 2013.245 connect to a master with a higher schema version because of a bug on client side.

admin.adminname

Type: string

Name of admin user used to authenticate with scadmin to manage client connections.

admin.password

Type: string

Password of admin user used to authenticate with scadmin to manage client connections.

Note

plugins.dbPlugin.* Database plugin for scmaster. This plugin forwards all messages received by scmaster to the configured database and garantuees that the objects in the message (send within notifiers) are stored in the database before a client receives the message. To load the plugin, add dbplugin to plugins in scmaster’s configuration.

plugins.dbPlugin.dbDriver

Type: string

Selected the database driver to use. Database drivers are available through plugins. The default plugin is dbmysql which supports the MYSQL database server. It is activated with the core.plugins parameter.

plugins.dbPlugin.readConnection

Type: string

Sets the database read connection which is reported to clients that connect to this server. If a remote setup should be implemented, ensure that the hostname is reachable from the remote computer.

plugins.dbPlugin.writeConnection

Type: string

Sets the database write connection which is private to scmaster. A separate write connection enables different permissions on the database level for scmaster and clients.

plugins.dbPlugin.strictVersionCheck

Type: boolean

If enabled, the plugin will check the database schema version and refuse to start if the version doesn’t match the latest version. If disabled and the an object needs to be stored which is incompatible with the database schema this object is lost. Leave this option enabled unless you know exactly what are you doing and what the consequences are. Default is true.