Adding benchmarking and volumes for spinning up new mongo clusters.

This commit is contained in:
Samuel Clay 2021-05-10 13:58:43 -04:00
parent 861254fe96
commit 1b3b42648f
4 changed files with 101 additions and 2 deletions

View file

@ -16,3 +16,4 @@
- {role: 'consul-client', tags: 'consul'}
- {role: 'mongo', tags: 'mongo'}
- {role: 'monitor', tags: 'monitor'}
- {role: 'benchmark', tags: 'benchmark'}

View file

@ -0,0 +1,49 @@
---
- name: Download sysbench and prepare .deb
become: yes
get_url:
url: https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh
dest: ~/sysbench.deb.sh
- name: Prepare .deb
become: yes
shell: cmd=bash /home/nb/sysbench.db.sh
- name: Apt install sysbench
become: yes
apt:
package: sysbench
state: latest
- name: Run sysbench CPU
shell:
chdir: "/mnt/{{ inventory_hostname|regex_replace('db-', '')|regex_replace('-', '') }}"
cmd: sysbench cpu --cpu-max-prime=20000 run
register: cpu
- name: Benchmark cpu results
debug: msg="{{ item }}"
with_items: cpu.stdout_lines
- name: Prepare sysbench disk i/o
become: yes
shell:
chdir: "/mnt/{{ inventory_hostname|regex_replace('db-', '')|regex_replace('-', '') }}"
cmd: sysbench fileio --file-total-size=150G prepare
- name: Run sysbench disk i/o
become: yes
shell:
chdir: "/mnt/{{ inventory_hostname|regex_replace('db-', '')|regex_replace('-', '') }}"
cmd: sysbench fileio --file-total-size=150G --file-test-mode=rndrw --time=300 --max-requests=0 run
register: io
- name: Cleanup sysbench
become: yes
shell:
chdir: "/mnt/{{ inventory_hostname|regex_replace('db-', '')|regex_replace('-', '') }}"
cmd: sysbench fileio --file-total-size=150G cleanup
- name: Benchmark io results
debug: msg="{{ item }}"
with_items: io.stdout_lines

View file

@ -355,13 +355,51 @@ resource "digitalocean_droplet" "db-postgres" {
}
}
resource "digitalocean_droplet" "db-mongo" {
resource "digitalocean_volume" "mongo_volume" {
count = 3
region = "nyc1"
name = "mongo${count.index+1}"
size = 400
initial_filesystem_type = "xfs"
description = "Storage for NewsBlur MongoDB"
}
resource "digitalocean_droplet" "db-mongo-primary" {
count = 3
image = var.droplet_os
name = "db-mongo${count.index+1}"
region = var.droplet_region
size = var.droplet_size
size = var.mongo_droplet_size
ssh_keys = [digitalocean_ssh_key.default.fingerprint]
volume_ids = [element(digitalocean_volume.mongo_volume.*.id, count.index)]
provisioner "local-exec" {
command = "/srv/newsblur/ansible/utils/generate.py; sleep 120"
}
provisioner "local-exec" {
command = "cd ..; ansible-playbook -l ${self.name} ansible/playbooks/setup_root.yml"
}
provisioner "local-exec" {
command = "cd ..; ansible-playbook -l ${self.name} ansible/setup.yml"
}
}
resource "digitalocean_volume" "mongo_secondary_volume" {
count = 3
region = "nyc1"
name = "mongosecondary${count.index+1}"
size = 400
initial_filesystem_type = "xfs"
description = "Storage for NewsBlur MongoDB"
}
resource "digitalocean_droplet" "db-mongo-secondary" {
count = 3
image = var.droplet_os
name = "db-mongo-secondary${count.index+1}"
region = var.droplet_region
size = var.mongo_secondary_droplet_size
ssh_keys = [digitalocean_ssh_key.default.fingerprint]
volume_ids = [element(digitalocean_volume.mongo_secondary_volume.*.id, count.index)]
provisioner "local-exec" {
command = "/srv/newsblur/ansible/utils/generate.py; sleep 120"
}

View file

@ -22,3 +22,14 @@ variable "droplet_os" {
type = string
default = "ubuntu-20-04-x64"
}
variable "mongo_droplet_size" {
type = string
default = "m-4vcpu-32gb"
}
variable "mongo_secondary_droplet_size" {
type = string
default = "m-2vcpu-16gb"
}