-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathinstallcouchdbcluster-swarm.sh
More file actions
104 lines (86 loc) · 2.71 KB
/
Copy pathinstallcouchdbcluster-swarm.sh
File metadata and controls
104 lines (86 loc) · 2.71 KB
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
#!/bin/bash
COUCHDB_USER=$1
COUCHDB_PASSWORD=$2
SSL_CERT=$3
nodelist=$(docker node ls -q)
echo "Node list is = $nodelist"
IFS=' ' read -r -a nodes <<< $nodelist
numbernodes=${#nodes[@]}
node1=${nodes[0]}
node2=${nodes[0]}
node3=${nodes[0]}
if [ $numbernodes -eq 2 ]; then
node2=${nodes[1]}
node3=${nodes[1]}
elif [ $numbernodes -ge 3 ]; then
node2=${nodes[1]}
node3=${nodes[2]}
fi
echo "Node1 id = $node1"
echo "Node2 id = $node2"
echo "Node3 id = $node3"
echo "creating dbnet network"
docker network create --driver overlay dbnet
cat > CouchDbSettings__Username << EOF
$COUCHDB_USER
EOF
cat > CouchDbSettings__Password << EOF
$COUCHDB_PASSWORD
EOF
docker secret create CouchDbSettings__Username CouchDbSettings__Username
docker secret create CouchDbSettings__Password CouchDbSettings__Password
docker secret create couch.pem $SSL_CERT
rm CouchDbSettings__Username
rm CouchDbSettings__Password
docker pull healthcatalyst/fabric.docker.couchdb
echo "creating couchdb1 service"
docker service create --name couchdb1 \
--env NODENAME=couchdb1 \
--env USERNAME_SECRET=CouchDbSettings__Username \
--env PASSWORD_SECRET=CouchDbSettings__Password \
--secret CouchDbSettings__Username \
--secret CouchDbSettings__Password \
-p 15984:5984 \
--network dbnet \
--mount type=volume,source=db1-data,destination=//opt/couchdb/data \
--constraint "node.id == $node1" \
--detach=false \
healthcatalyst/fabric.docker.couchdb
echo "creating couchdb2 service"
docker service create --name couchdb2 \
--env NODENAME=couchdb2 \
--env COUCHDB_USER=$COUCHDB_USER \
--env COUCHDB_PASSWORD=$COUCHDB_PASSWORD \
-p 25984:5984 \
--network dbnet \
--mount type=volume,source=db2-data,destination=//opt/couchdb/data \
--constraint "node.id == $node2" \
--detach=false \
healthcatalyst/fabric.docker.couchdb
echo "creating couchdb3 service"
docker service create --name couchdb3 \
--env NODENAME=couchdb3 \
--env COUCHDB_USER=$COUCHDB_USER \
--env COUCHDB_PASSWORD=$COUCHDB_PASSWORD \
-p 35984:5984 \
--network dbnet \
--mount type=volume,source=db3-data,destination=//opt/couchdb/data \
--constraint "node.id == $node3" \
--detach=false \
healthcatalyst/fabric.docker.couchdb
echo "waiting for couchdb nodes to come up"
sleep 30
echo "configuring couch cluster"
curl -sSL https://healthcatalyst.github.io/InstallScripts/configure-couch-cluster.sh | sh /dev/stdin 127.0.0.1 15984 25984 35984 $COUCHDB_USER $COUCHDB_PASSWORD
echo "creating couch ha proxy service"
docker service create --name couchproxy \
-p 5984:5984 \
--network dbnet \
--detach=false \
healthcatalyst/fabric.docker.haproxy
docker service create --name couchproxyssl \
-p 5985:5985 \
--secret couch.pem \
--network dbnet \
--detach=false \
healthcatalyst/fabric.docker.haproxyssl