mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Adding benchmarking and volumes for spinning up new mongo clusters.
This commit is contained in:
parent
861254fe96
commit
1b3b42648f
4 changed files with 101 additions and 2 deletions
|
@ -16,3 +16,4 @@
|
|||
- {role: 'consul-client', tags: 'consul'}
|
||||
- {role: 'mongo', tags: 'mongo'}
|
||||
- {role: 'monitor', tags: 'monitor'}
|
||||
- {role: 'benchmark', tags: 'benchmark'}
|
||||
|
|
49
ansible/roles/benchmark/tasks/main.yml
Normal file
49
ansible/roles/benchmark/tasks/main.yml
Normal 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
|
|
@ -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"
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue