DBAtlas · データベース運用アトラス

MongoDB レプリカセットの構築 (3 メンバー、keyfile と認可)

MongoDBレベル: 中級所要時間: 60~90 分

3 メンバーの MongoDB 8.0 (または 7.0) レプリカセットを一から構築します。公式リポジトリ、XFS のデータディレクトリ、RAM に応じた WiredTiger キャッシュ、keyfile によるメンバー間認証、認可、管理者ユーザーとアプリケーションユーザー、read/write concern、フェイルオーバーテスト、接続文字列までを扱い、最終的にメンバー 1 台の喪失を停止なしで乗り切れる、パスワードで保護されたレプリカセットが得られます。データ量や書き込み負荷が 1 台のサーバーを超える場合はシャードクラスタのガイドを開いてください。構築済みのセットの日常運用、バックアップ、ハードニングは別の MongoDB ガイドで扱います。

構成: サーバー 3 台 (primary 1 + secondary 2)、データを保持するメンバーは奇数台

開始前の確認

  • すべてのサーバーが同じ最新の OS で稼働し、時刻は NTP (chrony) で同期されている。メンバー間の時刻のずれはセッションと oplog の問題を引き起こします。
  • RAM と CPU がフォームの値と一致している (WiredTiger キャッシュはこの値から計算されます)。スワップは設定済みだが小さい。
  • データディレクトリ (…) が専用のディスク/LV 上にあり、XFS でフォーマットされ、noatime でマウントされ、fstab に登録されている。WiredTiger で ext4 を使うと性能問題が起きることがあります。
  • 各サーバー名がすべてのサーバーとアプリケーションサーバーから名前解決できる (DNS または /etc/hosts)。レプリカセットの構成には IP ではなく名前を使います。
  • サーバー間でポート … が開放され、アプリケーションネットワークからこのポートに到達できる。ポートは他のサービスで使用されていない。
  • サーバーから repo.mongodb.org と pgp.mongodb.com に HTTPS で接続できる、または社内ミラーが設定されている。
  • OS 標準の mongodb パッケージや古い MongoDB のインストールが存在しない。
  • 最初のサーバーから他のサーバーへ root (または sudo 権限を持つユーザー) で scp できる (keyfile のコピー用)。できない場合は安全な方法でファイルを手動で移してください。
  • root または sudo 権限でログインしている。メンテナンスウィンドウとサーバースナップショット (切り戻し) の計画が用意されている。

ガイドのフェーズ

  • OS の準備 (全メンバー) — ホスト名: … · システム更新と必要なツール · 名前解決 (/etc/hosts) · カーネルパラメータ (sysctl) · sysctl 設定を適用する · Transparent Huge Pages: 8.0 向けに有効化する …
  • MongoDB ソフトウェアのインストール (全メンバー) — MongoDB … リポジトリを追加する · MongoDB … リポジトリを追加する · MongoDB をインストールする · データディレクトリを準備する · SELinux ポリシーとラベル
  • keyfile (メンバー間認証) — keyfile を作成する · keyfile を他のメンバーにコピーする · keyfile のパーミッション: …
  • 構成 — mongod.conf: … · systemd 設定を確認する · ファイアウォールでポートを開放する
  • サービスの起動 (全メンバー) — mongod を有効化して起動する
  • レプリカセットを開始し、ユーザーを作成する — 他のメンバーへの接続を確認する · rs.initiate · 管理者ユーザーを作成する · アプリケーションユーザーを作成する · デフォルトの read/write concern
  • 検証とフェイルオーバーテスト — レプリカセットの状態 · 書き込み/読み取りテスト · 計画的フェイルオーバーテスト (rs.stepDown) · アプリケーションの接続文字列
  • インストール後 — ログローテーション · logrotate をテストする · バックアップを計画する (必須) · 監視を設定する · セキュリティ: TLS とアクセス
環境に合わせた手順プランを開く →