読者です 読者をやめる 読者になる 読者になる

@Konboi memo

主に技術に関してつらつらと。

redisサーバー構築メモ

redis サーバー メモ

はじめに

今回は、そこそこリクエストがあるサービスを担当させてもらえることになりました。 複数のWebサーバーを使用する必要があり、複数のWebサーバーでもsessionを共有できるようにredisをセッションストレージとして使用することにしました。

構成はセッションストレージ部分は下記のようになっており、WebへはLBによって振り分け られるようになっております。

f:id:Konboi:20130305144738p:plain

今回は、redisサーバーの構築から連携まで初めてだったので、今後のことも踏まえてメモしておく事にしました。

環境構築

redis のインストール

はじめにredisのインストールです。 今回はCentOS 6で環境を構築しました。 様々なブログを拝見するとソースをダウンロードして自前でビルドしている記事が多かったですが yum でインストールしました。

$ sudo yum --enablerepo=epel install redis

インストールが無事終了すると

/etc/init.d/redis が追加されていると思います。

redis の起動

インストールが終わったので redis を起動してみます。

$ sudo /etc/init.d/redis start

問題なく起動されると思います。 起動できたら本当にredisサーバーが動いているか確認します。

redis の動作確認

確認はredisのインストール時に一緒にインストールされる redis client を使用しました。

$ redis-cli

redis 127.0.0.1:6379> set hoge 'foo'
OK

redis 127.0.0.1:6379> get hoge
"foo"

ここまでの手順を redis01/master, redis02/slave で行い両方でど redis サーバーの動作確認を行います。

redisサーバーの連携

問題なく接続できることが確認できたらslaveのサーバーからmasterのサーバーへ接続できることを確認します。

接続確認

redis client にはホストを指定できるオプションがあるので redis client を使って接続の確認を行います。

$ redis-cli -h <接続先のホスト>

Could not connect to Redis at konboi.com:6379: Connection refused
not connected> 

おそらく初期設定のままならば接続できないと思います。

設定の編集 その1

まずは slave からmasterへ接続できるように設定を編集します。 redis.の設定ファイルは /etc/redis.conf になります。 念のためもとの設定ファイルをコピーし設定を編集します。

$ cp /etc/redis.conf /etc/redis.conf.backup
$ sudo vi /etc/redis.conf
# /etc/redis.conf

....

- bind 127.0.0.1
+ bind 0.0.0.0

...

bind 0.0.0.0 にすることでどのサーバーからも接続できるようになっています。 サーバーの構成的にこのままではセキュリティ的にまうずい場合は、 iptables で設定するか bind に接続するサーバーをそれぞれ記入します。

編集が終わったら

$ /etc/init.d/redis restart

これで編集が反映され

$ redis-cli -h <接続先のホスト>

で接続できるようになります。

設定の編集 その2

master - slave間の接続が確認できたらslaveの設定を行います。 slaveにするサーバー側に下記を設定します。

# /etc/redis.con 

...

# slaveof <masterip> <masterport>
slaveof <masterにするサーバーのIP> <masterで動いているredisのポート>
...

設定後、再起動します。 設定が反映されいているか、確認します。

# slave側
$ redis-cli
redis 127.0.0.1:6379> INFO
...
role:slave 
...


#master側
$ redis-cli
redis 127.0.0.1:6379> INFO
...
role:master
...

このように slave側で role:slave, master側で role:master になっていれば大丈夫です。

以上になります。

まとめ

  • slave側からmaster側に接続しに行く時にbindが 127.0.0.0 のままで接続できなくてハマってしまった。

  • 思ったより master, slaveの設定が簡単だった。 実際運用してみないと何ともいえないけど設定的な意味では。

参考サイト

NOSQLの基礎知識 (ビッグデータを活かすデータベース技術)
本橋信也 河野達也 鶴見利章
リックテレコム
売り上げランキング: 2,833