GCP上にインスタンスを立ち上げて、簡単にredmine_full_text_searchを試すことができる環境を構築できるようにしました。
Redmineでもっと高速に全文検索する方法で使用したベンチマーク環境を構築するためのスクリプトです。 今後もredmine_full_text_searchをバージョンアップしたとき、性能の変化を簡単に調べれられるように作りました。
使い方
TerraformとAnsibleを入れてコマンドを叩くだけです。
コマンドを実行する前に、APIキーを作成しておく必要があります。
$ git clone https://github.com/okkez/redmine_full_text_search-benchmark.git
$ cd redmine_full_text_search-benchmark
$ terraform init Terraform/
$ terraform apply Terraform/
$ ./generate-hosts.rb
このまま ansible を実行すると、SSHのホスト鍵のチェックが実行されて、対話的な操作が必要になるので対話的な操作が不要になるように準備します。
$ for h in fluentd redmine-mariadb redmine-mroonga redmine-postgresql redmine-pgroonga; do \
gcloud compute --project "YOUR PROJECT" ssh --zone "YOUR ZONE" "fluentd" --command "echo"; done
また、ansible が使うUserKnownHostsFileにgcloudコマンドが生成するファイルを指定します。 ansible/ansible.cfg に以下の内容でファイルを作成しておきます。
[ssh_connection]
ssh_args = -o ControlMaster=auto -o ControlPersist=60s -o -o UserKnownHostsFile=~/.ssh/google_compute_known_hosts
注意 DBのダンプファイルはリポジトリに含めていないので、各自DBのダンプファイルを用意してください。
-
ansible/roles/mariadb/files/benchmark-mariadb.dump.sql.xz
-
ansible/roles/postgresql/files/benchmark-postgresql.dump.sql.xz
最後に ansible-playbook コマンドを実行します。
$ cd ansible
$ ansible-playbook -i hosts playbook.yml
全部で20分もあれば、環境構築が終わります。
今後やりたいこと
今はベンチマーク用なので内部ネットワークからしかアクセスできないようにしてありますが、httpとhttpsは外部からアクセスできるようにして手元のブラウザからでも簡単に動作を確認できるようにしたいです。 また、ベンチマーク用のデータもどこかにアップロードしたものを簡単に使えるようにしたいです。
測定結果をFluentd経由でPostgreSQLに溜めてあるのですが、これをいい感じに可視化したいです。
-
DBのダンプファイルはxzで圧縮してもサイズが大きいのでリポジトリに含めていません ↩