Starting with the first full release in July, Heimdall includes a module system for loading features at runtime. As of this release, the modules include:
- Cache modules: Hazelcast, Redis, Apache Geode/Gemfire, Apache Ignite/Gridgain, and Coherence
- Feature modules: Async execute, Forwarding+read/write split, Load Balancing/HA, SQL Password Extraction and Proxy-side triggers
Note: More modules are likely to be broken out, so consider the modules included in each archive to be the definitive list.
In order to install a module that is not currently installed, locate the module desired in the install zip file (under /heimdall/static/modules) and through the admin->modules tab, load the module. That is it. In the case of a cache module, the ability to select the cache type will be made available in the VDB tab.
In the case of the default password extraction module, it will leverage a JDBC connection through the VDB itself, allowing all caching, logging, to apply to the password query. To configure the password query, set in the vdb properties a property named "passProvPasswordQuery", with a value such as "SELECT password FROM users WHERE username='?'". The ? will be replaced with the username provided, and the database should return a single value of the password that should be expected.
Modules are updated automatically along with the other Heimdall components. A module can be updated only if there is a new version with the same major version. For example, if the module is 1.0-22.214.171.124, the major version is "1.0" and the minor version is 126.96.36.199. In the case of a grid cache module, the major version will align with the library version the module is compiled against, i.e. for Hazelcast, we are currently shipping compiled against 3.6.8, but we can provide modules compiled against other versions of Hazelcast as well.
In particular for the Password extraction module, Heimdall can make available the source code so that custom modules can be compiled and used for your environment. In the event of a bug-fix, we may provide a module instead of a complete release package to minimize the impact on deployment. Modules can be updated at run-time, so we can often resolve issues without requiring a reboot of the system using the modules system.
Please see the rules specific for each action the module provides for more information, or the page dedicated to the module as appropriate
- heimdallmysql: enables the MySQL proxy code
- heimdallpostgres: enables the Postgres/Greenplum/Redshift proxy
- heimdallsqlserver: enabled the SQL Server proxy
- heimdallhazelcast: Hazelcast support
- heimdallredis: Activates Redis cache support
- heimdallgeode: Apache Geode/Gemfire support
- heimdallignite: Apache Ignite/Gridgain support
- heimdallpw: provides a means to extract proxy passwords from the default data source. Example configuration: VDB Property: "passProvPasswordQuery" value: "SELECT password FROM users WHERE username='?'"
- heimdallasync: Async Execution support (see documentation page for more detail)
- heimdallauth: Stub module to provide GUI level authentication support, no directly accessible feature, but can be used as the basis for custom authentication modules
- heimdallextractplan: allows query execution plans to be retrieved after executing queries
- heimdallforward: forwards queries from one data source to another based on rules
- heimdallloadbalancer: activates the LB and HA functionality of Heimdall (see LB documentation page for more detail)
- heimdalltrigger: allows triggering of actions based on matching rules