FJCT Tech blog

富士通クラウドテクノロジーズ公式エンジニアブログです

富士通クラウドテクノロジーズ

FJCT/Tech blog

ニフクラの物理ネットワークを支える人たち

この記事は 富士通クラウドテクノロジーズ Advent Calendar 2017 18日目の記事です。

17日目は@umiiiiinsさんの「gitlab-ciとansibleでgolangのデプロイ環境を作る」 でした。Ansible よりも gitlab-ci 周りが気になったので、記事を参考に私も環境を作ってみました。普段から活用していきたいものです。

さて、今回はネットワークを題材にした記事になります。


目次


はじめに

ニフクラの物理ネットワーク周りの構築や運用を担当している森本康介です。

前回はCONBUのプロジェクトメンバーとしての活動記録を書きましたが、今回は ニフクラの物理ネットワークを支えるエンジニアの役割やおもしろさ についてブログに残したいと思います。

tech.fjct.fujitsu.com

誰に向けて書くのか?

  • ニフクラの中の人に興味がある人
  • 物理ネットワークエンジニアが何を考えているのか知りたい人
  • 対外的にニフクラの物理ネットワークエンジニアについて説明をしたい人

※ ネットワークエンジニア以外に向けた記事であるため専門用語を控え、実践的な内容は省いています。


ネットワークエンジニアの役割

「これとそれを接続して互いにやり取りできるようにしよう」

上記のフレーズは「Head First Networking - O’Reilly Media」という書籍の献辞にあたるページに記されている一文です。

私はこれにネットワークの役割は集約されていると思います。

情報通信技術においては上記の「これ」や「それ」がサーバやストレージなどに置き換わり、それらの “つながり” を提供することがネットワークエンジニアの役割です。

ニフクラにおけるネットワークエンジニア

ニフクラではサーバやストレージなどの「物理的」なリソースを仮想化技術によって抽象化し、好きなときに好きなだけ使える柔軟なサービス提供を行っています。

私はニフクラの物理ネットワークを支えるチームに所属しています。

物理ネットワークチームはその名前からネットワーク機器の設置やケーブルの配線、接続などのみを管理していると思われがちですが、そんなことはありません。お客様がサービスを利用する上で、通信状況を気にされずに利用して頂けるようにさまざまな観点から設計を行い、構築し、維持していくことがメインの仕事になります。

物理ネットワークチームの担当例

  • 新規リージョン・ゾーンの構築
    • 経営方針を含めて、全社的なあらゆる部門と会話しつつ機器の選定や導入を進めます。
      ※ リージョン・ゾーンはリソースの収容単位です。リージョンは地理的に離れた拠点で、ゾーンは障害発生時の影響を限定するためにリージョン内でさらに分割されたリソースの集合を指します。
  • 物理的なネットワークリソースの管理
    • 物理機器の利用状況やデータセンタ内のスペースなどを管理し、必要があればその物理機器の調達などを実施します。
  • 論理的なネットワークリソースの管理
  • 社内からのネットワーク関係依頼対応
    • ニフクラ提供に関わる社内からの依頼を物理機器設定などを行うことで対応

つながり続けるネットワークの裏側

「ネットワークはつながり続けるものだ」という認識はないでしょうか。

その通りです。ネットワークはつながり続けています。

ネットワークにとって「つながりが切れる」ことは、最も避けなければならない事態です。

ネットワーク機器は単体で多くのサーバやストレージにつながりを提供しています。そのため、ネットワーク機器が故障してしまうと、つながっているサーバやストレージの通信が途絶え、結果として影響を受ける利用者の人数はサーバやストレージの単体故障時と比べて数倍~数十倍にも膨れ上がるケースがあるからです。

しかし物理的に存在するものは、いずれ壊れるはずです。ネットワーク機器やケーブルも例外ではありません。

なぜ、ネットワークはつながり続けるのでしょうか。

それは、物理ネットワークチームが、たとえ物理的に存在する機器やケーブルが壊れたとしても利用者から見るとつながり続けているように見せているからに他なりません。

物理ネットワーク設計の検討

物理ネットワークチームが、つながり続ける状態を実現するために考えることの一例として最近行った物理ネットワーク設計の検討会を挙げます。

検討会は「インターネット側とニフクラとを接続している箇所のリソース増強」に関するものでしたが、中でもデータを意図したように流すための論理設計が議題となっていました。

f:id:ma2y326:20171215213847p:plain
検討会でのネットワーク構成簡略図

ネットワーク機器においては同じ役割を持てる機器を2台以上用意し、一部を待機状態として設置しておく場合があります。これを Active-Standby 構成と呼びます。

今回の場合はニフクラ側に2台ある機器のうち1台をActive機、もう1台をStandby機としています。正常時には、ほぼ全てのデータがActive機を流れることになります。

また、ニフクラ側とインターネット側とを結ぶケーブルは各機器からは2本ずつ伸びており、これらは2本1組でデータを分散して流しています。

「Active機とインターネット側とを結ぶケーブルのうち1本が使用不可能になった場合、データをどのような経路で流したいか」

上記は議題の中でも、つながりを維持するために検討した項目の1つです。

これに対する結論は「Active機のケーブル1本が使用不可能になった場合でも、残るもう1本のケーブルで2本分のデータを流す。」でした。

これは「データの通り道が狭くなることを許す」ということです。(これを「縮退運用を許容する」と呼びます。)

そのようなことをしても良いのでしょうか?

Standby機のケーブルを1本使うことは出来ないのでしょうか?

「Active機とStandby機を結ぶケーブルを流れるデータ量を増加させたくない」

Active機とStandby機のケーブルを1本ずつ使おうとすると、一時的にデータがActive機とStandby機を結ぶケーブルを流れることになります。実は、Active機とStandby機を結ぶケーブルには既に他機器からデータが流れ込む想定となっていました。

今回の結論は運用開始後に最悪の状況が発生した場合、「縮退運用」と「Active機とStandby機間を流れるデータ量増加」のどちらを許容できるのか?が考慮されたものだったのです。

「縮退運用を許容する」とは、「データの通り道が狭くなったとしても、まだ十分な道幅を確保できている」から行えることです。流れるデータ量を支えきれなくなっても良いという意味ではありません。

このようなデータの流れを考慮しておくことでインターネット側とのつながりを維持することがある程度可能になります。

しかし、以下のような場合はいかがでしょうか?

  • Active機とインターネット側とを結ぶケーブルが2本とも使用不可能となった場合は?
  • Active機とStandby機とを結ぶケーブルが使用不可能になった場合は?
  • Active機あるいはStandby機への電源供給が止まった場合は?
  • インターネット側からもらいたくないデータが機器に流れ込んだ場合は?
    ...
    ..
    .

つながりを維持するためにはネットワークの設計段階から、つながった後のあらゆる場面を考慮しておかなければなりません。

もしも致命的な考慮の漏れがあった場合、「つながりが切れる」という最悪の事態に発展しかねないのです。

物理ネットワークを扱うということ

上記した「設計」は、ニフクラの物理ネットワークエンジニアとしては担当範囲のごく一部です。

実際には、今回書ききれていない構築や運用にかける時間のほうが長く、それらにはまた違った難しさがあります。

物理ネットワークエンジニアは、求められるつながりを考え、つながりを維持するためにデータの流れを理解し、つながった後を想像し、物理と論理の構成図を描き、 ネットワークを実現します。

「過去に考えられたネットワークへの理解」や「今から自分の考えを反映したネットワークの実現」に苦しむことも少なくありません。それでも、つながり同士が無数に広がり、そのつながり1つ1つに大きな価値を持つ物理ネットワークを扱うことは、おもしろさもやりがいもある領域です。


おわりに

ここまで目を通して頂いて、ありがとうございました。

本記事は、自分が入社する前に「欲しかったなぁ」と思う記事を想像しながら書きました。

ニフクラの物理ネットワークを支えるエンジニアが何を考えて動いているのか。

少しでも想像できるような記事になっていれば嬉しく思います。


明日は@FukMo10さんの技術インターンに関する記事になります!お楽しみに