-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathvmq_discovery.schema
114 lines (94 loc) · 3.92 KB
/
vmq_discovery.schema
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
%% @doc Configures whether or not VerneMQ will use cluster discovery.
{mapping, "vmq_discovery.discovery_enabled", "vmq_discovery.discovery_enabled", [
{default, off},
{datatype, flag}
]}.
%% Cluster formation maximum startup delay
{mapping, "vmq_discovery.max_startup_delay", "vmq_discovery.max_startup_delay", [
{datatype, integer}
]}.
%% @doc Set the time in seconds to remove missing nodes from the cluster
{mapping, "vmq_discovery.autoclean_interval", "vmq_discovery.autoclean_interval", [
{default, 20},
{commented, 20},
{datatype, integer}
]}.
%% @doc Node discovery backend used for automatic cluster formation.
{mapping, "vmq_discovery.discovery_backend", "vmq_discovery.discovery_backend", [
{datatype, atom}
]}.
{translation, "vmq_discovery.discovery_backend",
fun(Conf) ->
case cuttlefish:conf_get("vmq_discovery.discovery_backend", Conf, manual) of
manual -> vmq_discovery_manual;
dns -> vmq_discovery_dns;
aws -> vmq_discovery_aws;
kubernetes -> vmq_discovery_k8s;
Other -> Other
end
end}.
%%--------------------------------------------------------------------
%% Cluster using a list of nodes
%%--------------------------------------------------------------------
%% @doc Manual configuration cluster discovery backend.
%% Clustering happens automatically at startup by joining
%% a list of predefined nodes.
{mapping, "vmq_discovery.manual.nodes.$name", "vmq_discovery.cluster_nodes", [
{datatype, string},
{commented, "[email protected]"},
{include_default, "node1"}
]}.
{translation, "vmq_discovery.cluster_nodes",
fun(Conf) ->
Prefix = "vmq_discovery.manual.nodes",
Nodes = [V || {_, V} <- cuttlefish_variable:filter_by_prefix(Prefix, Conf)],
case Nodes of
[] -> cuttlefish:unset();
SomethingElse -> SomethingElse
end
end}.
%%--------------------------------------------------------------------
%% Cluster using Kubernetes
%%--------------------------------------------------------------------
%% @doc The Kubernetes master node url(API url).
{mapping, "vmq_discovery.k8s.master_node_url", "vmq_discovery.discovery_config.k8s.master_node_url", [
{commented, "https://kubernetes.default.svc.cluster.local:443"},
{default, "https://kubernetes.default.svc.cluster.local:443"},
{datatype, string}
]}.
%% @doc Path to the Kubernetes service namespace.
{mapping, "vmq_discovery.k8s.service_namespace", "vmq_discovery.discovery_config.k8s.service_namespace", [
{default, "default"},
{commented, "default"},
{datatype, file}
]}.
%% @doc Path to the Kubernetes service namespace.
{mapping, "vmq_discovery.k8s.service_name", "vmq_discovery.discovery_config.k8s.service_name", [
{default, "vernemq"},
{commented, "vernemq"},
{datatype, string}
]}.
{mapping, "mq_discovery.k8s.token_path", "mq_discovery.discovery_config.k8s.token_path",
[{datatype, file},
{commented, "/var/run/secrets/kubernetes.io/serviceaccount/token"},
{default, "/var/run/secrets/kubernetes.io/serviceaccount/token"}
]}.
{mapping, "mq_discovery.k8s.certificate_path", "mq_discovery.discovery_config.k8s.certificate_path",
[{datatype, file},
{commented, "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"},
{default, "/var/run/secrets/kubernetes.io/serviceaccount/ca.crt"}
]}.
%% @doc Defines the address type used by the node. Can be an ip or dns hostname.
{mapping, "vmq_discovery.k8s.address_type", "vmq_discovery.discovery_config.k8s.address_type", [
{default, hostname},
{commented, hostname},
{datatype, {enum, [hostname, ip]}}
]}.
%%--------------------------------------------------------------------
%% Cluster using DNS
%%--------------------------------------------------------------------
%% @doc Defines the Seed Host for DNS based discovery.
{mapping, "vmq_discovery.dns.seed_host", "vmq_discovery.discovery_config.dns.seed_host", [
{default, ""},
{datatype, string}
]}.