CentOS 7にApacheをインストールする方法
CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。
2009年の構想以来、MongoDBはNoSQL業界をリードしてきました。MongoDBのコアコンセプトの1つはレプリカセットです。そのため、作業する前にまずコンセプトを確認してください。
データベースのレプリケーションで使用される最も単純な通信モデルは、マスタースレーブアーキテクチャです。その名前が示すように、このモデルには2つの役割があり、一意のマスターと多くのスレーブに分散しています。マスターの役割は、クライアントによって実行される読み取り操作と書き込み操作を処理することであり、スレーブはマスターのレプリカとして扱われます。
このモデルの最も重要な利点は、マスターのパフォーマンスがバックアップ操作によって損なわれず、バックアップ操作が非同期で行われることであり、マスターノードに障害が発生すると、これが深刻な問題になる可能性があります。スレーブノードは読み取り専用であり、手動でマスターノードに昇格する必要があるため、今回はデータが失われる可能性があります。
可用性の問題を解決する1つのオプションは、アーキテクチャに複数のマスターを含めることですが、これにより、これらのインスタンス間のデータの一貫性と構成の複雑さが増すという別の問題が発生する可能性があります。
ここで、コンテキストを指定して、MongoDBのレプリカセットテクノロジーを紹介できます。レプリカセットは、自動フェイルオーバーを備えたマスタースレーブアーキテクチャの名前です。そのため、マスター(現在の名前はprimary
)が正しく機能しなくなったときに、election
がトリガーされ、残りのスレーブ(現在はsecondaries
)と呼ばれます。
プライマリノードは書き込み操作を実行する唯一のノードです。デフォルトでは、読み取り操作もプライマリによって処理されますが、この動作は後で変更できます。
操作はoplog
(操作ログ)に記録され、セカンダリノードはコンテンツのコンテンツに基づいて非同期でコンテンツを更新しますoplog
注:oplog
は上限付きのコレクションです。これは、コレクションに制限があることを意味し、local.oplog.rs
任意のセットメンバーのmongoシェル内でこのコレクションのコンテンツを確認できます。
セカンダリノードには、データベースの適切なバックアップを行う役割の他に、次の役割があります。
これらの特性により、さまざまなタイプのセカンダリノードを使用できます。
primary
で���ず、選択をトリガーすることもできませんが、選択に投票でき、完全なレプリカを持ち、読み取り操作を受け入れることができます。これらは、マルチデータセンターの展開に役立ちます。Priority 0
メンバーですが、さらに読み取り操作を処理できません。必要に応じて投票することができます。これらのメンバーの優先タスクは、レポートとバックアップです。priority 0
ノードである必要があり、それらもhidden
メンバーであることが推奨されます。インフラストラクチャを展開する前にそれを設計することが重要であり、この設計には考慮すべき点があります。
レプリカセットを作成するための要素の最小数は3であることに注意してください。3つのタイプのノードを少なくとも1つのプライマリノードと1つのセカンダリノードで混在させることができます。
このガイドでは、1つのプライマリと2つの標準セカンダリの3つのメンバーを展開しています。
注:アービターとセカンダリメンバーが混在する最大7名の投票メンバーがいることをお勧めします。
名前は参照用ですが、セットの構成で使用しています。本番環境では複数のレプリカセットを使用できるため、セットの名前を無視しないでください。
このチュートリアルでは、ユーザーにセットの名前を選択するように勧めています。
このチュートリアルでは、通信の問題を回避できるように、同じデータセンターにデプロイすることをお勧めします。
注:異なるデータセンターに展開する場合は、ノードをVPNで囲むことをお勧めします
Ubuntu 16.04 x64の3つのノードを起動します。可能な場合は、カスタマーポータルと同じリージョンにあります。対処するプロジェクトのタイプに応じて名前を付けることを忘れないでください。また、これらすべてのノードで同じサーバーサイズになるようにしてください。
3つのノードを展開したら、すべてのノードが残りのノードと通信できることを確認する必要があります。2つのノードにSSHで接続し、を使用して他のノードに到達する必要がありますping -c 4 EXAMPLE_IP
。EXAMPLE_IP
ノードの実際のIPに変更します。
ここでは、2つのノード間の正常な通信の例を確認できます。
root@foo_node:~# ping -c 4 EXAMPLE_IP
PING EXAMPLE_IP (EXAMPLE_IP) 56(84) bytes of data.
64 bytes from EXAMPLE_IP: icmp_seq=1 ttl=59 time=0.594 ms
64 bytes from EXAMPLE_IP: icmp_seq=2 ttl=59 time=0.640 ms
64 bytes from EXAMPLE_IP: icmp_seq=3 ttl=59 time=0.477 ms
64 bytes from EXAMPLE_IP: icmp_seq=4 ttl=59 time=0.551 ms
--- EXAMPLE_IP ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3021ms
rtt min/avg/max/mdev = 0.477/0.565/0.640/0.064 ms
一般に、UbuntuのMongoDBパッケージを使用できますが、常に最新であるため、公式のコミュニティリポジトリを使用することをお勧めします。このリポジトリには、次のパッケージが含まれています。
mongod
デーモン(データ要求を処理するプライマリプロセス)が含まれます。mongos
デーモン(共有デプロイメントのルーティングサービス)が含まれます。mongo shell
JavaScriptインターフェースです。パッケージのインストールに進みます。
公開鍵をパッケージ管理システムにインポートします。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
MongoDBのリストファイル「/etc/apt/sources.list.d/mongodb-org-3.4.list」を作成します。
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
パッケージデータベースを更新します。
sudo apt-get update
MongoDBメタパッケージをインストールします。
sudo apt-get install -y mongodb-org
MongoDBサービスを開始します。
sudo service mongod start
これmongo shell
で、任意のbashセッションでを開くことができます。これを行うには、mongo
コマンドを使用する必要があります。あなたはこれに似た何かによって迎えられるでしょう。
MongoDB shell version v3.4.7
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.7
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see http://docs.mongodb.org/
Questions? Try the support group
http://groups.google.com/group/mongodb-user
Server has startup warnings:
*Some extra logs are cut by the way*
>
sudo service mongod stop
後でmongod
いくつかのパラメータを使用して再び開始するため、でサービスを停止することを忘れないでください。セットの3つのノードすべてでこのプロセスを繰り返します。
キーファイルを使用すると、レプリカセット管理で2つの概念が強制されます。最初はInternal Authentication
です。デフォルトではmongo shell
、ユーザーを使用せずにセッションを開始でき、このセッションはデータベースを完全に制御できますが、認証にキーファイルを使用すると、mongo shell
セッションはという状態になりlocalhost exception
ます。この状態では、管理者ユーザーとレプリカセットのみを作成できます。2番目の概念はRole-Based Access Control
、つまり、承認です。これは、レプリカセットの管理レベルを管理するために適用されます。
キーファイルは、セットで使用するパスワードです。このパスワードは、セットのすべてのメンバーで同じである必要があります。セキュリティを強化するには、任意のツールでランダムキーを使用することが重要です。
コンテンツの長さは6〜1064文字にする必要があります。またread only
、キーファイルの権限を設定する必要があります。
chmod 400 PATH_OF_YOUR_KEYFILE
キーファイルをすべてのセットメンバーにコピーします。将来の参照のために一貫したフォルダーを使用し、リムーバブルメディアに保存しないでください。
また、mongod
アクセスできるファイルのフォルダを使用してください。
このステップではmongod daemon
、すべてのセットメンバーでを開始する必要があります。mongod
プロセスを開始するには、設定ファイルを使用する方法とコマンドラインを使用する方法の2つがあります。どちらも非常に簡単な方法ですが、簡単にするために、このチュートリアルではコマンドラインバージョンを使用しています。
このコマンドで前に選択した名前を使用します。
mongod --keyFile PATH_OF_YOUR_KEYFILE --replSet "YOUR_SET_NAME"
デフォルトでmongod
は、デーモンとして実行されません。--fork
パラメータを使用するか、upstart
を使用してデーモンとして完全に実行する必要があります。このチュートリアルではmongod
、デーモンとして実行することはお勧めしません。ターミナルに直接ログを表示できます。
注:作成したレプリカセットは変更できないため、レプリカセットの名前は慎重に入力してください。
注:mongod
デーモン以外のプロセスとして実行する場合、作業を続行するには別のssh接続を開く必要があります。
mongo
コマンドを使用してを開く必要がありますmongo shell
。これは、セットの任意のメンバーで実行できます。
現在、私たちはと呼ばれる状態にありlocalhost exception
ます。キーmongod
ファイルを使用してプロセスを設定する場合、読み取り/書き込み操作を適用する前にデータベース管理者を作成する必要がありますが、これについては後で説明します。
これはデリケートな部分です。ステップ4のrs.initiate()
内のコマンドを使用してmongo shell
います。このコマンドを使用する前に確認してみましょう。
rs.initiate(
{
_id : <replicaSetName>,
members: [
{ _id : 0, host : "example1.net:27017" },
{ _id : 1, host : "example2.net:27017" },
{ _id : 2, host : "example3.net:27017" }
]
}
)
最初の_id
フィールドは文字列で、--replSet
以前にに渡されたと一致する必要がありますmongod
。また、の各値host
は、レプリカセットの各メンバーのIPまたはドメイン名である必要があります。mongoインスタンスが各メンバーで使用しているポートを追加することを忘れないでください。
データを使用してコマンドを実行します。これによりがトリガーelection
され、プライマリが自動的に選択されます。
ここで、シェルカーソルがYOUR_SET_NAME:PRIMARY>
またはに変更されていることに注意してくださいYOUR_SET_NAME:SECONDARY
。これは、セットの作成が成功したことを意味します。
作業を続けるprimary
には、もちろんが見つからない場合はを見つける必要があります。rs.status()
コマンドを使用してレプリカセットの情報を表示し、を見つけますprimary
。あなたは物件を探しています"stateStr" : "PRIMARY"
。
を見つけたらprimary
、を入力mongo shell
し、データを使用して次のコマンドを実行します。
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOU_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
)
このadmin = db.getSiblingDB("admin")
部分でadmin
は、別のデータベースから書き込むことができます。これにより、というエイリアスが作成されるadmin
ため、代わりにそれを使用してコマンドを実行できます。
操作が成功すると、ユーザーが追加されたという通知が表示されます。
Successfully added user: {
"user" : "YOUR_USER",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
]
}
この時点では、すべてのサーバーの管理者しかいませんが、レプリカセットを持っていると、clusterAdmin
役割を持つユーザーが必要になります。問題を分離するために、その役割のみを持つ別のユーザーを作成します。
の制限に達したlocalhost exception
ため、1ステップ前に作成したユーザーの認証を変更する必要があります。
内のユーザーmongo shell
は次のように変更できます。
db.getSiblingDB("admin").auth("YOUR_ADMIN", "YOUR_PASSWORD" )
にまだ接続していない場合は、mongo shell
代わりにこのコマンドを使用してください。
mongo -u "YOUR_ADMIN" -p "YOUR_PASSWORD" --authenticationDatabase "admin"
ユーザーの変更が通知され、次のステップに進むことができます。
このclusterAdmin
役割により、ユーザーはレプリカセットを完全に制御できます。作成は、adminユーザーを作成するのと同じくらい簡単です。
db.getSiblingDB("admin").createUser(
{
"user" : "YOUR_USER",
"pwd" : "YOUR_PASSWORD",
roles: [ { "role" : "clusterAdmin", "db" : "admin" } ]
}
)
今回はロールがに変更されていることに注意してくださいclusterAdmin
。
現在、2人の管理者ユーザーがいます。1人はサーバーを完全に制御し、もう1人はレプリカセットレベルの管理タスクにアクセスします。ただし、データベースを「使用」するアクセス権を持つユーザーが不足しているため、ここでそのユーザーを作成します。
admin = db.getSiblingDB("admin")
admin.createUser(
{
user: "YOUR_USER",
pwd: "YOUR_PASSWORD",
roles: [ { role: "userAdminAnyDatabase", db: "cars" } ]
}
)
今回はdb
パーツを変更していることに注意してください。ここでは、ユーザーがデータベースにアクセスできるようにしています。この場合は、という名前のデータベースを使用していますcars
。
データベースはまだ作成されていません。そのためには、いくつかのコマンドを入力して暗黙的に作成する必要があります。cars
データベースに切り替えます。
use cars
通知が届きますswitched to db cars
。
データベースはまだ作成されていないため、データベースに何かを書き込む必要があります。次の例を使用しています。
db.models.insert({ make: "Dodge", model: "Viper", year: 2010 })
今回はで通知されWriteResult({ "nInserted" : 1 })
ます。
必要に応じて、次のメソッドを使用して、データベース内のすべてのオブジェクトを取得できますfind()
。
db.models.find()
{ "_id" : ObjectId("59acd8b55334882863541ff4"), "make" : "Dodge", "model" : "Viper", "year" : 2010 }
_id
出力は異なりますが、他のデータは同じであることに注意してください。十分な時間が与えられると、このデータは他のメンバーに複製されます。
理解しなければならない情報がたくさんあるため、レプリカセットの作成は最初は難しいかもしれませんが、その背後にあるアイデアを理解したら、簡単にそれを展開できるので、初めて理解できない場合でも諦めないでください。レプリカセットは、ロードバランシングなどの高度な機能を追加する可能性を開くため、MongoDBの管理において重要であることを覚えておいてください。
CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。
FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。
サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。
CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。
Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。
CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。
WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。
FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。
Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。
ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。