Redis は、ディスクとメモリの両方に保存できるデータのおかげで、特に高速なオープン ソース データベースです。これは、リアルタイムのデータ処理を必要とするアプリケーションを開発するための最良のソリューションの 1 つです。
このチュートリアルでは、Linux CentOS 7 ディストリビューションを使用してサーバーに Redis データベースをインストールおよび構成する方法と、データベースのセキュリティを向上させ、レプリカ インストールを作成する方法について詳しく説明します。
まず、SSH 接続を介してサーバーに接続します。まだ行っていない場合は、ガイドに従って SSH プロトコルで安全に接続することをお勧めします。ローカル サーバーの場合は、次の手順に進み、サーバーのターミナルを開きます。
Redis のインストール
Redis をインストールするには、yum パッケージ マネージャーを使用します:
$ sudo yum install redis
インストールが完了したら、サービスを開始してシステムにインストールします:
$ sudo systemctl start redis
$ sudo systemctl enable redis
インストールの確認
Redis が正しくインストールされていることを確認するには、redis-cli コマンドライン クライアントを使用して、データベースにテスト値を設定します:
$ redis-cli set test 123456
OK
すべてが正しく機能すると、サーバーは「OK」で応答します。したがって、値が正しく保存されているかどうかを確認してください:
$ redis-cli get test
"123456"
Redis は、保存したばかりの値 (この場合は文字列 "123456") を返します。次に、このテスト キーを削除します。
$ redis-cli del test
(integer) 1
インストールのセキュリティを向上させる
Redis の初期設定では、パスワードや認証形式を必要とせずに、ローカル アドレスからのみデータベースに接続できます。
すべての Redis 設定は、/etc/redis.conf の構成ファイルによって読み取られ、CONFIG SET / CONFIG GET コマンドを介して任意のクライアント ソフトウェアを使用して、いつでもリアルタイムで上書きできます。ただし、クライアントによって変更された設定は構成ファイルに保存されず、次に Redis を起動したときに失われることに注意してください。 .
データベースのセキュリティを向上させるには、構成ファイルの requirepass エントリを変更または挿入して、認証パスワードを設定します:
requirepass 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4
パスワードはプレーンテキストの構成ファイルに保存され、Redis は 1 秒あたり複数の接続を処理できるため、ブルートフォース攻撃に耐えるのに十分な長さである必要があります。
最も重要な設定の中には、Redis が接続の受信を有効にする必要があるアドレスを設定するバインドもあります。
bind 127.0.0.1
ローカル アドレス 127.0.0.1 のみがデフォルトで有効になっています。ただし、Redis サーバーを外部に公開する必要がある場合は、次のような追加のアドレスを追加できます。
bind 127.0.0.1 51.125.63.201
もう 1 つのよくある間違いは、着信接続をリッスンするためにデフォルトのポートを設定したままにすることです。これにより、任意のポート スキャン ソフトウェアが Redis サーバーを見つけることができます。
port 2589
ポートを 6379 から 2589 に変更することで、Redis サービスを非表示にし、インストールのセキュリティ レベルをさらに高めることができます。
設定ファイルへのすべての変更が完了したら、サービスを再起動します:
$ sudo systemctl restart redis
適用したパラメータを確認するには、redis-cli を使用して、たとえば、上で設定した新しい構成ポートとパスワードを使用して、現在のバインド パラメータを取得します。
$ redis-cli -a 5eMX822gZ0lCGdd81rSIrTvPCUfeEFYAUIgyJNs4 -p 2589 config get bind
サーバーは必要なパラメータで応答する必要があります:
1) "bind"
2) "127.0.0.1"
レプリカ インストールの作成
Redis では、いくつかの手順でレプリカ (コピー) サーバーを構成できます。マスター バージョンと比較して、このレプリカ サーバーはリアルタイムで更新されます。
この構成により、メイン サーバーが故障した場合の読み取り用のバックアップ サービスを提供できます。
スレーブ セカンダリ サーバーに接続したら、yum を使用して Redis のインストールを完了します。
$ sudo yum install redis
前の段落と同じセキュリティ手順を適用して、この Redis インスタンスを保護することもできます。次の例では、デフォルトのパラメーターが使用されます。
メイン (マスター) サーバーと同期するには、スレーブ マシンがマスター マシンと正しく通信する必要があります。パブリック IP アドレスがマスター マシンの構成 (バインド パラメーター) に存在することを確認し、スレーブ マシンからコマンドを開始して接続が機能するかどうかを確認します。
$ redis-cli -h [MASTER_IP_ADDRESS] -a [PASSWORD_MASTER] ping
PONG
ping コマンドに応答があれば、スレーブは正しく通信できています。
次に、設定ファイル /etc/redis.conf の次のパラメータを変更して、スレーブの実際の設定に進みます:
# If it is there, specify the master connection password too.
masterauth password
# The slaveof directory specifies the master connection parameters (ADDRESS_IP PORT)
slaveof 195.231.4.71 6379
完了したら、構成を保存し、次のように入力して Redis スレーブ サーバーを起動します。
$ sudo systemctl start redis
$ sudo systemctl enable redis
同期が正しく有効化されたことを確認するには、tail を使用してサービス ログ ファイルの最後の行を表示します。
$ tail /var/log/redis/redis.log
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: receiving 77 bytes from master
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Flushing old data
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Loading DB in memory
6345:S 02 Jul 10:53:46.695 * MASTER <-> SLAVE sync: Finished with success
最後の数行で、同期がアクティブで正常に機能していることを確認できます。
次に、実際のテストを実行して、データベースに値を設定し、それがマスター サーバーによって正しく読み取られることを確認します。
マスター サーバーからテスト キーを設定します:
$ redis-cli -a password set test hello
OK
スレーブサーバーから同じ値が読み取られます:
$ redis-cli get test
"hello"
ご覧のとおり、マスターとスレーブの両方に同じ値が保存されています。これは、レプリカが正しく機能していることを意味します!