Skip to content

Commit

Permalink
Merge pull request #22 from Percona-Lab/PMM-12352-restore-to-new-rs-s…
Browse files Browse the repository at this point in the history
…etup

PMM-12352 setup tweaks to have extra replica set
  • Loading branch information
yurkovychv authored Jul 27, 2023
2 parents e33dc74 + d025989 commit 2a53085
Show file tree
Hide file tree
Showing 5 changed files with 233 additions and 0 deletions.
28 changes: 28 additions & 0 deletions pmm_psmdb-pbm_setup/configure-extra-agents.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
#!/bin/bash
set -e

pmm_mongo_user=${PMM_MONGO_USER:-pmm}
pmm_mongo_user_pass=${PMM_MONGO_USER_PASS:-pmmpass}
pbm_user=${PBM_USER:-pbm}
pbm_pass=${PBM_PASS:-pbmpass}

echo
echo "configuring pbm agents"
nodes="rs201 rs202 rs203"
for node in $nodes
do
echo "configuring pbm agent on $node"
docker-compose -f docker-compose-rs.yaml exec -T $node bash -c "echo \"PBM_MONGODB_URI=mongodb://${pbm_user}:${pbm_pass}@127.0.0.1:27017\" > /etc/sysconfig/pbm-agent"
echo "restarting pbm agent on $node"
docker-compose -f docker-compose-rs.yaml exec -T $node systemctl restart pbm-agent
done
echo
echo "configuring pmm agents"
nodes="rs201 rs202 rs203"
for node in $nodes
do
echo "configuring pmm agent on $node"
docker-compose -f docker-compose-rs.yaml exec -T $node pmm-agent setup
docker-compose -f docker-compose-rs.yaml exec -T $node pmm-admin add mongodb --cluster=replicaset1 --replication-set=rs1 --username=${pmm_mongo_user} --password=${pmm_mongo_user_pass} $node 127.0.0.1:27017
done
echo
103 changes: 103 additions & 0 deletions pmm_psmdb-pbm_setup/configure-extra-replset.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
#!/bin/bash
set -e

pmm_mongo_user=${PMM_MONGO_USER:-pmm}
pmm_mongo_user_pass=${PMM_MONGO_USER_PASS:-pmmpass}
pbm_user=${PBM_USER:-pbm}
pbm_pass=${PBM_PASS:-pbmpass}

echo
echo "configuring replicaset with members priorities"
docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo --quiet << EOF
config = {
"_id" : "rs",
"members" : [
{
"_id" : 0,
"host" : "rs201:27017",
"priority": 2
},
{
"_id" : 1,
"host" : "rs202:27017",
"priority": 1
},
{
"_id" : 2,
"host" : "rs203:27017",
"priority": 1
}
]
};
rs.initiate(config);
EOF
echo
sleep 60
echo
echo "configuring root user on primary"
docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo --quiet << EOF
db.getSiblingDB("admin").createUser({ user: "root", pwd: "root", roles: [ "root", "userAdminAnyDatabase", "clusterAdmin" ] });
EOF
echo
echo "configuring pbm and pmm roles"
docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo "mongodb://root:root@localhost/?replicaSet=rs" --quiet << EOF
db.getSiblingDB("admin").createRole({
"role": "pbmAnyAction",
"privileges": [{
"resource": { "anyResource": true },
"actions": [ "anyAction" ]
}],
"roles": []
});
db.getSiblingDB("admin").createRole({
role: "explainRole",
privileges: [{
resource: {
db: "",
collection: ""
},
actions: [
"listIndexes",
"listCollections",
"dbStats",
"dbHash",
"collStats",
"find"
]
}],
roles:[]
});
EOF
echo
echo "creating pbm user"
docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo "mongodb://root:root@localhost/?replicaSet=rs" --quiet << EOF
db.getSiblingDB("admin").createUser({
user: "${pbm_user}",
pwd: "${pbm_pass}",
"roles" : [
{ "db" : "admin", "role" : "readWrite", "collection": "" },
{ "db" : "admin", "role" : "backup" },
{ "db" : "admin", "role" : "clusterMonitor" },
{ "db" : "admin", "role" : "restore" },
{ "db" : "admin", "role" : "pbmAnyAction" }
]
});
EOF
echo
echo "creating pmm user"
docker-compose -f docker-compose-rs.yaml exec -T rs201 mongo "mongodb://root:root@localhost/?replicaSet=rs" --quiet << EOF
db.getSiblingDB("admin").createUser({
user: "${pmm_mongo_user}",
pwd: "${pmm_mongo_user_pass}",
roles: [
{ role: "explainRole", db: "admin" },
{ role: "clusterMonitor", db: "admin" },
{ role: "read", db: "local" },
{ "db" : "admin", "role" : "readWrite", "collection": "" },
{ "db" : "admin", "role" : "backup" },
{ "db" : "admin", "role" : "clusterMonitor" },
{ "db" : "admin", "role" : "restore" },
{ "db" : "admin", "role" : "pbmAnyAction" }
]
});
EOF
88 changes: 88 additions & 0 deletions pmm_psmdb-pbm_setup/docker-compose-rs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ version: "3"
services:
build_member:
image: replica_member/local
profiles: ["classic", "extra"]
build:
dockerfile: ./Dockerfile
context: .
Expand All @@ -17,6 +18,7 @@ services:
depends_on:
- build_member
image: replica_member/local
profiles: ["classic", "extra"]
ports:
- "27027:27017"
networks:
Expand Down Expand Up @@ -45,6 +47,7 @@ services:
depends_on:
- build_member
image: replica_member/local
profiles: ["classic", "extra"]
networks:
- pmm-qa
- pmm-ui-tests1
Expand All @@ -70,6 +73,7 @@ services:
depends_on:
- build_member
image: replica_member/local
profiles: ["classic", "extra"]
networks:
- pmm-qa
- pmm-ui-tests1
Expand All @@ -91,9 +95,92 @@ services:
container_name: rs103
hostname: rs103

rs201:
depends_on:
- build_member
image: replica_member/local
profiles: ["extra"]
ports:
- "27037:27017"
networks:
- pmm-qa
- pmm-ui-tests1
- qa-integration
- pmm-ui-tests3
- pmm-ui-tests2
volumes:
- ./conf/pbm:/etc/pbm
- ./conf/mongod-rs:/etc/mongod
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- /tmp/backup_data:/tmp/backup_data
privileged: true
environment:
PBM_MONGODB_URI: mongodb://${PBM_USER:-pbm}:${PBM_PASS:-pbmpass}@127.0.0.1:27017
PMM_AGENT_SERVER_ADDRESS: ${PMM_SERVER_CONTAINER_ADDRESS:-pmm-server:443}
PMM_AGENT_SERVER_USERNAME: admin
PMM_AGENT_SERVER_PASSWORD: ${ADMIN_PASSWORD:-password}
PMM_AGENT_SERVER_INSECURE_TLS: 1
container_name: rs201
hostname: rs201

rs202:
depends_on:
- build_member
image: replica_member/local
profiles: ["extra"]
networks:
- pmm-qa
- pmm-ui-tests1
- qa-integration
- pmm-ui-tests2
- pmm-ui-tests3
volumes:
- ./conf/pbm:/etc/pbm
- ./conf/mongod-rs:/etc/mongod
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- /tmp/backup_data:/tmp/backup_data
privileged: true
environment:
PBM_MONGODB_URI: mongodb://${PBM_USER:-pbm}:${PBM_PASS:-pbmpass}@127.0.0.1:27017
PMM_AGENT_SERVER_ADDRESS: ${PMM_SERVER_CONTAINER_ADDRESS:-pmm-server:443}
PMM_AGENT_SERVER_USERNAME: admin
PMM_AGENT_SERVER_PASSWORD: ${ADMIN_PASSWORD:-password}
PMM_AGENT_SERVER_INSECURE_TLS: 1
container_name: rs202
hostname: rs202

rs203:
depends_on:
- build_member
image: replica_member/local
profiles: ["extra"]
networks:
- pmm-qa
- pmm-ui-tests1
- qa-integration
- pmm-ui-tests2
- pmm-ui-tests3
volumes:
- ./conf/pbm:/etc/pbm
- ./conf/mongod-rs:/etc/mongod
- /sys/fs/cgroup:/sys/fs/cgroup:ro
- /tmp/backup_data:/tmp/backup_data
privileged: true
environment:
PBM_MONGODB_URI: mongodb://${PBM_USER:-pbm}:${PBM_PASS:-pbmpass}@127.0.0.1:27017
PMM_AGENT_SERVER_ADDRESS: ${PMM_SERVER_CONTAINER_ADDRESS:-pmm-server:443}
PMM_AGENT_SERVER_USERNAME: admin
PMM_AGENT_SERVER_PASSWORD: ${ADMIN_PASSWORD:-password}
PMM_AGENT_SERVER_INSECURE_TLS: 1
container_name: rs203
hostname: rs203

minio:
image: minio/minio
profiles: ["classic", "extra"]
container_name: minio
depends_on:
- build_member
networks:
- pmm-qa
- pmm-ui-tests1
Expand All @@ -110,6 +197,7 @@ services:
createbucket:
container_name: createbucket
image: minio/mc
profiles: ["classic", "extra"]
networks:
- pmm-qa
- pmm-ui-tests1
Expand Down
10 changes: 10 additions & 0 deletions pmm_psmdb-pbm_setup/start-rs-only.sh
Original file line number Diff line number Diff line change
@@ -1,11 +1,16 @@
#!/bin/bash
set -e

profile=${COMPOSE_PROFILES:-classic}

docker network create qa-integration || true
docker network create pmm-qa || true
docker network create pmm-ui-tests_pmm-network || true
docker network create pmm2-upgrade-tests_pmm-network || true
docker network create pmm2-ui-tests_pmm-network || true

export COMPOSE_PROFILES=${profile}

docker-compose -f docker-compose-rs.yaml down -v --remove-orphans
docker-compose -f docker-compose-rs.yaml build
docker-compose -f docker-compose-rs.yaml up -d
Expand All @@ -15,3 +20,8 @@ sleep 30
echo
bash -x ./configure-replset.sh
bash -x ./configure-agents.sh

if [ $profile = "extra" ]; then
bash -x ./configure-extra-replset.sh
bash -x ./configure-extra-agents.sh
fi
4 changes: 4 additions & 0 deletions pmm_psmdb-pbm_setup/start-rs.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,16 @@
set -e

pmm_server_admin_pass=${ADMIN_PASSWORD:-password}
profile=${COMPOSE_PROFILES:-classic}

docker network create qa-integration || true
docker network create pmm-qa || true
docker network create pmm-ui-tests_pmm-network || true
docker network create pmm2-upgrade-tests_pmm-network || true
docker network create pmm2-ui-tests_pmm-network || true

export COMPOSE_PROFILES=${profile}

docker-compose -f docker-compose-rs.yaml -f docker-compose-pmm.yaml down -v --remove-orphans
docker-compose -f docker-compose-rs.yaml -f docker-compose-pmm.yaml build
docker-compose -f docker-compose-pmm.yaml -f docker-compose-rs.yaml up -d
Expand Down

0 comments on commit 2a53085

Please sign in to comment.