|
|
@@ -72,8 +72,7 @@ roots() ->
|
|
|
sc(hoconsc:ref("cluster"),
|
|
|
#{ desc => "EMQ X nodes can form a cluster to scale up the total capacity.<br>"
|
|
|
"Here holds the configs to instruct how individual nodes "
|
|
|
- "can discover each other, also the database replication "
|
|
|
- "role of this node etc."
|
|
|
+ "can discover each other."
|
|
|
})}
|
|
|
, {"log",
|
|
|
sc(hoconsc:ref("log"),
|
|
|
@@ -101,6 +100,10 @@ natively in the EMQ X node;<br>
|
|
|
'postgresql' etc. to look up clients or rules from external databases;<br>
|
|
|
"""
|
|
|
})}
|
|
|
+ , {"db",
|
|
|
+ sc(ref("db"),
|
|
|
+ #{ desc => "Settings of the embedded database."
|
|
|
+ })}
|
|
|
] ++
|
|
|
emqx_schema:roots(medium) ++
|
|
|
emqx_schema:roots(low) ++
|
|
|
@@ -146,14 +149,6 @@ fields("cluster") ->
|
|
|
, {"k8s",
|
|
|
sc(ref(cluster_k8s),
|
|
|
#{})}
|
|
|
- , {"db_backend",
|
|
|
- sc(hoconsc:enum([mnesia, rlog]),
|
|
|
- #{ mapping => "mria.db_backend"
|
|
|
- , default => mnesia
|
|
|
- })}
|
|
|
- , {"rlog",
|
|
|
- sc(ref("rlog"),
|
|
|
- #{})}
|
|
|
];
|
|
|
|
|
|
fields(cluster_static) ->
|
|
|
@@ -251,19 +246,6 @@ fields(cluster_k8s) ->
|
|
|
})}
|
|
|
];
|
|
|
|
|
|
-fields("rlog") ->
|
|
|
- [ {"role",
|
|
|
- sc(hoconsc:enum([core, replicant]),
|
|
|
- #{ mapping => "mria.node_role"
|
|
|
- , default => core
|
|
|
- })}
|
|
|
- , {"core_nodes",
|
|
|
- sc(emqx_schema:comma_separated_atoms(),
|
|
|
- #{ mapping => "mria.core_nodes"
|
|
|
- , default => []
|
|
|
- })}
|
|
|
- ];
|
|
|
-
|
|
|
fields("node") ->
|
|
|
[ {"name",
|
|
|
sc(string(),
|
|
|
@@ -328,6 +310,46 @@ fields("node") ->
|
|
|
)}
|
|
|
];
|
|
|
|
|
|
+fields("db") ->
|
|
|
+ [ {"backend",
|
|
|
+ sc(hoconsc:enum([mnesia, rlog]),
|
|
|
+ #{ mapping => "mria.db_backend"
|
|
|
+ , default => mnesia
|
|
|
+ , desc => """
|
|
|
+Select the backend for the embedded database.<br/>
|
|
|
+<strong>Important!</strong> This setting should be the same on all nodes in the cluster.<br/>
|
|
|
+<strong>Important!</strong> Changing this setting in the runtime is not allowed.<br/>
|
|
|
+<code>mnesia</code> is the default backend, that offers decent performance in small clusters.<br/>
|
|
|
+<code>rlog</code> is a new experimantal backend that is suitable for very large clusters.
|
|
|
+"""
|
|
|
+ })}
|
|
|
+ , {"role",
|
|
|
+ sc(hoconsc:enum([core, replicant]),
|
|
|
+ #{ mapping => "mria.node_role"
|
|
|
+ , default => core
|
|
|
+ , desc => """
|
|
|
+Select a node role.<br/>
|
|
|
+<code>core</code> nodes provide durability of the data, and take care of writes.
|
|
|
+It is recommended to place core nodes in different racks or different availability zones.<br/>
|
|
|
+<code>replicant</code> nodes are ephemeral worker nodes. Removing them from the cluster
|
|
|
+doesn't affect database redundancy<br/>
|
|
|
+It is recommended to have more replicant nodes than core nodes.<br/>
|
|
|
+Note: this parameter only takes effect when the <code>backend</code> is set
|
|
|
+to <code>rlog</code>.
|
|
|
+"""
|
|
|
+ })}
|
|
|
+ , {"core_nodes",
|
|
|
+ sc(emqx_schema:comma_separated_atoms(),
|
|
|
+ #{ mapping => "mria.core_nodes"
|
|
|
+ , default => []
|
|
|
+ , desc => """
|
|
|
+List of core nodes that the replicant will connect to.<br/>
|
|
|
+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>.
|
|
|
+"""
|
|
|
+ })}
|
|
|
+ ];
|
|
|
+
|
|
|
fields("cluster_call") ->
|
|
|
[ {"retry_interval",
|
|
|
sc(emqx_schema:duration(),
|