Skip to content

Commit 8533701

Browse files
author
cws
committed
basic config questions implemented
1 parent a801d44 commit 8533701

File tree

9 files changed

+58
-27
lines changed

9 files changed

+58
-27
lines changed

Makefile

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,20 @@
1515
# Build tools.
1616
#
1717

18-
all:
18+
build:
1919
src/clean.sh
2020
src/generate.sh
21+
.PHONY: build
22+
23+
run:
2124
src/create.sh
2225
sleep 60
2326
src/automate.sh
27+
.PHONY: run
2428

25-
build:
26-
src/generate.sh
27-
.PHONY: build
29+
config:
30+
src/config.sh
31+
.PHONY: config
2832

2933
clean:
3034
src/clean.sh

src/automate.sh

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,30 +6,30 @@ MONGOSPORT="27017"
66
CFGPORT="27018"
77
PORT=$1 && [ -z "${1}" ] && PORT="27020" || true
88

9-
kubectl get pods -l role=mongoshard -o name > ./temp/podfile
9+
kubectl get pods -l role=mongoshard -o name > ./tmp/podfile
1010

1111
i=1
1212
while read p; do
1313
ii=$(printf %02d "${i}")
1414
POD=$(echo $p | cut -d / -f2)
1515
NODE=$(echo $POD | cut -d'-' -f3 | cut -b 5-6)
16-
JSFILE=$(ls node${NODE}-rs*)
16+
JSFILE=$(ls ./build/node${NODE}-rs*)
1717
RSNUM=$(echo $JSFILE | cut -d'-' -f2 | cut -b 3-4)
1818
CONTAINER="rsp${RSNUM}-node${NODE}"
1919
echo "${ii}: Initialize replication set rs${RSNUM} on node ${NODE}"
2020
echo "Execute command on pod ${POD} and container ${CONTAINER}"
21-
kubectl exec -ti ${POD} -c ${CONTAINER} mongo 127.0.0.1:${PORT} <./build/${JSFILE}
22-
if [ -e "cfg${ii}-init.js" ]; then
21+
kubectl exec -ti ${POD} -c ${CONTAINER} mongo 127.0.0.1:${PORT} <${JSFILE}
22+
if [ -e "./build/cfg${ii}-init.js" ]; then
2323
echo "Initialize Config Server Replication Set"
2424
kubectl exec -ti ${POD} -c ${CONTAINER} mongo 127.0.0.1:${CFGPORT} <./build/cfg${ii}-init.js
2525
fi
2626
i=$((i+1))
27-
done < ./temp/podfile
27+
done < ./tmp/podfile
2828

2929
sleep 15
3030
echo "Initialize Shard..."
3131
kubectl exec -ti ${POD} -c ${CONTAINER} mongo 127.0.0.1:${MONGOSPORT} <./build/shard-init.js
3232

3333
sleep 15
3434
echo "Initialize database collections for sharding ..."
35-
kubectl exec -ti ${POD} -c ${CONTAINER} mongo 127.0.0.1:${MONGOSPORT} <./build/js-templates/shardkeys.js
35+
kubectl exec -ti ${POD} -c ${CONTAINER} mongo 127.0.0.1:${MONGOSPORT} <./js-templates/shardkeys.js

src/configure.sh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/bin/bash
2+
3+
set -eo pipefail
4+
5+
NODES=$1 && [ -z "${1}" ] && NODES="3" || true
6+
7+
echo
8+
echo "Please supply some important configuration parameters below:"
9+
echo "============================================================"
10+
read -p "SSH user for cluster access [root]: " SSHUSER
11+
[ -z "$SSHUSER" ] && SSHUSER="root" || true
12+
read -p "SSH port for cluster access [22]: " SSHPORT
13+
[ -z "$SSHPORT" ] && SSHPORT="22" || true
14+
read -p "Root directory for your mongodb data [/data]: " BASEDIR
15+
[ -z "$BASEDIR" ] && BASEDIR="/data" || true
16+
read -p "Number of nodes for your shard [${NODES}]: " CFGNODES
17+
[ -z "$CFGNODES" ] && CFGNODES=$NODES || true
18+
echo

src/create.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ while read p; do
99
echo "Create Deployment on machine ${NAME} (node${NODE})..."
1010
kubectl create -f ./build/node${NODE}-deployment.yaml
1111
i=$((i+1))
12-
done < ./temp/nodefile
12+
done < ./tmp/nodefile

src/delete.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,4 @@ while read p; do
99
echo "Create Deployment on machine ${NAME} (node${NODE})..."
1010
kubectl delete -f ./build/node${NODE}-deployment.yaml
1111
i=$((i+1))
12-
done < ./temp/nodefile
12+
done < ./tmp/nodefile

src/generate.sh

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,7 @@ function genYamlFromTemplates(){
159159
> $OUTFILE
160160
OUTFILE="./tmp/yaml/node${NODENUM}-db${RSNUM}-volumes.yaml"
161161
cat "${TEMPLATE_PATH}/volumes-template.yaml" \
162+
| sed "s|__BASEDIR__|${BASEDIR}|g" \
162163
| sed "s|__RSNUM__|${RSNUM}|g" \
163164
| sed "/##/d" \
164165
> $OUTFILE
@@ -255,6 +256,7 @@ genFinalFromPartials(){
255256
${YAML_PATH}/node${NODENUM}-mgs*.yaml \
256257
${TEMPLATE_PATH}/volumes-head.yaml \
257258
${YAML_PATH}/node${NODENUM}-db*-volumes.yaml \
259+
| sed "s|__BASEDIR__|${BASEDIR}|g" \
258260
| sed "s|__CONFIG_SERVERS_SERVICES__|${CONFIG_SERVERS_SERVICES}|g" \
259261
> "./build/node${NODENUM}-deployment.yaml"
260262
done
@@ -270,15 +272,19 @@ genFinalFromPartials(){
270272

271273
# Ensure clean startup
272274
cleanUp
275+
273276
# Gather basic config parameters
274-
echo "Please ensure that pods can be scheduled on all these nodes."
275-
echo "------------------------------------------------------------"
276277
kubectl get nodes -o=name > ./tmp/nodefile
277278
getNodeNames "./tmp/nodefile" "./tmp"
278279
NODES=$(cat ./tmp/nodefile |wc -l)
279-
#NODES=$((NODES+2))
280-
echo "CLUSTER NODES.....................: ${NODES}"
281280

281+
# Ask for some config parameters
282+
source src/configure.sh ${NODES}
283+
284+
echo "Please ensure that pods can be scheduled on all these nodes."
285+
echo "------------------------------------------------------------"
286+
NODES=${CFGNODES}
287+
echo "CLUSTER NODES.....................: ${NODES}"
282288
SHARDS=${NODES}
283289
validateConstraints $SHARDS 1 $NODES
284290
echo "SHARD MEMBERS.....................: ${SHARDS}"
@@ -367,6 +373,7 @@ done
367373
genFinalFromPartials
368374

369375
echo 'Generate needed directories on remote server ...'
370-
sh remote.sh ${SHARDS}
371-
372-
echo "Successfully executed. Inspect the yaml folder for the generated files."
376+
./src/remote.sh ${SHARDS} ${SSHUSER} ${SSHPORT} ${BASEDIR}
377+
echo
378+
echo "Successfully executed."
379+
echo "Execute 'make run' to fire up the mongodb shard on your cluster."

src/remote.sh

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
set -eo pipefail
44

5-
REMOTEPORT=$2 && [ -z "${2}" ] && REMOTEPORT="22"
5+
SSHUSER=$2 && [ -z "${2}" ] && SSHUSER="core" || true
6+
SSHPORT=$3 && [ -z "${3}" ] && SSHPORT="22" || true
7+
BASEDIR=$4 && [ -z "${4}" ] && BASEDIR="/data" || true
68

79
function sshCall(){
8-
ssh -p $REMOTEPORT core@$1 $2 </dev/null
10+
ssh -p $SSHPORT core@$1 $2 </dev/null
911
}
1012
function execRemote(){
1113
FILE=${1}
@@ -15,14 +17,14 @@ function execRemote(){
1517
ii=$(printf %02d "${i}")
1618
HOSTNAME=$(echo $pp | cut -d / -f2)
1719
echo "Executing commands on ${HOSTNAME}..."
18-
sshCall $HOSTNAME "sudo mkdir -p /enc/mongodb/db-cfg"
20+
sshCall $HOSTNAME "sudo mkdir -p ${BASEDIR}/mongodb/db-cfg"
1921
echo "Ensure correct kernel settings for mongodb..."
2022
sshCall $HOSTNAME 'sudo /bin/bash -c "echo never > /sys/kernel/mm/transparent_hugepage/enabled"'
2123
sshCall $HOSTNAME 'sudo /bin/bash -c "echo never > /sys/kernel/mm/transparent_hugepage/defrag"'
2224
for j in $(seq ${SHARDS}); do
2325
RSNUM=$(printf %02d ${j})
2426
echo "Create directories for replica set ${RSNUM}."
25-
sshCall $HOSTNAME "sudo mkdir -p /enc/mongodb/db-rs${RSNUM}"
27+
sshCall $HOSTNAME "sudo mkdir -p ${BASEDIR}/mongodb/db-rs${RSNUM}"
2628
done
2729
i=$((i+1))
2830
done < "$FILE"
@@ -33,8 +35,8 @@ if [ -z "$1" ]; then
3335
exit 1
3436
fi
3537
echo "Number of Shards / Replication Sets: ${1}"
36-
if [ -e ./temp/nodefile ]; then
37-
execRemote "./temp/nodefile" $1
38+
if [ -e ./tmp/nodefile ]; then
39+
execRemote "./tmp/nodefile" $1
3840
else
3941
echo "You need to run generate.sh first."
4042
exit 1

yaml-templates/volumes-head.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
volumes:
22
- name: db-cfg
33
hostPath:
4-
path: /enc/mongodb/db-cfg
4+
path: __BASEDIR__/mongodb/db-cfg

yaml-templates/volumes-template.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
- name: db-rs__RSNUM__
22
hostPath:
3-
path: /enc/mongodb/db-rs__RSNUM__
3+
path: __BASEDIR__/mongodb/db-rs__RSNUM__

0 commit comments

Comments
 (0)