The test environment consists of a MongoDB replica set that consists of three database-host virtual machines. The VMs are installed on the PowerStore X appliance. Another VM is configured to host the YCSB benchmark tool. The YCSB VM resides on a different VMware cluster that uses a different storage appliance.
Since the last publication, the test environment has been updated to PowerStoreOS 3.2, vSphere 7.0.3, Rocky Linux 8.3, and MongoDB Enterprise Edition 6.0.
Figure 9. Test environment
Table 3 summarizes the PowerStore X appliance hardware specification that is used in this paper.
Table 3. PowerStore X specification used in the test
Specification | Detail |
Model | PowerStore X model |
NVMe SSD configured | 21 x 1.9 TB drives in the base enclosure |
System memory | 2.6 TB |
Mezzanine cards | 2 |
I/O modules | 4 |
25 Gb iSCSI ports | 8 total; 4 active |
On the PowerStore X model in the test, each node has two 25 Gb connections for vDS uplinks and one 1 Gb connection for the management network. A new distributed port group is created on the vDS and assigned a different VLAN to allow guest VMs network communication. All MongoDB database host VMs are assigned to the same distributed port group in the test. The PowerStore X appliance is connected to a Dell Networking 5148F-ON series switch.
For our tests, we installed three Rocky Linux database host VMs directly on the PowerStore X model appliance. This unique feature allowed us to consolidate infrastructure and bring applications closer to storage resources. Table 4 summarizes the database host VM specification.
Table 4. Database host VM specification
Specs | Value |
vCPUs | 16 |
Memory | 128 GB |
Virtual NICs | 1 x 10 Gb |
Virtual SCSI controllers | 2 |
Virtual disks |
|
Guest operating system | Rocky Linux 8.6 |
Another Rocky Linux VM is configured to host the YCSB software. This VM resides on a vSphere infrastructure cluster that is separate from the PowerStore X model appliance. Table 5 shows the YCSB host VM specification.
Table 5. YCSB host VM specification
Specification | Value |
vCPUs | 32 |
Memory | 128 GB |
Virtual NICs | 1 x 10 Gb |
Virtual SCSI controllers | 2 |
Virtual disks | 1 x 50 GB for the operating-system drive |
Guest operating system | Rocky Linux 8.6 |
YCSB is an open-source benchmark tool used for testing the performance of various databases, including MongoDB, Cassandra, HBase, and many more. The tool is used to generate the test data in the MongoDB database and to run various workloads against the database. You can download the software from https://github.com/brianfrankcooper/YCSB.
YCSB requires Apache Maven, Java, and Python. You can download Apache Maven software from https://maven.apache.org/. You can install Java jdk and Python directly from the operating system repository.
The following steps outline the process to install the YCSB software on the YCSB host VM. Perform the following steps as root user on the YCSB VM.
# yum install java-1.8.0-openjdk*
# yum install python2
# alternatives --set python /usr/bin/python2
Note: YCSB does not support Python 3 yet.
# cd /usr/local
# curl -O --location http://mirrors.advancedhosters.com/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
# tar xfz apache-maven-3.6.3-bin.tar.gz
# ln -s /usr/local/apache-maven-3.6.3 /usr/local/maven
export M2_HOME=/usr/local/maven
export PATH=${M2_HOME}/bin:${PATH}
# mvn -v
Apache Maven 3.6.3 (cecedd343002696d0abb50b32b541b8a6ba2883f)
Maven home: /usr/local/maven
Java version: 1.8.0_342, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.342.b07-2.el8_6.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "4.18.0-372.19.1.el8_6.x86_64", arch: "amd64", family: "unix"
# cd /usr/local
# curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
# tar xfz ycsb-0.17.0.tar.gz
# ln -s /usr/local/ycsb-0.17.0 /usr/local/ycsb
For more information about YCSB, read the wiki articles on https://github.com/brianfrankcooper/YCSB/wiki.
Note: The mongodb binding files are already in this archive. There is no need to install the binding files separately.