スマートスタイル TECH BLOG|データベース&クラウドの最新技術情報を配信

MariaDB ColumnStore を複数ノードで動かす

MariaDB ColumnStore はシングルノードで動かすこともできますが、分散並列処理にも対応しているため、複数ノードが連動して処理を分散させることも可能です。

今回は、MariaDB ColumnStore を複数ノードで構築する方法をご紹介します。

MariaDB ColumnStore のコンポーネント

MariaDB ColumnStore は以下のコンポーネントで構成されています。

ユーザーモジュール(以下:UM)

UMはクライアントからのクエリーを受け付けて、パフォーマンスモジュールに処理を分散させ、結果を集約してクライアントに返します。

パフォーマンスモジュール(以下:PM)

PMはUMからリクエストを受け取って、データの検索、保存などを行うモジュールです。処理性能を上げる場合はPMのスペックアップや台数を増やすことで可能となります。

ストレージ

MariaDB ColumnStore では、冗長構成をとる場合、ストレージに関しては別の仕組みが必要になります。
PMのローカルストレージを使用することも可能ですが、PMのどれかのノードがダウンするとシステム全体がリクエストを受け付けなくなります。
そのため、MariaDB ColumnStore では、外部ストレージに対応しており、冗長化する場合は、SANのような共有ストレージや、AWSのEBSを使うことになります。

参考: ColumnStoreのアーキテクチャ概要

MariaDB ColumnStore のサーバー構成

MariaDB ColumnStore では、主に3つのサーバー構成があります。

シングルサーバー構成

データ量が少ない、パフォーマンスをそれほど必要としない場合の構成です。

UMとPMを同居させる構成

1台のサーバーで2つのモジュールを同居させるのでサーバーの台数を減らすことができます。

UMとPMをそれぞれのサーバーで動かす構成

データ量が多い、パフォーマンスを重視する場合の構成です。サーバー台数は増えますが、性能向上にはPMを増やすことが多いため、リソースの有効利用の観点からもPMだけ増加させることができるという利点もあります。

今回の構成

UMとPMを同居させてデータはローカルディスクに格納する2サーバー構成で構築します。
また、OSは CentOS 7.3 です。

事前準備

それぞれのサーバーで以下の設定が必要です。また以下の作業は全て root ユーザーで行います。

locale の設定

SELinux の無効化

ssh の設定

root ユーザーでそれぞれのサーバーにパスフレーズ無しでログインできるように設定する必要があります。
(公式ドキュメントでは上記のような記載がありますが、パスワード認証でもデプロイは可能なようです)

参考: Preparing for ColumnStore Installation

依存パッケージのインストール

MariaDB ColumnStore で必要な依存パッケージを事前にインストールしておきます。

最初のノードを作成する

MariaDB ColumnStore では、最初のノードはrpmによるインストールとインストーラーによる設定を行って構築しますが、2ノード以降はmcsadminという管理ツールからノード追加を行うことができます。

ファイルのダウンロード

注意: ダウンロードした tar.gz ファイルは ホームディレクトリに配置してください。管理ツールからノード追加を行い際に、このファイルをインストール先サーバーに転送してインストール処理が行われます。

ファイルの解凍

インストール

設定

設定ファイルを起動します。以降は対話形式で設定を行うことになります。

シングルサーバーか複数サーバーで実行するかを選択します。(2を選択)

UMとPMを別々のサーバーか同じサーバーで動かすを選択します。
(今回は同じサーバーで動かすので2を選択)

スキーマ同期機能を有効にするかどうかを選択(yを選択)

AWS CLI ツールを使って、インスタンスなどを作成するかどうかを選択します。(nを選択)

システム名(クラスタの名前)を入力します。(デフォルトのまま)

ストレージをローカルディスクにするか外部ストレージにするかを選択します。
ローカルストレージの場合、フェイルオーバーがサポートされていないため、ノードの1台が停止した場合、システムが停止します。(1=internalを選択)

最初に構築するPMの台数を入力します。(1を入力)

1つ目のネットワークインターフェースのホスト名を入力します。(デフォルト)

1つ目のネットワークインターフェースのIPアドレスを入力します。(デフォルト)

2つ目のネットワークインターフェースのホスト名を入力します。(今回は不要なので、unassinedのまま)

ストレージに格納されるデータは、ID数に応じてディレクトリが作られて、その下に格納されます。
(今回はデフォルトの1のままとします)

Linuxの起動時にMariaDB ColumnStoreを自動起動させるかどうかを選択します。(yを入力)

MariaDB ColumnStoreが起動します。

mcsmysql は mysqlコマンドへのエリアスになっていて root ユーザーでログインできます。
mcsadmin は MariaDB ColumnStore の管理ツールとなります。

上記のコマンドへのPATHを通します。

.bash_profile にも追加しておきます。

クラスタの状態を確認する

管理ツールを起動します。

help コマンドでコマンド一覧が出力されます。

システムステータスを確認します。

1ノードだけですが、問題なく稼働していることがわかります。

参考:Installing and Configuring a Multi Server ColumnStore System

2つ目のノードを追加する

2つ目のノード追加では管理ツールから行います。

管理ツールを起動します。

DBRootを追加する

dbrootを1つ追加します。

新しく ID:2 が割り振られました。

ストレージ設定を確認します。

どのPMにもDBRoot ID:2 は割り当てられていないことがわかります。

PMノードを追加する

ノードの追加は addModule コマンドで実行できます。
引数などは help addmodule で確認してください。

PMを追加します。
sshを使ってserver2にログインするため、「ssh」を入力します。

server2 に PMをインストールしています。

PMのインストールが完了しました。

システムステータスを確認します。

新しく追加した pm2 は MAN_DISABLED の状態です。

新しく追加したPMを有効化します。

もう一度、システムステータスを確認します。

pm2のステータスが MAN_OFFLINEになりました。

新しい pm2 に未割り当てのDBRootを割り当てます。

pm2 にDBRoot ID: 2が割当たりました。

pm2 をスタートさせます。

システムステータスを確認します。

pm2も ACTIVE になっています。
無事にノードの追加が完了しました。

参考: Managing ColumnStore Module Configurations – MariaDB Knowledge Base

まとめ

ノード間をSSHのパスワード無しでログインできるようにしておく必要があるなど、事前の準備は必要ですが、2つ目以降のノードは管理コンソールから簡単に追加することができました。
今回の検証では触れませんでしたが、AWS CLI を使用するとインスタンスの生成まで行ってくれるなど、ノードの増減に対して運用が容易になるように作られているようです。

また、クラスタを構築する前のテストツールとして以下のようなものもありますので、事前に実行して設定をチェックしてみてください。


MariaDB

 

Return Top