全世界300以上の都市にまたがるデータセンターのシステム再起動を自動化するため、Cloudflareはどのような最適化に取り組んでいるのか、公式ブログで解説した。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
世界100か国以上、300以上の都市にデータセンターを運用するCloudflareのグローバルネットワークは、ダウンタイムゼロで継続的に更新されるよう構築されている。だが、サーバの再起動が必要になる場合もある。そのため自動的に再起動する仕組みも用意しているという。
Cloudflareは公式ブログでシステム再起動に対してどのような仕組みを導入し、最適化を進めているか解説した。
Cloudflareは顧客のトラフィックに混乱が生じないよう、幾つかの仕組みを用意している。その1つとしてデータセンター内のサーバに負荷を分散させる社内ロードバランサー「Unimog」があり、サーバが定期メンテナンスのために停止した場合でも中断が発生しない仕組みを構築している。
SREチームは顧客のトラフィックが最も少ないときにのみデータセンターでの再起動を許可することで、リスクをさらに軽減している。各データセンターでメンテナンスの時間帯(メンテナンスウィンドウ)が定められており、通常は数時間の間、再起動などのメンテナンスが許可される。メンテナンスウィンドウをいつにするか決定するプロセスの自動化にも取り組んでいるという。
データセンター内のロードバランシングフレームワークにより、トラフィックに影響を与えることなく、1日中再起動をさせるスケジュールを組むことは技術的には可能だが、Cloudflareでは運用上、データセンターごとに特定の時間帯に再起動させることを義務付けている。大規模なデータセンターで1日に全てのサーバが再起動されるのを避けるためのレートリミッターとして機能すると同時に、再起動中に発生した予期せぬ問題の修復をより簡単にするという。
メンテナンスウィンドウをいつにするか決める最も合理的な方法として挙げられるのが、データセンターのトラフィックが少ないタイミングを選ぶことだ。しかし、トラフィックの傾向は常に変化するため、トラフィックの低い時間を選択することは困難であり、自動化すべきと判断した。
トラフィックの少ない時間帯をどう特定し、メンテナンスウィンドウの作成と維持をどう自動化するか――Cloudflareでは、データセンターのCPUの利用パターンを2週間にわたって観測し、サインフィッティングをすることにした。サインフィッティングはデータの周期性や周期的な変動を把握する手法の1つで、以下の図に示すように、計測したデータをsin波に当てはめる方法だ。
sin波を使用すると、最も一般的な谷を特定できる。Cloudflareでは、谷が発生する期間をメンテナンスウィンドウの候補として利用することにした。
任意のデータセットを曲線に適合させるために、Pythonのscipy.optimize.curve_fit関数を使用した。結果をより正確にするために、初期推定値として任意の値を含めた。
Cloudflareは、Pythonで実装する方法の基本的な例や仕組みを次のように解説した。
timestamps = numpy.array(timestamps) cpu = numpy.array(cpu) guess_freq = 1 / 86400 # 24h periodicity guess_amp = numpy.std(cpu) * 2.0**0.5 guess_offset = numpy.mean(cpu) guess = numpy.array([guess_amp, 2.0 * numpy.pi * guess_freq, 0.0, guess_offset]) def sinfunc(timestamps, amplitude, frequency, phase, offset): return amplitude * numpy.sin(frequency * timestamps + phase) + offset amplitude, frequency, phase, offset, _ = scipy.optimize.curve_fit( sinfunc, timestamps, cpu, p0=guess, maxfev=2000 )
Cloudflareは今回の取り組みの成果として、主に3つのタイプがあると分析している。
このタイプは顧客トラフィックを処理しないテストデータセンターで一般的だ。潜在的な問題を早期に発見するために、別のスケジュールを検討し、より高速な再起動が必要になる。
このタイプのデータセンターはsin波のトラフィックパターンが見られるものの、サイクル内に幾つかの小さな谷がある上、少しゆがんでいるため、精度は低下してしまう。
明確なパターンと優れた適合性を備えたデータセンターの例。これは理想的なシナリオであり、多くのデータセンターが該当した。
Cloudflareは今後、再起動だけではなくさまざまな取り組みに適用できるよう改善を続けていく予定としている。
Copyright © ITmedia, Inc. All Rights Reserved.