-
Notifications
You must be signed in to change notification settings - Fork 21
/
galera_arbitrator_config_helper.go
72 lines (58 loc) · 2.63 KB
/
galera_arbitrator_config_helper.go
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
/*
Copyright AppsCode Inc. and Contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package v1alpha1
import (
"fmt"
)
const (
// GarbdListenPort is the port at which Galera Arbitrator Daemon (garbd) listen
GarbdListenPort = 4444
// GarbdXtrabackupSSTMethod is the name of the method or script that is
// used during a State SnapshotID Transfer to Galera Arbitrator Daemon (garbd).
GarbdXtrabackupSSTMethod = "xtrabackup-v2"
// GarbdXtrabackupSSTRequestSuffix denotes the suffix of sst request string for xtrabackup
// used by Galera Arbitrator Daemon (garbd)
GarbdXtrabackupSSTRequestSuffix = "/xtrabackup_sst//1"
// GarbdLogFile is the name log file at which Galera Arbitrator Daemon (garbd) puts logs
GarbdLogFile = "/tmp/garb.log"
// SOCAT is needed after completing sst by Galera Arbitrator Daemon (garbd)
// SOCATOptionReUseAddr is the SOCAT reuseaddr option
SOCATOptionReUseAddr = "reuseaddr"
// SOCATOptionRetry is the default retry value for `socat` binary
SOCATOptionRetry = 30
)
// ClusterAddressWithListenOption method returns the galera cluster address with
// the listening option (address at which Galera Cluster listens to connections from
// other nodes) for `--address` option in `garbd`
// Here, ‘?gmcast.listen_addr=tcp://0.0.0.0:4444‘ is an arbitrary listen socket address
// that Galera Arbitrator opens to communicate with the cluster.
// https://galeracluster.com/library/documentation/backup-cluster.html
func (g *GaleraArbitratorConfiguration) ClusterAddressWithListenOption() string {
if g == nil {
return ""
}
return fmt.Sprintf("%s?gmcast.listen_addr=tcp://0.0.0.0:%d", g.Address, GarbdListenPort)
}
// SSTRequestString method form the sst request string
// for `--sst` option in `garbd`
func (g *GaleraArbitratorConfiguration) SSTRequestString(host string) string {
if g == nil {
return ""
}
return fmt.Sprintf("%s:%s:%d%s", g.SSTMethod, host, GarbdListenPort, GarbdXtrabackupSSTRequestSuffix)
}
// SOCATOption returns the option string used for `SOCAT` in the
// percona xtradb backup process
func SOCATOption(retry int32) string {
return fmt.Sprintf("TCP-LISTEN:%d,%s,retry=%d", GarbdListenPort, SOCATOptionReUseAddr, retry)
}