Mackerel Dayでわからないこと調べてみた(Mackerel インフラ基盤 AWS 移行の舞台裏)

f:id:sktktk1230:20180726121250p:plain

概要

Mackerel Dayに行ってきたのですが、用語とかがわからなくてイマイチ理解が進まなかったものなど、 自分が分からなかったものを調べてみましたの第二弾です

イベントレポートはこちら

shitake4.hatenablog.com

分からなかったこと

  1. 時系列データベース
  2. Redis Cluster
  3. シャード
  4. Unbound
  5. コンテンツサーバとキャッシュサーバ
  6. vpcのリゾルバ
  7. TTL60
  8. iptablesのチェイン

対象セッション

  • Title Mackerel インフラ基盤 AWS 移行の舞台裏
  • Time 15:00〜15:20
  • Speaker はてな 大野 様

1. 時系列データベース

f:id:sktktk1230:20171128141545p:plain

調べてみた結果

そもそも時系列データ・時系列データベースとは?
時系列データというのは、特定の時間ごとに何らかの値を取得した際の、取得した一連の値を指します。 例えば、以下のようなフォーマットをしたデータなどは時系列データにあたるでしょう。

timestamp1,key,value1  
timestamp2,key,value2  
timestamp3,key,value3  
:  

時系列データベースとは、上記のような時系列データの保存・処理に特化したデータベースです。 Web インフラストラクチャーの文脈では、サーバのメトリクス等が時系列データにあたります。
Web サービスの文脈では、Web サーバの増加や複雑化により、高い解像度の様々なメトリクスを長期間保持したいという要望や、 サーバのメトリクスをより統計的に解析し、アラーティングの精度を向上させたいという要望などがあり、 様々な会社や組織で独自の時系列データベースが開発されているという事情があります。
引用:http://techlife.cookpad.com/entry/timeseries-database-001

2. Redis Cluster

f:id:sktktk1230:20171128141750p:plain

調べてみた結果

Redis Cluster 機能を使うと、Redis インスタンスをクラスタリングすることができる。
通常のレプリケーション構成ではなく、複数の master ノードを束ねて協調動作させ、クラスタ全体で保持するデータ量をスケールアウトさせることができる。
引用:https://qiita.com/key-amb/items/c3c947578b043a6b4096

3. シャード

f:id:sktktk1230:20171128142106p:plain

調べてみた結果

シャード (API/CLI: ノードグループ) は、1 〜 6 個の Redis ノードで構成されるコレクションです。Redis (クラスターモードが無効) クラスターを構成するシャードは 1 つに限られます。Redis (クラスターモードが有効) クラスターは 1 から 15 個のシャードで構成できます。クラスターのデータは、クラスターのシャード間で分割されます。シャードに複数のノードがある場合、1 つを読み書きのプライマリノード、その他を読み取り専用のレプリカノードとするレプリケーションが実装されます。
引用:http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/UserGuide/Shards.html

4. Unbound

f:id:sktktk1230:20171128142247p:plain

調べてみた結果

UnboundはBINDの代替を目指したDNSキャッシュサーバです。 2008年5月20日に正式版1.0がリリースされました。 オープンソースのソフトウェアとして公開されており,ライセンスはBSDライセンスです。 UnboundはNLnet Labsにより開発と保守が行われています。
UnboundはDNSキャッシュサーバとしてはフルスペックであるため,BINDを置き換えることができます。しかし,DNSコンテンツサーバとしては機能しないので,BINDを完全に置き換えることはできません。しかし,後述するようにDNSキャッシュサーバとDNSコンテンツサーバの役割は異なるため,この割り切りは良いでしょう。
引用:http://gihyo.jp/admin/feature/01/unbound/0001

スライド調べてみたから若干脱線しますが、DNSコンテンツサーバとDNSキャッシュサーバがそれぞれどんな役割なのかよくわからなかったので、さらに調べてみました

5. コンテンツサーバとキャッシュサーバ

さて、このDNSサーバさんですが、大きく分けて二種類あります。
一つは、自分の管理している情報を教えてあげるのがお仕事のDNSサーバさんです。
自分の中にIPアドレスとドメイン名の対応表を持っていて、問い合わせに対して「あー、そのIPアドレスはこのドメイン名だね~」「そのIPアドレスはこのドメイン名だよ~」と答えてあげます。対応表に載っていなければ「知らないな~」と答えます。
もう一つは、どんな手を使おうともお問い合わせに答えてあげるのがお仕事のDNSサーバさんです。
問い合わせがあると、答えを知っていそうなDNSサーバさんに「ねーねー。こんな問い合わせが来たんだけど、答え教えてよ」と訊きに行きます。言わばカンニング野郎ですね。
DNSコンテンツサーバ 自分の管理している情報を教えてあげるのがお仕事のDNSサーバ
DNSキャッシュサーバ 他のDNSサーバさんに答えを教えてもらいに行くDNSサーバ
引用:http://wa3.i-3-i.info/diff10dns.html

dnscache

うまく調べられなくてわかってないです。

dnsmasq

うまく調べられなくてわかってないです。

6. vpcのリゾルバ

f:id:sktktk1230:20171128142443p:plain

調べてみた結果

VPC

Amazon Virtual Private Cloud (Amazon VPC) により、アマゾン ウェブ サービス (AWS) クラウドの論理的に分離したセクションをプロビジョニングできます。これにより、AWS リソースをユーザー定義の仮想ネットワークで起動できます
引用: https://aws.amazon.com/jp/vpc/

リゾルバ

ドメイン名を元にIPアドレス情報を検索したり(正引き)、IPアドレスからドメイン名の情報を検索したり(逆引き)するのが目的である。名前解決を行うことから「解決するもの」(resolver)という意味でリゾルバと呼ばれている
引用:http://www.weblio.jp/content/%E3%83%AA%E3%82%BE%E3%83%AB%E3%83%90

これまでWebブラウザがDNSサーバーにIPアドレスを問い合わせると説明してきたが,正確に言うと,IPアドレスを問い合わせるのはWebブラウザなどのアプリケーションに含まれる「リゾルバ」と呼ばれるプログラムである。
引用:http://itpro.nikkeibp.co.jp/article/COLUMN/20071022/285173/

ブラウザ等アプリケーションにリゾルバが含まれていて、リゾルバがDNSサーバーに問い合わせにいくという流れみたいです

7. TTL60

f:id:sktktk1230:20171128142443p:plain

調べてみた結果

DNSでは、Authoritative name server が特定のリソースレコードに対してTTLを設定する。(再帰的な)キャッシングネームサーバが Authoritative name server にリソースレコードについて問い合わせたとき、(再帰的な)キャッシングネームサーバはTTLによって指定される時間(秒単位で)の間その記録をキャッシュする
引用:https://ja.wikipedia.org/wiki/Time_to_live

TTL60はキャッシュの保持期間が60秒って意味っぽいです

8. iptablesのチェイン

f:id:sktktk1230:20171128142651p:plain

調べてみた結果

iptablesは複数のチェックポイント(チェインと呼ぶ)ごとにパケットの通過を許可、拒否、破棄する条件を設定できます。
各チェインはfilter、nat、mangleという3つのカテゴリ(テーブルと呼ぶ)に分類されますが、ここではLinuxサーバにおけるファイアウォールを扱うことが目的なのでfilterテーブルにのみ言及します。
引用:https://qiita.com/fusagiko/items/bc2e9ae9392a28b73734