/
mongodb-serf-ctl
executable file
·118 lines (92 loc) · 3.41 KB
/
mongodb-serf-ctl
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
115
116
117
118
#!/usr/bin/make -f
ifndef name
name = mongodb
endif
ifndef router
router = router01
endif
all: help
pull:
@docker pull wpjunior/mongodb-serf
build:
@docker build -t wpjunior/mongodb-serf https://github.com/wpjunior/mongodb-serf.git
start:
@$(_) start_ad
@$(_) start_configserver3
@$(_) start_configserver2
@$(_) start_configserver1
@sleep 10
@$(_) start_router01
@sleep 10
@$(_) start_rs1
@sleep 10
@$(_) start_rs2
start_ad:
@docker run -d --name="ad.$(name)" -h "ad.$(name)" -p 7946 -p 7373 \
-e MONGODB_SUFFIX="${name}" \
--entrypoint="/usr/bin/initialize-ad.sh" wpjunior/mongodb-serf
@echo "ad.$(name) started"
stop_ad:
- docker kill "ad.$(name)"
- docker rm "ad.$(name)"
@echo "ad.$(name) stoped"
start_configserver%:
@docker run -h "configserver0$*.$(name)" --name="configserver0$*.$(name)" \
--link ad.$(name):ad \
-e OPTIONS="d --configsvr --replSet cfg --dbpath /data/db" \
-d wpjunior/mongodb-serf
@echo "configserver0$*.$(name) started"
start_router%:
@docker run -h "router$*.$(name)" --name "router$*.$(name)" \
--link ad.$(name):ad -d \
-e OPTIONS="s --configdb cfg/configserver01.$(name):27019,configserver02.$(name):27019,configserver03.$(name):27019 --port 27017" \
wpjunior/mongodb-serf
@echo "router$*.$(name) started"
stop_router%:
- docker kill "router$*.$(name)"
- docker rm "router$*.$(name)"
@echo "router$*.$(name) stoped"
start_rs%:
@$(_) start_db01 rs=$*
@sleep 10
@$(_) start_db02 rs=$*
@sleep 10
start_db%:
@docker run -h "rs$(rs)db$*.$(name)" --name="rs$(rs)db$*.$(name)" \
--link ad.$(name):ad \
-e OPTIONS="d --replSet rs$(rs) --shardsvr --port 27017" \
-d wpjunior/mongodb-serf
@echo "rs$(rs)db$*.$(name) started"
stop:
@$(_) _stop_all
shell:
@docker exec -it "router01.$(name)" mongo
stop_configserver%:
- docker kill "configserver0$*.$(name)"
- docker rm "configserver0$*.$(name)"
@echo "configserver0$*.$(name) stoped"
stop_rs%:
@$(_) stop_db_node_01 rs=$*
@$(_) stop_db_node_02 rs=$*
stop_db_node_%:
@docker kill "rs$(rs)db$*.$(name)"
@docker rm "rs$(rs)db$*.$(name)"
status:
@docker run -i -t --link ad.$(name):serf_1 --name="members.$(name)" -h "members.$(name)" --rm=true ctlc/serf-members
_stop_all:
-docker ps -a | grep ".$(name)" | awk '{split($$1,a,"-");print a[1]}' | xargs docker kill
-docker ps -a | grep ".$(name)" | awk '{split($$1,a,"-");print a[1]}' | xargs docker rm
@echo 'cluster: $(name) stoped'
help:
@echo 'mongodb-serf-ctl, a controller for mongodb cluster with serf'
@echo 'usage: mongodb-serf-ctl command [parameters]'
@echo 'available comands:'
@echo ' build ............................................ build docker image'
@echo ' pull ............................................. pull builded image from server'
@echo ' start [name=mongodb] ............................. start mongodb cluster '
@echo ' stop [name=mongodb] .............................. stop mongodb cluster '
@echo ' start_router% [name=mongodb] ..................... start a instance of mongos shard router, example: start_router02 '
@echo ' stop_router% [name=mongodb] ...................... stop a instance of mongos shard router, example: stop_router02 '
@echo ' shell [name=mongodb] [router=router01] ........... start a mongodb shell'
@echo ' start_rs% [name=mongodb] ......................... start a new replicaset, example: start_rs3'
@echo ' stop_rs% [name=mongodb] .......................... stop a replicaset, example: stop_rs3'