zuntan02のはてなブログ

備忘録的なものです。時々職場の技術者ブログにも転記してますが、メインはこちらで。

オンプレミスからS3にバックアップするときにアップロードの帯域制限したい

【問題】

aws s3 sync で5gb程度のdumpファイルをS3にバックアップしていたのだけど、このとき帯域を使い切ってしまうらしく、毎朝3時にデータセンターからping監視アラートが飛んでくる羽目に。

【対策】

aws cliのconfigでs3の帯域制御を設定する
dev.classmethod.jp

# 帯域制限設定

aws configure set default.s3.max_bandwidth 10MB/s

# 確認
cat /root/.aws/config

[default]
aws_access_key_id=hogehoge
aws_secret_access_key=fugafuga
region=ap-northeast-1

s3 =
    max_bandwidth = 10MB/s


★以下はtrickleで解決しようとしたときのメモ。
 念のため残しておきます。。
【対策詳細】
trickleについてはこちらが詳しい。
http://apatheia.info/blog/2013/01/01/network-restriction-using-trickle/
「-d nで n KByte/sec にダウンロードが制限」
「-u nで n KByte/sec にアップロードが制限」
とのこと。

trickleのインストール

CentOSへのインストールはepelを使用

yum install trickle --enablerepo=epel

aws s3 sync コマンドにtrickleを追記

[before]
aws s3 sync /hoge/fuga s3://hogehoge/fuga --delete

[after]
trickle -s -u 5000 aws s3 sync /hoge/fuga s3://hogehoge/fuga --delete

# -sオプションについて
なお、“trickle: Could not reach trickled, working independently: No such file or directory” エラーには明示的に

  • s(standaloneモード)をつけることで抑制できる。

参考:https://siguniang.wordpress.com/2015/05/17/throttle-network-bandwidth-per-program-with-trickle/

【現状】
trickle -s -u でやるとCPUの使用率が100%に、ロードアベレージが跳ね上がる等問題がありそうだったので
他の作戦を考えつつ様子見