MENU

Consul — サービス発見と鍵値ストアを束ねる基盤

Consul アイキャッチ
Consul

Consulは2014年4月にHashiCorp社が公開したOSSのプロダクトで、サービス発見・ヘルスチェック・鍵値ストア・そしてサービスメッシュ機能(Consul Connect)を1つのバイナリで提供します。HashiCorp社の共同創業者ミッチェル・ハシモト氏とアーマン・ダドガー氏が手掛けたGo製のソフトウェアで、同社のTerraform・Vault・Nomadと共に「HashiCorpスタック」を構成する中核ピースの1つです。Raftコンセンサスとgossipプロトコル(Serfベース)を組み合わせ、複数データセンターをまたいだサービス発見を実現できる点が特徴です。

目次

この記事の目次

  1. Consulが束ねる4つの機能
  2. HashiCorpスタックの中の立ち位置
  3. 運用で押さえておくポイント
  4. etcd・サービスメッシュとの棲み分け
  5. まとめ

Consulが束ねる4つの機能

Consulが束ねる4つの機能

Consulは複数の独立した機能を1つのバイナリに収めているのが他のプロダクトと異なる点です。1つ目はサービス発見で、登録されたサービス情報をDNSあるいはHTTP APIで問い合わせられます。DNSインターフェースを備えているため、既存のアプリケーションが特別な改修なしに「web.service.consul」のような名前で対象を解決できます。ヘルスチェックも標準機能で、TCP・HTTP・スクリプト実行など複数の方式に対応します。

2つ目は鍵値ストアで、etcdと同じRaftベースの強整合KVSとして、アプリケーションの設定や機能フラグの共有に使えます。3つ目はConsul Connectと呼ばれるサービスメッシュ機能で、サイドカープロキシ(Envoyを採用)と統合してmTLS通信・L7ポリシー・トラフィック分割を提供します。これらを単一プロセスで束ねるアプローチが、「ツールを別々に運用したくない」現場で重宝され、特にVMベース環境やマルチクラウド統合のような複雑な構成で強みを発揮します。

HashiCorpスタックの中の立ち位置

HashiCorpスタックの中の立ち位置

Consulは2014年4月にHashiCorpが発表したプロダクトで、創業者ミッチェル・ハシモト氏自身がブログで設計思想を語っています。同社のVagrantやPackerと違い、本番運用基盤として位置づけられた初期の主要プロダクトの1つで、「DNSとHTTPの両方でサービス発見できる」という点が当時の話題を集めました。

2018年6月にはサービスメッシュ機能であるConsul Connectが追加され、Istio・Linkerdが切り拓いた市場に参入しました。Envoyとの統合により、Pod間通信のmTLSやL7ポリシーが扱えるようになっています。HashiCorp社は2021年12月にナスダックでIPOを果たし、2024年4月にはIBMが約64億ドルでHashiCorp買収を発表しました。これによりConsulはIBM傘下のプロダクトとして次の段階に入り、Terraform・Vaultとの一貫した統合がさらに進む見込みです。ライセンスは2023年8月にMozilla Public LicenseからBusiness Source Licenseへ変更され、OSS派生としてOpenBaoやOpenTofuと並ぶOpenConsulの動きも生まれています。

運用で押さえておくポイント

運用で押さえておくポイント

Consulはサーバーモード(Raft参加)とクライアントモード(gossipのみ参加)の2種類で運用します。サーバーノードは3台または5台の奇数台が基本で、過半数を維持できるかどうかが書き込み可用性を決めます。クライアントは各アプリケーションホストに1つずつ配置し、ローカルへのAPIアクセスを担います。ACL(Access Control List)機能を有効化しないと誰でもKVに書き込めるため、本番では必ずACLを有効化しトークン運用に切り替えます。

Serfベースのgossipプロトコルは平文だと盗聴やなりすましの余地があるため、gossip暗号化キーを設定して暗号化を有効にします。複数データセンター連携ではWAN gossipモードを使い、各DCのサーバー同士を結びつけることで、あるDCから別DCのサービスを「web.service.dc2.consul」のような名前で発見できます。監視はconsul_raft_*やconsul_serf_*といったPrometheusメトリクスと、各ノードのログを両輪で収集するのが定石です。etcdと同様、ディスクfsync遅延が書き込み性能に直結するため、SSD推奨という点も忘れずに押さえます。

etcd・サービスメッシュとの棲み分け

etcd・サービスメッシュとの棲み分け

Consulの位置取りを近隣プロダクトと比べると整理が進みます。etcdはKubernetesの状態ストアとして使われる軽量KVSで、Kubernetesと一体化した設計が強みです。一方Consulは「DNSでサービス発見できる」「VM・ベアメタル環境にも自然に馴染む」「マルチデータセンターを前提に設計されている」という強みがあり、Kubernetesクラスタ外のレガシーシステム統合や、複数クラウドにまたがる統一発見基盤を作りたい場合に光ります。

サービスメッシュ機能(Consul Connect)はIstio・Linkerdといった専用メッシュと競合しますが、「すでにConsulをサービス発見で使っているなら、メッシュ機能も同じバイナリで完結できる」という統合性が選定理由になります。ZooKeeperは同様の分散コーディネータですがJava中心の世界観でKafkaなどとの結びつきが強く、Consulとは想定読者がやや異なります。Kubernetes中心の世界ならetcd+専用メッシュ、混在環境やマルチDC前提ならConsul、という大枠の住み分けで考えると判断しやすくなります。

まとめ

Consulは2014年HashiCorpが公開したOSSで、サービス発見・KVストア・サービスメッシュを1バイナリで束ねる珍しいプロダクトです。DNS対応・マルチDC前提・VMとの相性の良さを武器に、Kubernetes中心の世界とは異なる現場で根強く採用されています。Terraform・VaultとともにHashiCorpスタックを支え、2024年のIBM買収を経てクラウドネイティブの一翼を担い続けています。

※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次