Skip to content

Commit 72cb71a

Browse files
authored
PMM-13294 MLaunch Support (#76)
* MLaunch Support * Updates fix SSL binary removal * Updates to support keyword "shards" as well
1 parent 6e876e6 commit 72cb71a

File tree

11 files changed

+819
-7
lines changed

11 files changed

+819
-7
lines changed

pmm_qa/Dockerfile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
FROM php:8.1-alpine
2+
3+
RUN set -ex \
4+
&& apk --no-cache add postgresql-libs postgresql-dev \
5+
&& docker-php-ext-install pgsql pdo_pgsql \
6+
&& docker-php-ext-install mysqli && docker-php-ext-enable mysqli \
7+
&& apk del postgresql-dev
8+
9+
RUN apk --update add --virtual build-dependencies build-base openssl-dev autoconf \
10+
&& pecl install mongodb \
11+
&& docker-php-ext-enable mongodb \
12+
&& apk del build-dependencies build-base openssl-dev autoconf \
13+
&& rm -rf /var/cache/apk/*
14+
15+
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin/ --filename=composer
16+
RUN composer require mongodb/mongodb

pmm_qa/mlaunch_modb_setup.sh

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
#!/bin/sh
2+
3+
while [ $# -gt 0 ]; do
4+
if [[ $1 == *"--"* ]]; then
5+
param="${1/--/}"
6+
declare $param="$2"
7+
fi
8+
shift
9+
done
10+
11+
if [ -z "$mongodb_version" ]; then
12+
export mongodb_version=7.0
13+
fi
14+
15+
if [ -z "$mongdb_setup" ]; then
16+
export mongdb_setup=pss
17+
fi
18+
19+
if [ -z "$metrics_mode" ]; then
20+
export metrics_mode=push
21+
fi
22+
23+
# Mongo user credtials for the replicat set cluster
24+
export user="dba"
25+
export pwd="test1234"
26+
27+
# Install the dependencies
28+
source ~/.bash_profile || true;
29+
apt-get update
30+
apt-get -y install wget curl jq git gnupg2 lsb-release
31+
apt-get -y install libreadline6-dev systemtap-sdt-dev zlib1g-dev libssl-dev libpam0g-dev python-dev bison make flex libipc-run-perl
32+
sleep 10
33+
34+
#wget https://raw.githubusercontent.com/Percona-QA/percona-qa/master/mongo_startup.sh
35+
#chmod +x mongo_startup.sh
36+
export SERVICE_RANDOM_NUMBER=$(echo $((1 + $RANDOM % 9999)))
37+
38+
## Detect latest tarball link for specified mongodb_version: 7.0 | 6.0 | 5.0 | 4.4 | 4.2 at the moment
39+
modb_tarball=$(curl -s "https://www.mongodb.com/try/download/community" | \
40+
grep -oP "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2004-${mongodb_version//./\\.}\.\d+\.tgz" | \
41+
sort -V | tail -n 1)
42+
43+
echo "Downloading ${mongodb_version} from ${modb_tarball}..."
44+
wget -O percona_server_mongodb.tar.gz ${modb_tarball}
45+
tar -xvf percona_server_mongodb.tar.gz
46+
47+
export extracted_folder_name=$(ls | grep mongodb-linux)
48+
echo "Extracted folder name ${extracted_folder_name}"
49+
mv ${extracted_folder_name} modb_${mongodb_version}
50+
rm percona_server_mongodb.tar.gz*
51+
52+
# For mongodb dependency in Debian
53+
wget http://http.us.debian.org/debian/pool/main/o/openldap/libldap-2.4-2_2.4.47+dfsg-3+deb10u7_amd64.deb
54+
apt install -y ./libldap-2.4-2_2.4.47+dfsg-3+deb10u7_amd64.deb
55+
56+
if [ "$mongodb_setup" == "pss" ]; then
57+
mlaunch init --bind_ip 0.0.0.0 --binarypath "./modb_${mongodb_version}/bin" --replicaset --name rs1 --nodes 3
58+
sleep 20
59+
pmm-admin remove mongodb mongodb_rs1_1_${SERVICE_RANDOM_NUMBER} || true; pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs1 --environment=mongodb_rs_node --metrics-mode=$metrics_mode mongodb_rs1_1_${SERVICE_RANDOM_NUMBER} --debug 127.0.0.1:27017
60+
sleep 2
61+
pmm-admin remove mongodb mongodb_rs1_2_${SERVICE_RANDOM_NUMBER} || true; pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs1 --environment=mongodb_rs_node --metrics-mode=$metrics_mode mongodb_rs1_2_${SERVICE_RANDOM_NUMBER} --debug 127.0.0.1:27018
62+
sleep 2
63+
pmm-admin remove mongodb mongodb_rs1_3_${SERVICE_RANDOM_NUMBER} || true; pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs1 --environment=mongodb_rs_node --metrics-mode=$metrics_mode mongodb_rs1_3_${SERVICE_RANDOM_NUMBER} --debug 127.0.0.1:27019
64+
sleep 20
65+
fi
66+
67+
if [ "$mongodb_setup" == "psa" ]; then
68+
mlaunch init --bind_ip 0.0.0.0 --binarypath "./modb_${mongodb_version}/bin" --replicaset --name rs1 --nodes 2 --arbiter
69+
sleep 20
70+
pmm-admin remove mongodb mongodb_rs1_1_${SERVICE_RANDOM_NUMBER} || true; pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs1 --environment=mongodb_rs_node --metrics-mode=$metrics_mode mongodb_rs1_1_${SERVICE_RANDOM_NUMBER} --debug 127.0.0.1:27017
71+
sleep 2
72+
pmm-admin remove mongodb mongodb_rs1_2_${SERVICE_RANDOM_NUMBER} || true; pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs1 --environment=mongodb_rs_node --metrics-mode=$metrics_mode mongodb_rs1_2_${SERVICE_RANDOM_NUMBER} --debug 127.0.0.1:27018
73+
sleep 2
74+
pmm-admin remove mongodb mongodb_rs1_3_${SERVICE_RANDOM_NUMBER} || true; pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs1 --environment=mongodb_rs_node --metrics-mode=$metrics_mode mongodb_rs1_3_${SERVICE_RANDOM_NUMBER} --debug 127.0.0.1:27019
75+
sleep 20
76+
fi
77+
78+
if [ "$mongodb_setup" == "sharded" ] || [ "$mongodb_setup" == "shards" ]; then
79+
mlaunch init --bind_ip 0.0.0.0 --binarypath "./modb_${mongodb_version}/bin" --replicaset --sharded rs1 rs2 --config 3
80+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --environment=mongos_shraded_node mongos_shraded_node_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27017
81+
sleep 2
82+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=config --environment=mongodb_config_node mongodb_config_1_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27024
83+
sleep 2
84+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=config --environment=mongodb_config_node mongodb_config_2_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27025
85+
sleep 2
86+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=config --environment=mongodb_config_node mongodb_config_3_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27026
87+
sleep 2
88+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs1 --environment=mongodb_rs_node mongodb_rs1_1_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27018
89+
sleep 2
90+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs1 --environment=mongodb_rs_node mongodb_rs1_2_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27019
91+
sleep 2
92+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs1 --environment=mongodb_rs_node mongodb_rs1_3_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27020
93+
sleep 2
94+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs2 --environment=mongodb_rs_node mongodb_rs2_1_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27021
95+
sleep 2
96+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs2 --environment=mongodb_rs_node mongodb_rs2_2_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27022
97+
sleep 2
98+
pmm-admin add mongodb --enable-all-collectors --cluster mongodb_node_cluster --replication-set=rs2 --environment=mongodb_rs_node mongodb_rs2_3_${SERVICE_RANDOM_NUMBER} --metrics-mode=$metrics_mode --debug 127.0.0.1:27023
99+
sleep 20
100+
fi

pmm_qa/mlaunch_modb_setup.yml

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
---
2+
3+
- hosts: all
4+
become: true
5+
become_method: sudo
6+
vars:
7+
modb_version: "{{ lookup('vars', 'extra_modb_version', default=lookup('env','MODB_VERSION') | default('4.4', true) ) }}"
8+
modb_tarball: "{{ lookup('vars', 'extra_modb_tarball', default=lookup('env','MODB_TARBALL') | default('', true) ) }}"
9+
modb_setup: "{{ lookup('vars', 'extra_modb_setup', default=lookup('env','MODB_SETUP') | default('pss', true) ) }}"
10+
modb_container: "{{ lookup('vars', 'extra_modb_container', default=lookup('env','MODB_CONTAINER') | default('MODB', true) ) }}"
11+
pmm_server_ip: "{{ lookup('vars', 'extra_pmm_server_ip', default=lookup('env','PMM_SERVER_IP') | default('127.0.0.1', true) ) }}"
12+
client_version: "{{ lookup('vars', 'extra_client_version', default=lookup('env','CLIENT_VERSION') | default('dev-latest', true) ) }}"
13+
admin_password: "{{ lookup('vars', 'extra_admin_password', default=lookup('env','ADMIN_PASSWORD') | default('admin', true) ) }}"
14+
pmm_qa_branch: "{{ lookup('vars', 'extra_pmm_qa_branch', default=lookup('env','PMM_QA_GIT_BRANCH') | default('v3', true) ) }}"
15+
16+
tasks:
17+
- name: cleanup container for client and DB setup
18+
shell: >
19+
docker ps -a --filter "name={{ modb_container }}" | grep -q . && docker stop {{ modb_container }} && docker rm -fv {{ modb_container }}
20+
ignore_errors: true
21+
tags:
22+
- cleanup
23+
24+
- name: Create pmm-qa network if not exist
25+
shell: docker network create pmm-qa
26+
ignore_errors: true
27+
28+
- name: Prepare Container for modb
29+
shell: >
30+
docker run -d --name={{ modb_container }}
31+
-p 27017:27017
32+
phusion/baseimage:focal-1.2.0
33+
34+
- name: Copy all required Artifacts to the docker modb_container
35+
shell: "{{ item }}"
36+
with_items:
37+
- docker cp ./mlaunch_modb_setup.sh {{ modb_container }}:/
38+
- docker cp ./pmm3-client-setup.sh {{ modb_container }}:/
39+
- docker exec {{ modb_container }} apt-get update
40+
- docker exec {{ modb_container }} apt-get -y install wget curl git gnupg2 lsb-release jq python3 pip
41+
42+
- name: Install required software's to the docker modb_container
43+
shell: "{{ item }}"
44+
with_items:
45+
- docker exec {{ modb_container }} python3 -m pip install --upgrade pip
46+
- docker exec {{ modb_container }} pip3 install 'mtools[all]'
47+
48+
- name: Install pmm2-client on the modb_container
49+
shell: "{{ item }}"
50+
with_items:
51+
- docker network connect pmm-qa {{ modb_container }}
52+
- docker exec {{ modb_container }} bash -x ./pmm3-client-setup.sh --pmm_server_ip {{ pmm_server_ip }} --client_version {{ client_version }} --admin_password {{ admin_password }} --use_metrics_mode no
53+
54+
- name: Setup modb for monitoring
55+
shell: "{{ item }}"
56+
with_items:
57+
- docker exec {{ modb_container }} bash -x ./mlaunch_modb_setup.sh --mongodb_version {{ modb_version }} --mongodb_setup {{ modb_setup }} > setup_modb_{{ modb_version }}_{{ modb_setup }}.log
58+
59+
- name: Setup Load Running Docker Container
60+
shell: "{{ item }}"
61+
with_items:
62+
- rm -rf ~/modb_{{ modb_version }} || true; mkdir -p ~/modb_{{ modb_version }}
63+
- wget -P ~/modb_{{ modb_version }}/ "https://raw.githubusercontent.com/Percona-Lab/qa-integration/{{pmm_qa_branch}}/pmm_qa/Dockerfile"
64+
- wget -P ~/modb_{{ modb_version }}/ "https://raw.githubusercontent.com/Percona-Lab/qa-integration/{{pmm_qa_branch}}/pmm_qa/mongodb_query.php"
65+
- docker build --tag php-db ~/modb_{{ modb_version }}/ > ~/docker-build_mongodb_load_{{ modb_version }}_{{ modb_setup }}.log || true
66+
- docker rm mongodb_load_{{ modb_version }}_{{ modb_setup }} || true
67+
- docker run --rm --name mongodb_load_{{ modb_version }}_{{ modb_setup }} --network=pmm-qa -v $(pwd):/usr/src/myapp -w /usr/src/myapp php-db composer require mongodb/mongodb || true
68+
69+
- name: Run load on Replica Set Master(PSS)
70+
shell: "{{ item }}"
71+
with_items:
72+
- docker run --name mongodb_load_{{ modb_version }}_{{ modb_setup }} -d -e MONGODB_HOST={{ modb_container }} -e MONGODB_PORT=27017 -e TEST_TARGET_QPS=10 -e TEST_COLLECTION=10 -e TEST_DB=30 --network=pmm-qa -v $(pwd):/usr/src/myapp -w /usr/src/myapp php-db php mongodb_query.php >> setup_modb_{{ modb_version }}_{{ modb_setup }}.log
73+
when: modb_setup == "pss"
74+
75+
- name: Run load on Replica Set Master(PSA)
76+
shell: "{{ item }}"
77+
with_items:
78+
- docker run --name mongodb_load_{{ modb_version }}_{{ modb_setup }} -d -e MONGODB_HOST={{ modb_container }} -e MONGODB_PORT=27017 -e TEST_TARGET_QPS=10 -e TEST_COLLECTION=10 -e TEST_DB=30 --network=pmm-qa -v $(pwd):/usr/src/myapp -w /usr/src/myapp php-db php mongodb_query.php >> setup_modb_{{ modb_version }}_{{ modb_setup }}.log
79+
when: modb_setup == "psa"
80+
81+
- name: Run load on Sharded Clusters Master
82+
shell: "{{ item }}"
83+
with_items:
84+
- docker run --name mongodb_load_{{ modb_version }}_{{ modb_setup }} -d -e MONGODB_HOST={{ modb_container }} -e MONGODB_PORT=27017 -e TEST_TARGET_QPS=10 -e TEST_COLLECTION=10 -e TEST_DB=30 --network=pmm-qa -v $(pwd):/usr/src/myapp -w /usr/src/myapp php-db php mongodb_query.php >> setup_modb_{{ modb_version }}_{{ modb_setup }}.log
85+
when: modb_setup == "sharded"

0 commit comments

Comments
 (0)