ここ3年におけるサイバーエージェントのネットワークを取り巻く環境の変化 / cyberagent-adtech-network-for-these-3years

B722d457f803a630f3c55429b526510b?s=47 komeinw
March 01, 2018

ここ3年におけるサイバーエージェントのネットワークを取り巻く環境の変化 / cyberagent-adtech-network-for-these-3years

B722d457f803a630f3c55429b526510b?s=128

komeinw

March 01, 2018
Tweet

Transcript

  1. 12.

    プライベートクラウドについて • 本番用クラウド基盤 ◦ OpenStack (Izanami) • コンテナ基盤 ◦ AKE

    • CI周り ◦ CircleCI ◦ Artifactory • 物理マシン ◦ MAAS • 個人開発用クラウド基盤 ◦ OpenStack (Mille) + Midonet • 分析基盤 ◦ Tableau
  2. 15.

    スタートライン • 2014年3月 ◦ @komeinw 入社した時点の情報 ◦ 1U 物理サーバを大量に並べたラック構成 ◦

    KVM で VM 数台起動 ◦ PXE boot で OS 入れて引き渡し ◦ NW はコアに L2SW を LAG で接続する構成 ◦ 申請ベースの作業 例えば、LBの設定などエクセルで来る申請をポチポチ手作業で実施していた。 サーバ担当がラック作って、ネットワーク担当がスイッチの設定して、サーバ担当が OS 入 れて KVM 上に VM 作って、開発者がアプリケーション入れて LB 申請してくる流れ
  3. 16.

    Excel での申請作業って・・・ • ヒューマンエラーおきやすい ◦ コピペミス ◦ 1行ズレた ◦ 大文字小文字間違えた

    • なので、確認作業にも時間がかかる • Excel からコンフィグ生成する案もあるが・・・    集中している作業を分断されるのは変わりない
  4. 17.

    一歩進んだ • 2014年8月 ◦ OpenStack になった。セルフサービス。 ◦ NW はよくある L2

    構成にした(当時NeutronのL3は・・・) L3 と LB が物理の世界に取り残さることにより、申請作業が変わらない問題は残る。 というより、より課題が顕著になる恐れが。
  5. 18.

    一歩進んだ インフラ用の API Gateway を作成。 API を公開 すると共に「AXC (Adtech Studio

    X Cloud) 」を リリース。簡単にアドテク内のインフラリソースを操作できるように。 Python 製。GitHub の organization 内で公開して配布。※ API Gateway がないと動かない https://adtech.cyberagent.io/techblog/archives/59  
  6. 21.

    面倒なものは chatbot も(2) • グラフィカルな部分はChatでできるようにして おくと便利。 • “頼まれる側” も ”頼む側”

    に取ってもストレス フリー • 他にも可視化と簡単なプロビジョンで活用 • Jobに組み込んだりする可能性があるものは CLIないしはAPIで提供した方がよい
  7. 22.

    もう一歩進んだ • 2015年2月 ◦ OpenStack + SDN で開発者向けの個人環境を構築 ◦ OpenSource

    になったばかりだったが Midonet を採用 Zookeeper と Cassandara ネットワーク情報を管理し、各サーバ(Controler / Compute)で動作する Agent が OpenStack と連携しネットワークを作る。 VTEP の位置を考えるとネットワークは リーチャビリティが あれば難しい処理はしなくてよい http://www.sdnjapan.org/archive/2015/2015pdf/1503_hasegawa.pdf 自動化の限界、 VLAN自体を管理するのが面倒 →
  8. 24.

    トラブルシュートが変わってくる ネットワークエンジニアとしては Linux で構成される世界を 管理するかしないかでやるレベルに大きな差がでる • 「ネットワークがおかしい 」ってどこまでの範囲? • TAP? qbr? qvo? qvb? 

    • SoftIRQ 周り? Adapter の queuing ? netdev_budget ? backlog ? • zookeeper で管理しているネットワークがおかしい? • midonet の bug ? neutron との不整合? ユーザからすると、インスタンスから外に出れば管理者の範疇。 仮想ネットワークとか物理ネットワークとかは区別して問い合わせをしてくるわけではない。
  9. 26.

    さらにもう一歩進んだ • 2016年11月 ◦ Kubernetes as a service を始動 ◦

    2017年1月に β をリリース ◦ 現在は OpenStack 上で複数のクラスタが稼働している コンテナの需要の高まりへの対応、Kubernetes を as a service 形式で稼働できることで 開発エンジニアがコンテナのメリットを受けるためのハードルを避ける AKE(Adtech Container Engine) OpenStack 上に専用の Kubernetes を気軽に構築できる環境 https://adtech.cyberagent.io/techblog/archives/3673
  10. 27.

    • Google 社が作った COE ツール • Docker コンテナのオーケストレーションを行う ◦ スケールアウト、スケールイン

    ◦ リソース管理、スケジューリング ◦ ロードバランシング、ヘルスチェック ◦ BlueGreen、ローリングアップデート ◦ クラスタ間ネットワークの提供 • コンテナをよしなに管理してくれる Kubernetes ってなに?
  11. 28.

    AKE や GKE の何がいいのか? • Kubernetes を構築するのが辛い問題... ◦ あまり本質的な所ではないので楽をしたい ◦

    ≒ OpenStack を構築する • Kubernetes クラスタを簡単にデプロイ • Kubernetes Node 自体を簡単にスケーリング • 動的な永続ボリュームの提供(Persistent Volume の Dynamic Provisioning)
  12. 30.

    Step 1. AKE / GKE クラスタを構築する Step 2. Kubernetes で

    Pod/Service を作成する GKE AKE (AKE)# ake cluster create NAME ... (GKE)# gcloud container clusters create NAME ...
  13. 31.

    Step 1. AKE / GKE クラスタを構築する Step 2. Kubernetes で

    Pod/Service を作成する GKE AKE (AKE)# kubectl ... (GKE)# kubectl ...
  14. 32.

    AKE を実現するために必要なこと • OpenStack 上に必要なリソースを展開する • Kubernetes をインストールする(最近イメージに内包した) • LoadBalancer

    に登録する( or LoadBalancer 自体の構築) • CLI の提供 • master や worker のスケールイン / アウト • 提供する Kubernetes の CI / CD • CLI の CI / CD • ....etc
  15. 33.

    OpenStack Heat とは? • 構成情報を template で管理することができ る • AWS

    CloudFormation / Terraform に近い OpenStack 上に必要なリソースを展開する
  16. 35.

    type: LoadBalancerの壁 • Kubernetes には Service を「type: LoadBalancer」で作成すると Cluster 外に

    LoadBalancer が作られる仕組みがある • この Service を使うと Cluster 外部から内部の pod にアクセスが可能 • 様々な Cloud Provier 連携が存在 (GCP / AWS / OpenStack …) • OpenStack の場合は Neutron LBaaS か Octavia と連携される • しかし、アドテクの OpenStack では Neutron LBaaS も Octavia も無い
  17. 36.

    type: LoadBalancerの壁(解消ポイント) • もともとアドテクスタジオでは Hardware LoadBalancer を使用しているが、その LB に対して API

    で操作できる AXC という仕組みがある (前述の Adtech x Cloud) • Kubernetes からの LoadBalancer の作成時にこの AXC と連携させれば 「type: LoadBalancer」が実現できる • Kubernetes の Cloud Provider の OpenStack の pkg を改修 • しかしこれだけではまだ完全ではない • LoadBalancer 用の IP Address を自動で払い出す機能も作成
  18. 38.

    まとめ • ネットワークエンジニアの領域は変わってきている • OpenStack / SDN / Kubernetes によるインフラ環境の変化が起きている

    • 単純作業から解放されれば、別のことをやる時間が作れる • いろいろ情報交換していきましょう