feat(rlog): use rlog as the default db backend

This commit is contained in:
Thales Macedo Garitezi 2022-03-04 09:26:45 -03:00
parent 14f7216033
commit a85d636a68
No known key found for this signature in database
GPG Key ID: DD279F8152A9B6DD
3 changed files with 50 additions and 12 deletions

View File

@ -0,0 +1,29 @@
x-default-emqx: &default-emqx
env_file:
- conf.cluster.env
healthcheck:
test: ["CMD", "/opt/emqx/bin/emqx_ctl", "status"]
interval: 5s
timeout: 25s
retries: 5
services:
emqx1:
<<: *default-emqx
container_name: node1.emqx.io
restart: on-failure
environment:
- "EMQX_HOST=node1.emqx.io"
- "EMQX_DB__BACKEND=mnesia"
- "EMQX_DB__ROLE=core"
emqx2:
<<: *default-emqx
container_name: node2.emqx.io
depends_on:
- emqx1
restart: on-failure
environment:
- "EMQX_HOST=node2.emqx.io"
- "EMQX_DB__BACKEND=mnesia"
- "EMQX_DB__ROLE=core"

View File

@ -5,12 +5,18 @@ set -euxo pipefail
export _EMQX_DOCKER_IMAGE_TAG="$1" export _EMQX_DOCKER_IMAGE_TAG="$1"
_EMQX_TEST_DB_BACKEND="${2:-${_EMQX_TEST_DB_BACKEND:-mnesia}}" _EMQX_TEST_DB_BACKEND="${2:-${_EMQX_TEST_DB_BACKEND:-mnesia}}"
if [ "$_EMQX_TEST_DB_BACKEND" = "rlog" ] case "$_EMQX_TEST_DB_BACKEND" in
then rlog)
CLUSTER_OVERRIDES="-f .ci/docker-compose-file/docker-compose-emqx-cluster-rlog.override.yaml" CLUSTER_OVERRIDES=".ci/docker-compose-file/docker-compose-emqx-cluster-rlog.override.yaml"
else ;;
CLUSTER_OVERRIDES="" mnesia)
fi CLUSTER_OVERRIDES=".ci/docker-compose-file/docker-compose-emqx-cluster-mnesia.override.yaml"
;;
*)
echo "ERROR: Unknown DB backend: ${_EMQX_TEST_DB_BACKEND}"
exit 1
;;
esac
{ {
echo "HOCON_ENV_OVERRIDE_PREFIX=EMQX_" echo "HOCON_ENV_OVERRIDE_PREFIX=EMQX_"
@ -39,10 +45,9 @@ is_cluster_up() {
is_node_listening node2.emqx.io is_node_listening node2.emqx.io
} }
# shellcheck disable=SC2086
docker-compose \ docker-compose \
-f .ci/docker-compose-file/docker-compose-emqx-cluster.yaml \ -f .ci/docker-compose-file/docker-compose-emqx-cluster.yaml \
$CLUSTER_OVERRIDES \ -f "$CLUSTER_OVERRIDES" \
-f .ci/docker-compose-file/docker-compose-python.yaml \ -f .ci/docker-compose-file/docker-compose-python.yaml \
up -d up -d

View File

@ -362,11 +362,12 @@ fields("db") ->
[ {"backend", [ {"backend",
sc(hoconsc:enum([mnesia, rlog]), sc(hoconsc:enum([mnesia, rlog]),
#{ mapping => "mria.db_backend" #{ mapping => "mria.db_backend"
, default => mnesia , default => rlog
, desc => """ , desc => """
Select the backend for the embedded database.<br/> Select the backend for the embedded database.<br/>
<code>mnesia</code> is the default backend, that offers decent performance in small clusters.<br/> <code>rlog</code> is the default backend, a new experimental backend
<code>rlog</code> is a new experimental backend that is suitable for very large clusters. that is suitable for very large clusters.<br/>
<code>mnesia</code> is a backend that offers decent performance in small clusters.
""" """
})} })}
, {"role", , {"role",
@ -391,7 +392,10 @@ to <code>rlog</code>.
, desc => """ , desc => """
List of core nodes that the replicant will connect to.<br/> List of core nodes that the replicant will connect to.<br/>
Note: this parameter only takes effect when the <code>backend</code> is set Note: this parameter only takes effect when the <code>backend</code> is set
to <code>rlog</code> and the <code>role</code> is set to <code>replicant</code>. to <code>rlog</code> and the <code>role</code> is set to <code>replicant</code>.<br/>
This values needs to be defined for manual or static cluster discovery mechanisms.<br/>
If an automatic cluster discovery mechanism is being used (such as <code>etcd</code>),
there is no need to set this value.
""" """
})} })}
, {"rpc_module", , {"rpc_module",