Dkron¶
https://dkron.io/basics/installation/
install¶
sudo sh -c "echo 'deb [trusted=yes] https://apt.fury.io/victorcoder/ /' > /etc/apt/sources.list.d/dkron.list"
sudo apt -y update
sudo apt -y install dkron
sudo vim /lib/systemd/system/dkron.service
/lib/systemd/system/dkron.service の ExecStart に --server
を追加
[Service]
User=root
ExecStart=/usr/bin/dkron agent --server
ExecReload=/bin/kill -HUP $MAINPID
sudo systemctl start dkron
Agentの追加¶
https://dkron.io/usage/clustering/
serverノードのコンフィグに、追加したいAgentのIPを追加する。
$ grep -v "^#" /etc/dkron/dkron.yml
join:
- 192.168.122.201
$ sudo systemctl restart dkron
Jobの追加¶
curl http://localhost:8080/v1/jobs -XPOST -d '{
"name": "job1",
"schedule": "@every 60s",
"timezone": "Asia/Tokyo",
"owner": "root",
"owner_email": "root@example.com",
"disabled": false,
"tags": {
"location": "jp_osaka:1"
},
"concurrency": "allow",
"executor": "shell",
"executor_config": {
"command": "/opt/sensu-plugins-ruby/embedded/bin/metrics-curl.rb -u 'http://localhost'"
}
}'
適当に10000ジョブくらい突っ込んだら重くて死にそうになった。
暫定評価¶
- シンプルにコマンドを実行する作りなので、1000件未満のcronなら使えそう
- sensu-pluginをそのまま実行したが、問題なく動作した
- 分散動作するので、Nodesを増やすことで処理はスケールできる
- 例えば 10000 ジョブを60秒インターバルだと、1件当たり 6[ms] の時間しか与えられていない。4並列でも 24[ms] である。
- API経由で取得できるジョブの結果はbase64でエンコードされている
- namespaceのようにテナントを区切れないので、ユーザー単位の管理ができない
- APIのフィルタが貧弱過ぎるので、一部ジョブ結果だけを検索するようなことができない
最終更新日: 2021-06-06 09:29:57