-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathsetup.sh
executable file
·104 lines (82 loc) · 2.82 KB
/
setup.sh
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
source ./scripts/common.sh
# Configure db path
DB_PATH=/data/mongodb
# Killing mongo processes
echo "killing mongod and mongos..."
killall mongod
killall mongosh
# Start config servers
echo ">>>>> Initializing config replica"
start_replica_set "$DB_PATH/config" 57040 "cfg" "./confs/config"
# Start replica sets for shard0, shard1, and shard2
start_replica_set "$DB_PATH/shard0" 37017 "s0" "./confs/shard0"
start_replica_set "$DB_PATH/shard1" 47017 "s1" "./confs/shard1"
start_replica_set "$DB_PATH/shard2" 57017 "s2" "./confs/shard2"
echo ">>>>> Wait 10 sec for every replica's primary to come online"
sleep 10
# Create local users for each replica set
create_local_user 37017 "shard0" "grw@123"
create_local_user 47017 "shard1" "grw@123"
create_local_user 57017 "shard2" "grw@123"
# now start the mongos on port 27018
mongos -f ./confs/mongos/m1.yml
echo ">>>>> Waiting 30 seconds for the replica sets to fully come online"
sleep 30
echo ">>>>> Connnecting to config db and enabling sharding"
# add shards and enable sharding on the fluddi db
connect_mongosh 27018 << 'EOF'
db.getSiblingDB("admin").createUser(
{
user: "admin",
pwd: "grw@123",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role : "clusterAdmin", db : "admin" }
]
}
)
db.getSiblingDB("admin").auth("admin", "grw@123")
sh.addShard("s0/database.fluddi.com:37017")
sh.addShard("s1/database.fluddi.com:47017")
sh.addShard("s2/database.fluddi.com:57017")
sh.enableSharding("fluddi")
db.getSiblingDB("$external").runCommand(
{
createUser: "emailAddress=support@fluddi.com,CN=*.fluddi.com,OU=DbAdmin,O=Fluddi,L=Purmerend,ST=Nord Holland,C=NL",
roles: [
{ role : "clusterAdmin", db : "admin" },
{ role: "dbOwner", db: "fluddi" },
],
writeConcern: { w: "majority" , wtimeout: 5000 }
}
)
db.getSiblingDB("$external").runCommand(
{
createUser: "emailAddress=support@fluddi.com,CN=*.fluddi.com,OU=Webapp,O=Fluddi,L=Purmerend,ST=Nord Holland,C=NL",
roles: [
{ role: "readWrite", db: "fluddi" },
],
writeConcern: { w: "majority" , wtimeout: 5000 }
}
)
EOF
echo ">>>>> Created database admin"
echo ">>>>> Shard enabled in database fluddi"
echo ">>>>> Created DbAdmin SSL client user for fluddi"
echo ">>>>> Created Webapp SSL client user for web application"
# use admin client certificate
connect_mongosh 27018 "/opt/mongodb/db_admin.pem" << 'EOF'
db.getSiblingDB("$external").auth(
{
mechanism: "MONGODB-X509",
user: "emailAddress=support@fluddi.com,CN=*.fluddi.com,OU=DbAdmin,O=Fluddi,L=Purmerend,ST=Nord Holland,C=NL"
}
)
use fluddi
db.createCollection("visitors")
db.visitors.ensureIndex({"siteId": 1, "_id": 1})
sh.shardCollection("fluddi.visitors", {"siteId": 1, "_id": 1})
EOF
echo ">>>>> Sharded Collection fluddi.visitors"
echo ">>>>> Completed setting up sharded environment"