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

CentOS7にMongoDBシャードクラスターをデプロイする方法

シャーディング は、異なるマシン間でデータセットを保存するためのMongoDBプロセスです。これにより、データの水平スケールを実行し、すべてのデータを独立したインスタンスに分割できます。シャーディングを使用すると、データの増加に基づいてマシンをスタックに追加できます。

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

簡単にしましょう。音楽のコレクションがある場合、「Sharding」は音楽コレクションをさまざまなインスタンスまたはレプリカセットのさまざまなフォルダに保存して保持しますが、「Replication」は音楽コレクションを他のインスタンスに同期するだけです。

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コマンドを使用してすべてのサーバーを再起動します。

reboot
ステップ2-すべてのインスタンスに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エディターを使用します。

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ルーターにシャードを追加する

前の手順で別のシェルを開き、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-テスト

セットアップをテストするには、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」が追加されました。

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

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

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

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サーバーにCDPを展開する方法

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

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

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

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

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

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

  2. CentOS7にMattermostをデプロイする方法

  3. CentOS7にRocket.Chatをデプロイする方法