GNU/Linux >> Linux の 問題 >  >> Cent OS

CentOS7にMongoDBシャードクラスターをインストールする方法

シャーディング は、異なるマシン間でデータセットを保存するためのMongoDBプロセスです。これにより、データの水平スケールを実行し、独立したインスタンス間でデータを分割することができ、「レプリカセット」にすることができます。 'Sharding'でのデータセットパーティショニングはシャードキーを使用します。シャーディングを使用すると、スタック上のデータの増加に基づいてマシンを追加できます。

シャーディングとレプリケーション

簡単にしましょう。音楽のコレクションがある場合、「シャーディング」は音楽コレクションを別のフォルダーに保存して保持します。一方、「レプリケーション」は、音楽コレクションを他のインスタンスに同期するだけです。

3つのシャーディングコンポーネント

シャード -すべてのデータを格納するために使用され、実稼働環境では、各シャードはレプリカセットです。高可用性とデータの一貫性を提供します。

構成サーバー -クラスターメタデータを格納するために使用され、クラスターデータセットとシャードのマッピングが含まれます。このデータは、操作を提供するためにmongos/queryサーバーによって使用されます。本番環境では3つ以上のインスタンスを使用することをお勧めします。

モンゴス/クエリルーター -これは、アプリケーションインターフェイスとして実行されているmongoインスタンスです。アプリケーションはmongosインスタンスにリクエストを送信し、mongosはシャードキーを使用してシャードレプリカセットにリクエストを配信します。

前提条件

  • 構成レプリカセットとしての2centOS7サーバー
      • 10.0.15.31 configsvr1
      • 10.0.15.32 configsvr2
  • シャードレプリカセットとしての4つのCentOS7サーバー
      • 10.0.15.21 shardsvr1
      • 10.0.15.22 shardsvr2
      • 10.0.15.23 shardsvr3
      • 10.0.15.24 shardsvr4
  • mongos/Queryルーターとしての1台のCentOS7サーバー
      • 10.0.15.11 mongos
  • root権限
  • 各サーバーが別のサーバーに接続されている
ステップ1-SELinuxを無効にしてホストを構成する

このチュートリアルでは、SELinuxを無効にします。 SELinux構成を「enforcing」から「disabled」に変更します。

OpenSSHを介してすべてのノードに接続します。

ssh [email protected]

構成ファイルを編集してSELinuxを無効にします。

vim /etc/sysconfig/selinux

SELinuxの値を「無効」に変更します。

SELINUX=disabled

保存して終了します。

次に、各サーバーのhostsファイルを編集します。

vim /etc/hosts

次のホスト構成を貼り付けます:

    10.0.15.31      configsvr1
    10.0.15.32      configsvr2
    10.0.15.11      mongos
    10.0.15.21      shardsvr1
    10.0.15.22      shardsvr2
    10.0.15.23      shardsvr3
    10.0.15.24      shardsvr4

保存して終了します。

次に、すべてのサーバーを再起動します:

reboot
ステップ2-すべてのインスタンスにMongoDBをインストールする

すべてのインスタンスに最新のMongoDB(MongoDB 3.4)を使用します。次のコマンドを実行して、新しいMongoDBリポジトリを追加します。

cat <<'EOF' >> /etc/yum.repos.d/mongodb.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc
EOF

次に、以下のyumコマンドを使用してmongodbリポジトリからmongodb3.4をインストールします。

sudo yum -y install mongodb-org

mongodbをインストールしたら、「 mongo」を使用します 'または'mongod 'バージョンの詳細を確認するには、次の方法でコマンドを実行します。

mongod --version

ステップ3-構成サーバーのレプリカセットを作成する

前提条件のセクションでは、2台のマシン「configsvr1」と「configsvr2」で構成サーバーをすでに定義しています。このステップでは、レプリカセットとして構成します。

サーバーでmongodサービスが実行されている場合は、次のsystemctlコマンドを使用して停止します。

systemctl stop mongod

デフォルトのmongodb構成を編集します'mongod.conf '。

vim /etc/mongod.conf

DBストレージパスを独自のディレクトリに変更します。最初のサーバーには「/data/ db1」を使用し、2番目の構成サーバーには「/ data/db2」ディレクトリを使用します。

storage:
  dbPath: /data/db1

行'bindIP'の値を内部ネットワークアドレスに変更します。 'configsvr1'はIPアドレス10.0.15.31で、2番目のサーバーは10.0.15.32です。

bindIP: 10.0.15.31

レプリケーションセクションで、レプリケーション名を設定します。

replication:
  replSetName: "replconfig01"

そして、シャーディングセクションで、インスタンスの役割を定義します。これら2つのインスタンスを「configsvr」として使用します。

sharding:
  clusterRole: configsvr

保存して終了します。

次に、MongoDBデータ用の新しいディレクトリを作成してから、そのディレクトリの所有権を「mongod」ユーザーに変更する必要があります。

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

次に、次のコマンドでmongodサービスを開始します。

mongod --config /etc/mongod.conf

netstatコマンドを使用して、mongodサービスがポート27017で実行されていることを確認できます。

netstat -plntu

Configsvr1とConfigsvr2はレプリカセットの準備ができています。 'configsvr1'サーバーに接続し、mongoシェルにアクセスします。

ssh [email protected]
mongo --host configsvr1 --port 27017

以下のクエリを使用して、すべてのconfigsvrメンバーでレプリカセット名を開始します。

rs.initiate(
  {
    _id: "replconfig01",
    configsvr: true,
    members: [
      { _id : 0, host : "configsvr1:27017" },
      { _id : 1, host : "configsvr2:27017" }
    ]
  }
)

結果が得られた場合'{"ok":1} '、これはconfigsvrがすでにレプリカセットで構成されていることを意味します。

そして、どのノードがマスターで、どのノードがセカンダリであるかを確認できます。

rs.isMaster()
rs.status()

ConfigServerレプリカセットの構成が完了しました。

ステップ4-シャードレプリカセットを作成する

このステップでは、4つのcentos7サーバーを2つの「レプリカセット」を備えた「シャード」サーバーとして構成します。

  • 2サーバー-'shardsvr1 'および'shardsvr2 'レプリカセット名:' shardreplica01 '
  • 2サーバー-'shardsvr3 'および'shardsvr4 'レプリカセット名:' shardreplica02 '

各サーバーに接続してmongodサービスを停止し(サービスが実行されている場合)、MongoDB構成ファイルを編集します。

systemctl stop mongod
vim /etc/mongod.conf

デフォルトのストレージを特定のディレクトリに変更します。

storage:
  dbPath: /data/db1

'bindIP'行で、値を内部ネットワークアドレスに変更します。

bindIP: 10.0.15.21

レプリケーションセクションでは、「 shardreplica01」を使用できます '最初と2番目のインスタンス。そして、' shardreplica02を使用します '3番目と4番目のシャードサーバーの場合。

replication:
  replSetName: "shardreplica01"

次に、サーバーの役割を定義します。これらすべてをshardsvrインスタンスとして使用します。

sharding:
  clusterRole: shardsvr

保存して終了します。

次に、MongoDBデータ用の新しいディレクトリを作成します。

mkdir -p /data/db1
chown -R mongod:mongod /data/db1

モンゴッドサービスを開始します。

mongod --config /etc/mongod.conf

以下のコマンドでMongoDBが実行されているかどうかを確認します。

netstat -plntu

MongoDBがローカルネットワークアドレスで実行されていることがわかります。

次に、これら2つのシャードインスタンスの新しいレプリカセットを作成します。 'shardsvr1'に接続し、mongoシェルにアクセスします。

ssh [email protected]
mongo --host shardsvr1 --port 27017

' shardreplica01という名前でレプリカセットを開始します '、およびメンバーは' shardsvr1 'および'shardsvr2 '。

rs.initiate(
  {
    _id : "shardreplica01",
    members: [
      { _id : 0, host : "shardsvr1:27017" },
      { _id : 1, host : "shardsvr2:27017" }
    ]
  }
)

エラーがない場合は、以下のような結果が表示されます。

shardsvr3の結果 およびshardsvr4 レプリカセット名'shardreplica02 '。

shardsvr3でこの手順をやり直してください およびshardsvr4 レプリカセット名が異なるサーバー'shardreplica02 '。

これで、シャードとして2つのレプリカセットが作成されました-' shardreplica01 'および'shardreplica02 '。

ステップ5-mongos/Queryルーターを構成する

「クエリルーター」またはmongosは、「mongos」を実行している単なるインスタンスです。構成ファイルを使用してmongosを実行することも、コマンドラインのみを使用して実行することもできます。

mongosサーバーにログインし、MongoDBサービスを停止します。

ssh [email protected]  
systemctl stop mongod

以下のコマンドでmongosを実行します。

mongos --configdb "replconfig01/configsvr1:27017,configsvr2:27017"

'--configdb'オプションを使用して、構成サーバーを定義します。本番環境にいる場合は、少なくとも3台の構成サーバーを使用してください。

以下に結果が表示されます。

Successfully connected to configsvr1:27017
Successfully connected to configsvr2:27017

mongosインスタンスが実行されています。

ステップ6-mongos/Queryルーターにシャードを追加する

手順5で別のシェルを開き、mongosサーバーに再度接続して、mongoシェルにアクセスします。

ssh [email protected]
mongo --host mongos --port 27017

shmongodbクエリを使用してシャードサーバーを追加します。

' shardreplica01の場合 'インスタンス。

sh.addShard( "shardreplica01/shardsvr1:27017")
sh.addShard( "shardreplica01/shardsvr2:27017")

' shardreplica02の場合 'インスタンス。

sh.addShard( "shardreplica02/shardsvr3:27017")
sh.addShard( "shardreplica02/shardsvr4:27017")

エラーがないことを確認し、シャードのステータスを確認します。

sh.status()

下のスクリーンショットに示すように、ステータスをシャーディングします。

2つのシャードレプリカセットと1つのmongosインスタンスがスタックで実行されています。

ステップ7-テスト

次に、シャーディングを有効にしてからドキュメントを追加して、MongoDBサーバーをテストします。

mongosサーバーのmongoシェルにアクセスします。

ssh [email protected]
mongo --host mongos --port 27017

データベースのシャーディングを有効にする

新しいデータベースを作成し、新しいデータベースのシャーディングを有効にします。

use lemp
sh.enableSharding("lemp")
sh.status()

ここで、データベースのステータスを確認します。データベースはレプリカセット「shardreplica01」に分割されています。

コレクションのシャーディングを有効にする

次に、シャーディングをサポートする新しいコレクションをデータベースに追加します。シャードコレクション「name」を使用して「stack」という名前の新しいコレクションを追加し、データベースとコレクションのステータスを確認します。

sh.shardCollection("lemp.stack", {"name":1})
sh.status()

シャードコレクション「name」を含む新しいコレクション「stack」が追加されました。

コレクションの「スタック」にドキュメントを追加します。

次に、ドキュメントをコレクションに挿入します。シャードクラスターのコレクションにドキュメントを追加するときは、「シャードキー」を含める必要があります。

以下の例を使用できます。シャードキー'名前を使用しています '、コレクションのシャーディングを有効にするときに追加したように。

db.stack.save({
    "name": "LEMP Stack",
    "apps": ["Linux", "Nginx", "MySQL", "PHP"],
})

次のスクリーンショットに示すように、ドキュメントはコレクションに正常に追加されました。

データベースをテストする場合は、レプリカセット' shardreplica01に接続できます。 'PRIMARYサーバーを開き、mongoシェルを開きます。 'shardsvr2'PRIMARYサーバーにログインしています。

ssh [email protected]
mongo --host shardsvr2 --port 27017

レプリカセットで利用可能なデータベースを確認してください。

show dbs
use lemp
db.stack.find()

データベース、コレクション、およびドキュメントがレプリカセットで利用可能であることがわかります。

CentOS7上のMongoDBシャードクラスターが正常にインストールおよびデプロイされました。


Cent OS
  1. CentOS 8 /RHEL8にMongoDBをインストールする方法

  2. CentOS 6 /RHEL6にMongoDB4.2/4.0をインストールする方法

  3. CentOS 7 /RHEL7にMongoDB4.4/4.2をインストールする方法

  1. CentOS8にMongoDBをインストールする方法

  2. RHEL 8 /CentOS8にmongodbをインストールする方法

  3. CentOS7にFlintCMSをインストールする方法

  1. CentOS7にMongoDBをインストールする方法

  2. CentOS7にRをインストールする方法

  3. CentOS8にMongoDBをインストールする方法