2024.12.19
システムの穴を運用でカバーしようとしてミス多発… バグが大量発生、決算が合わない状態から業務効率化を実現するまで
リンクをコピー
記事をブックマーク
安藤格也氏:「ネットワークの運用の取り組み」について発表させていただきます。
最初に自己紹介をさせていただきます。
自分は2011年新卒で入社し、決済チームで開発と運用を実施してきました。そのあと、ネットワークの勉強がしたかったため、弊社の特徴である「ジョブチェン」というシステムにより、今はデータセンターネットワークで自動化周りを担当しています。最近ではGolangやPythonをふだんの仕事で利用しています。
今回は、どちらかというとネットワークの構成ではなく、「ネットワークの運用」についてのお話です。
まず、ネットワークの取り組みについてお話しさせてください。
最初に、Yahoo! JAPANのネットワークの規模は年々拡大するビジネスに伴い、今では9,000台ほどになりました。また、ネットワーク機器のベンダー数はだいたい10数社ほどで、大手のネットワーク機器ベンダーなどを利用しています。
また、ネットワークの種類も年々増加しています。本番環境や開発環境以外にセキュア環境、プロダクションでありながら社外では使えないネットワークや子会社のものを作ったりと、さまざまな要件に従ってネットワークの種類が増えています。
ネットワークの種類が増えるにつれ、ネットワークの複雑化が課題となります。1ヶ月あたりのネットワークの作業依頼数は4,000件ほどで、ネットワーク以外にDNSやNTPなども担当しています。
それを今は開発・運用者で30名ほどでやっていて、構築・運用・障害対応・検証などをすべて実施しています。
オペレーションの種類は、ネットワーク機器の構築では実際にデータセンターに行って、機器を設置し、配線を行い、設定を入れるといった最初の物理作業も実施しています。
こちらの右側の図は、FacebookのBackpackを実際に設置している図です。他に、ロードバランサーなども構築していて、こちらに関しても実際にデータセンターで設置しています。
設置したロードバランサーのVIPの作成・削除を行い、そのたびに細かい初期設定や手順書を作っています。
このようにネットワークの種類が増えたり、機器の種類が増えたり、オペレーションがあったりと年々複雑化してきていることへの対処として、弊社は利用するネットワークの種類やネットワーク機器の種類を減らそうといった取り組みや自動化を推進してきました。今回、そのうちの「運用の自動化」についてお話をさせていただきます。
自動化と言っても、まずネットワークがどうなっているかについてのお話です。
こちらは概略図です。
実際にインターネットからこちらに入ってきたものがBorder Routerのところに行き、そのあとに枠線で囲ってあるところのデータセンター内のネットワークに入ってきます。今回はその部分に関してお話します。
先ほど神尾から少し話がありましたが、トラフィックの流れが今と昔で変わってきています。昔はユーザーからリクエストがあり、サーバから返して終わる縦の通信が重要でした。
今では、実際にストレージのアクセスはもちろん、サーバ間・API間の通信が非常に増えていて、横の通信が増えているのが現状です。
それに対するネットワーク構成がこちらの図にも書いてあるとおり、Clos Networkです。
こちらはGoogle、Facebook、AmazonなどといったOTTなどが実際に使っているネットワーク構成で、弊社は現在こちらに移行中です。
先ほどとなにが大きく変わったかというと、L3のレイヤーがトップオブラックのLeaf Switchのところまで降りてきているのが特徴です。古いネットワークではCore SwitchのところがL3の境界だったのですが、CLOS NetworkトップオブラックであるLeaf Switchのところまで降りてきています。これにより、L2ループを考える必要がなくなりUPLINKをフル活用できるようになっています。
この詳細に関しては、弊社の村越がJANOG38で発表しましたので、そちらをご参照いただけると幸いです。
弊社の自動化戦略に関しては、まず古いネットワークと新しいネットワークとで戦略を変えようという方針で進めています。なぜかといいますと、古いネットワークでは古い機器がとても多く、実際に利用できるAPIの数が少ないからです。それに対しClos Networkでは新しい機器を使っているので、今の時代にあったAPIを利用できます。
そのため、「古いネットワークは自分たちで内製して努力して進めていこう。新しいものに関してはOSSの自動化ツールなどを使っていこう」ということで進めていきました。
自動化にもコストがかかるため、古いネットワークでは自動化を諦めた方がいいんじゃないかという話もありました。ただ、古いネットワークのオペレーションも数多くあるため、そちらもがんばってみました。
最初に話をさせていただきましたが、マルチベンダーを利用していることに起因する問題点がございます。まず簡単に実装しようと思っても、抽象化を進めなければいけない点です。
こちらがその自動化をしていこうと決めたときの、OSごとのAPIをまとめた表です。例えばCiscoさんのIOSではSSHでCLIから情報を取得する以外のすべがありませんでした。
右側の黒い画面は実際にCLIで取っている情報です。ご覧のとおり、構造化されている情報ではないので人が見るには見やすいのですが、プログラムから見るとするとすごく扱いづらい情報です。
NXOSだとAPIはNetconfでとれます。NetconfはSSHのサブシステムを利用し、そこにXMLを流して情報を取得するプロトコルです。
Juniper JUNOSもNetconfが使えます。Arista EOSはAPIで取得して、Brocade NetIronはCLI。といった形で進めていました。しかし、実際にネットワークを抽象化していった中で変わったのが右下となります。
結局、NetconfはXMLの情報を扱えますが、XMLの中身が右上の方に、CLIでそのまま叩いたものとまるっきり同じような形で取れてしまい「なんのためのXMLなのか?」みたいな話もあり、いろいろ試行錯誤がありました。
その結果、「結局XMLで取っても構造化されないんだったら、もう最初からXMLで取るのはやめよう」といった話も出たため、CLIで取るものをベースに作っていきました。
それぞれの機器に対して情報取得方法が決まったので、そこから取れる情報を共通モデルとして定義できました。
左側のSphinxのドキュメントに関しては、先ほどの結果を実際にオブジェクト化したものです。
このようにコアとなる考え方のみ定義していて、できるだけすべてのOSで扱えるものを吟味してきました。それで重要なのが、元々のデータ構造を厳密に意識しすぎず、自分たちの処理で必要ものだけに抑えるようにしました。
そうして作っていったものを利用し、実際にオペレーションを自動化していきました。
運用者がコマンドを実際に実行してネットワーク機器に設定を入れたり、Jenkinsからコマンドを実行して設定を入れています。どちらかというと運用者がやるのではなく、Jenkinsに処理させています。
こちらの詳しいことに関してはJANOG40で発表しましたので、そちらを参照していただけますと幸いです。また、監視でPrometheusをフルに活用している話もありますので、Prometheusに興味がある方はぜひこちらをご覧ください。
これは最初にお伝えしたオペレーションの種類です。
これらの内製ツール推進後は、このように赤く塗ったところが実際に自動化ができるようになったところとなります。
また、今回説明していないZTP(ゼロ・タッチ・プロビジョニング)というものでも自動化を進めているため、ネットワーク機器の構築についても自動化されています。
右側は、JenkinsのPrometheusプラグインで数字をとり、Jenkinsで実際に動いているビルド数を図で示したものです。多く自動化することができました。ここまでが内製ツールの説明です。
次はClos Networkの自動化の話に移ります。Clos NetworkではAnsible・Cumulus・RFC5549を組み合わせた話です。
まず用語の説明をさせていただきます。Cumulusとは、ホワイトボックススイッチ向けのLinuxディストリビューションです。ほかのネットワークベンダーでもLinuxベースに動いているものはありますが、よりLinuxを使っているように利用できるのがCumulusの特徴です。
RFC5549は、IPv6のリンクローカルアドレスを使用し、IPv4の経路を広報することができます。
CumulusLinuxは、よりシンプルに設定を記載することができ、AS番号も省略することができるため、ノードごとのneighborのアドレス、リモートASを記載する必要がありましたが、それが不要になりました。結果として、機器ごとの設定がとても削減され、設定が容易になりました。
こちらがAnsibleのPlaybookになっていて、ご覧のとおりとてもシンプルなんですね。インターフェースの設定は/etc/network/interfacesで設定できて、そのあとにネットワーキングをリロードします。
ルーティング設定に関しても、/etc/frr/frr.confで設定できるので、テンプレートをコピーするというとてもシンプルなPlaybookで済みました。
また、Playbookでの設定が正しいことを保証することとして、CIを回しました。
Cumulusでは、試しに利用したり、テストで利用することができるCumulusVXというVirtual Applianceがあり、ネットワークを作ります。そこにAnsibleで設定を流して、設定が正しいことを検証できます。
これを実行してみて悪かった点は、ネットワークを1から作っていくため、テストの速度が少し遅かったかなというところでした。
良かった点は、今までのネットワーク機器においてなかなかCIを回せない環境でした。というのは、ハードウェアが必要になってくるからですが、そこができるようになったのはとても良かったと思います。
また、Ansibleでyamlファイルを作るだけなので、プログラミングが苦手なネットワークエンジニアでも自動化に参加しやすくなったと言えるでしょう。
また、機器ごとの変数が減ることによって設定がとてもシンプルになるため、構造理解が容易になりました。
次はアプライアンスツールのApstraについてです。
こちらはインテントベースのネットワークシステムで、オペレーターが意図したネットワークをシンプルに作ることができます。また、マルチベンダーをサポートしていて、Cisco、Arista、Cumulusなども対応しています。
また、ネットワークのテレメトリーをサポートしているため、そのテレメトリー情報で取れたデータをGUI上で表示でき、そこからアラートをあげることができます。
また、gRPCでエクスポートもできるため、Telegrafを介してInfluxDBやPrometheusのPushgatewayにExportすることが可能です。
Apstraを利用するためには、AOSエージェントをネットワーク機器上にインストールする必要がありますが、ApstraではZTPのソリューションとしてApstra ZTPというものがあります。
それを利用して機器のmgmtインターフェースをマネジメントネットワークに接続するだけで、実際に数分後〜十数分後にはAOSが運用できるようになり、設定が利用可能な状態となります。
Apstraの良かった点としては、マルチベンダーなのでOSを意識する必要性がなくなったことが良かったです。
また、GUI上のみでデプロイまでできるため、慣れてしまえば簡単に利用できます。
あとテレメトリー情報は、自分でgRPCを受け取るプログラムを書くといった必要がなく、実際にApstraを通してエクスポートできるため、テレメトリー情報の連携ができました。
悪かった点は、インテントベースに慣れるまでなかなか時間がかかったところかなと思います。
まとめです。より良いネットワークを作るのはもちろん、運用の自動化にも力を入れています。Legacy NetworkではOSSを組み合わせた内製ツールを利用しています。Clos NetworkではOSSや製品を組み合わせて利用しています。
プライベートクラウド、クラウドストレージ、ネットワークなど、扱うコンポーネントは異なっても、実際の課題は非常に大規模かつ多様な環境が存在していることに起因しています。このようなインフラ環境を提供し管理するために、我々サイトオペレーション本部は常に改善を続けています。
サイトオペレーション本部は、Yahoo! JAPANの巨大インフラを支えるプロフェッショナル集団として、今後もYahoo! JAPANのインフラをUPDATEしていきます。ご清聴ありがとうございました。
(会場拍手)
関連タグ:
2024.12.20
日本の約10倍がん患者が殺到し、病院はキャパオーバー ジャパンハートが描く医療の未来と、カンボジアに新病院を作る理由
2024.12.19
12万通りの「資格の組み合わせ」の中で厳選された60の項目 532の資格を持つ林雄次氏の新刊『資格のかけ算』の見所
2024.12.16
32歳で成績最下位から1年でトップ営業になれた理由 売るテクニックよりも大事な「あり方」
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
PR | 2024.12.20
モンスター化したExcelが、ある日突然崩壊 昭和のガス工事会社を生まれ変わらせた、起死回生のノーコード活用術
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.18
「社長以外みんな儲かる給与設計」にした理由 経営者たちが語る、優秀な人材集め・会社を発展させるためのヒント
2024.12.17
面接で「後輩を指導できなさそう」と思われる人の伝え方 歳を重ねるほど重視される経験の「ノウハウ化」
2024.12.13
ファシリテーターは「しゃべらないほうがいい」理由 入山章栄氏が語る、心理的安全性の高い場を作るポイント
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
Climbers Startup JAPAN EXPO 2024 - 秋 -
2024.11.20 - 2024.11.21
『主体的なキャリア形成』を考える~資格のかけ算について〜
2024.12.07 - 2024.12.07
Startup CTO of the year 2024
2024.11.19 - 2024.11.19
社員の力を引き出す経営戦略〜ひとり一人が自ら成長する組織づくり〜
2024.11.20 - 2024.11.20
「確率思考」で未来を見通す 事業を成功に導く意思決定 ~エビデンス・ベースド・マーケティング思考の調査分析で事業に有効な予測手法とは~
2024.11.05 - 2024.11.05