2014年03月18日

スイッチとその辺のハブの違い

データセンターの機材を収めるラックの中身を見ていると、電器店に売っている機材とはちょっと違う大きさの機材が収められています。
ポート数も24ポートとか48ポートとかすごい数なんですが、値段もすごい値段です。電器店に売っているスイッチは高くても2万円ぐらいですが、データセンターにおいてあるやつは安くても10万円もするものです。

高い!

価格には保守体制なども関係してきますが、持っている機能も電器店に売っているスイッチとは異なります。
一般的に電器店に売っているスイッチは、ブロードキャストで受け取ったパケットをそのまま全ポートに流しているだけです。
これはちょっと頭の悪い作りです。なぜならLANの仕組み上、異なる2つ以上のパケットが同時に流れることは許されていないからです。衝突が発生するとランダム時間待って再送信となります。接続するポートが多くなればなるほど、指数関数的にLANの性能が落ちることになります。
これに対応したのがデータセンターで使っているインテリジェントスイッチ(の化け物)です。
インテリジェントスイッチはconfigを設定でき、不必要なパケットが流れないように設計できます。つまり、簡単なプログラムをスイッチに入れることができるんですね。

さて不必要なパケットをどうやって判断しているかってことですが、それを知るには「VLAN」というものを知らねばなりません。
前回、ホストには8ポートあるという話を書きましたが、実質的にネットワークを必要としているのは各ホストの中にある仮想マシンです。でも仮想マシンは1つのホストの中に多数あり、必要なネットワークアドレスも多数あります。1台のホストのリソースを有効に活用するには複数のシステムやネットワークを1つのホストに収める必要があるのです。
その場合、LANをシステムごとに分けなければなりません。セキュリティ的にとか、性能的にとか理由は様々ですが。仮想マシンのネットワークを分けるにはVLAN IDというものを採番します。仮想のLANにつけた番号のようなものです。このVLAN IDが同じ仮想マシン同士はネットワークを同じに持ち、1つのネットワーク・システムとして機能するのです。

さて、ここでスイッチの話題に戻りますが、不要なパケットが流れないようにするにはVLAN IDで接続ポートを制御してあげればいいわけです。複数のネットワークが接続していたとしてもルータのように必要なパケットだけ送信するように設定できます。

2014年03月17日

信じられないNICの装備数

データセンターにおいてあるホストを見ると信じられない数のネットワークインターフェースカードが刺さっている。
アプリエンジニアでもネットワークの冗長化ぐらいは知っているので、2つまではわかる。でも、目の前にあるNICは8ポートある。データセンターを知らない私でも8つも冗長化しないことぐらい知っている。NICはそんなに故障率高くない。

この秘密を知るにはデータセンターの業務にも触れなければならない。

まずネットワークはセキュリティを確保しなければならない。簡単にいえば、インターネット上から接続できるアドレスは、管理で接続するネットワーク上のアドレスと別にしなければならない。そうしないとインターネットからホストにアクセスされてしまい、万が一OSや設定上の不備があった際にホストを乗っ取られてしまうからだ。ホストが乗っ取られるだけなら被害も限定的だが、管理ネットワークに入り込んでしまうと、管理ネットワーク上からアクセスできる別のホストやサービスに入られてしまう。ネットワークに詳しくない私でもそれはまずいことはわかる。

次に、ハード障害に備えてホストで稼働する仮想マシンを別のホストに移す必要が出てくる。その際に移動するデータ量は膨大なのでインターネットに接続している線を使用するわけにはいかない。ホストからインターネットに接続している線はあくまでもインターネットに関する情報のみのやりとりに抑えておかないと、すぐに反応がなくなってしまう。

最後にデータセンターではホストとストレージは別々であることが普通である。これは可用性を高めるための手法なのだが、私はおいおい重要性を知ることになる。

ここまでに必要になったポート数をまとめると以下のとおりである。

1)インターネット接続
2)管理ネットワーク
3)ホスト間接続
4)ストレージ接続

上記の4ポートが冗長化されるため、8ポート必要になるのだ。

ただし、これはハードウェア上の構成だけであり、本当のネットワークポート数を知るのはこのあとのことであった。


dcnet.png

2014年03月14日

ちょっと前にネットワーク会社へ転職したアプリエンジニアの話

 ちょっと前にネットワーク会社へ転職しました。
 それまでの私の立ち位置はアプリエンジニアで、顧客の要件をまとめ、要件定義書をまとめる役割でした。

 設計書なんかはベンダーに作ってもらっていたため、正直なところネットワークの知識やストレージの知識は皆無に等しいです。

 しかし!

 自分のいた部署が親会社に吸収されることになりました。労働条件は親会社のほうがいいし、給与も吸収される前に、ちょっと上げていただいて、それを親会社が引き継いだため、ちょっとだけ上がりました。
 とここまでは良かったのですが、親会社の主な事業がネットワーク・インフラだったために、まったく知識のない業務のマネージメントを行うことになってしまいました。
 
 自慢じゃないですが、私はコミュニケーション・スキルにも不安があります。いや、要件定義書をまとめるのとかコミュニケーション・スキルが重要だろうと思われるかもしれませんが、顧客は大抵1人だし、ベンダーも大抵1~2人の少人数でしか打ち合わせをしません。
 つまり、長くお仕事をしていると多少コミュニケーション・スキルに不安があったとしてもツーカーの中になれるわけです。何をすればよいかも定型化してきますし、礼節の正しさを保っていれば意外と務まる仕事では有ります。
 それが、今度はプロジェクトを率いて少なくないプロジェクトメンバーや関係部署と調整作業を行わなければならなくなりました。コミュニケーション・スキルがない私には複数人数との調整が一番きつい。その上に自分の知識のない業務のためきつさはさらに倍に感じました。

 そんな中、データセンターやネットワーク・インフラの業界では基本なこと過ぎて、最初のインストールすらなかった知識に気がつくことになります。

「え? お前、そんなことも知らなかったん?」

 って言われるような知識って意味です。
 いや、アプリエンジニアがどこまで常識として知っているか私は知らないですが、アプリエンジニアで知っている人がいたら、その人はかなりの勉強家だと思います。だってレンタルサーバーやベンダー提供のサービスを使っている限り、知らなくていいことですもん。
 あるいは顧客からかなりのパフォーマンスを求められて、チューニングのためにインフラやハードの方までチェックしたアプリエンジニアもいるかもしれませんが、そんな大規模システムを担当する人も世の中そうそう多くないのではないかと思います。
 各いう私はフロントサーバーなんてせいぜい2台、バックエンドもDBサーバーが2台のシステムがメインで、多くても10台ぐらいのサーバーのプロジェクトしか経験がありません。

 これから書こうと思っている知識は上記とちょっと単位が異なりますが、ホストだったら100台以上の話になります。

 びっくりしました?

 最初に聞いた時はびっくりしましたが、中に入って少しずつ知識が増えるたびに更にびっくりすることになると思います。

 ネットワークエンジニアはびっくりしないでしょうけど、「え? 常識じゃないんだ・・・」と一般常識との差を知っていただければ幸いです。