CentOSで複数のRedisサーバーを立ち上げる
※rootユーザーではないredisユーザー(wheel)でログインしています
Redisをインストール
$ sudo yum install redis
読み込んだプラグイン:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: ty1.mirror.newmediaexpress.com
* epel: nrt.edge.kernel.org
* epel-debuginfo: nrt.edge.kernel.org
* epel-source: nrt.edge.kernel.org
* extras: ty1.mirror.newmediaexpress.com
* updates: ty1.mirror.newmediaexpress.com
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ redis.x86_64 0:3.2.12-2.el7 を インストール
--> 依存性の処理をしています: libjemalloc.so.1()(64bit) のパッケージ: redis-3.2.12-2.el7.x86_64
--> トランザクションの確認を実行しています。
---> パッケージ jemalloc.x86_64 0:3.6.0-1.el7 を インストール
--> 依存性解決を終了しました。
依存性を解決しました
================================================================================
Package アーキテクチャー
バージョン リポジトリー 容量
================================================================================
インストール中:
redis x86_64 3.2.12-2.el7 epel 544 k
依存性関連でのインストールをします:
jemalloc x86_64 3.6.0-1.el7 epel 105 k
トランザクションの要約
================================================================================
インストール 1 パッケージ (+1 個の依存関係のパッケージ)
総ダウンロード容量: 648 k
インストール容量: 1.7 M
Is this ok [y/d/N]: y
Downloading packages:
警告: /var/cache/yum/x86_64/7/epel/packages/jemalloc-3.6.0-1.el7.x86_64.rpm: ヘ ッダー V3 RSA/SHA256 Signature、鍵 ID 352c64e5: NOKEY
jemalloc-3.6.0-1.el7.x86_64.rpm の公開鍵がインストールされていません
(1/2): jemalloc-3.6.0-1.el7.x86_64.rpm | 105 kB 00:01
(2/2): redis-3.2.12-2.el7.x86_64.rpm | 544 kB 00:00
--------------------------------------------------------------------------------
合計 396 kB/s | 648 kB 00:01
file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 から鍵を取得中です。
Importing GPG key 0x352C64E5:
Userid : "Fedora EPEL (7) <epel@fedoraproject.org>"
Fingerprint: 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
Package : epel-release-7-11.noarch (@extras)
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
上記の処理を行います。よろしいでしょうか? [y/N]y
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : jemalloc-3.6.0-1.el7.x86_64 1/2
インストール中 : redis-3.2.12-2.el7.x86_64 2/2
検証中 : redis-3.2.12-2.el7.x86_64 1/2
検証中 : jemalloc-3.6.0-1.el7.x86_64 2/2
インストール:
redis.x86_64 0:3.2.12-2.el7
依存性関連をインストールしました:
jemalloc.x86_64 0:3.6.0-1.el7
完了しました!
Redisのワークディレクトリを作成
$ sudo mkdir /var/run/redis/ && sudo chown redis: /var/run/redis/
$ sudo mkdir /var/log/redis/ && sudo chown redis: /var/log/redis/
【1台目】設定ファイルのコピー
$ sudo cp -uvp /etc/redis.conf /etc/redis_6379.conf
`/etc/redis.conf' -> `/etc/redis_6379.conf'
【1台目】ファイルオーナーの変更
$ sudo mkdir /var/lib/redis_6379 && sudo chown redis: /var/lib/redis_6379
【1台目】設定ファイルの修正
$ sudo vi /etc/redis_6379.conf
...
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379
...
# If a pid file is specified, Redis writes it where specified at startup
# and removes it at exit.
#
# When the server runs non daemonized, no pid file is created if none is
# specified in the configuration. When the server is daemonized, the pid file
# is used even if not specified, defaulting to "/var/run/redis.pid".
#
# Creating a pid file is best effort: if Redis is not able to create it
# nothing bad happens, the server will start and run normally.
pidfile /var/run/redis/redis_6379.pid
...
# Specify the log file name. Also the empty string can be used to force
# Redis to log on the standard output. Note that if you use standard
# output for logging but daemonize, logs will be sent to /dev/null
logfile /var/log/redis/redis_6379.log
...
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis_6379/
【1台目】systemctlサービス起動ファイルのコピーと変更
$ sudo cp -upv /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis_6379.service
`/usr/lib/systemd/system/redis.service' -> `/usr/lib/systemd/system/redis_6379.service'
$ sudo vi /usr/lib/systemd/system/redis_6379.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/redis-server /etc/redis_6379.conf --supervised systemd
ExecStop=/usr/bin/redis-cli -p 6379 shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
【1台目】起動設定
$ sudo systemctl stop redis.service
$ sudo systemctl disable redis.service
$ systemctl start redis_6379.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: redis
Password: [パスワード入れてね]
==== AUTHENTICATION COMPLETE ===
$ systemctl enable redis_6379.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-unit-files ===
Authentication is required to manage system service or unit files.
Authenticating as: redis
Password: [パスワード入れてね]
==== AUTHENTICATION COMPLETE ===
Created symlink from /etc/systemd/system/multi-user.target.wants/redis_6379.service to /usr/lib/systemd/system/redis_6379.service.
==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon ===
Authentication is required to reload the systemd state.
Authenticating as: redis
Password: [パスワード入れてね]
==== AUTHENTICATION COMPLETE ===
【2台目】設定ファイルのコピー
$ sudo cp -uvp /etc/redis.conf /etc/redis_6380.conf
`/etc/redis.conf' -> `/etc/redis_6380.conf'
【2台目】ファイルオーナーの変更
$ sudo mkdir /var/lib/redis_6380 && sudo chown redis: /var/lib/redis_6380
【2台目】設定ファイルの修正
$ sudo vi /etc/redis_6380.conf
...
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6380
...
# If a pid file is specified, Redis writes it where specified at startup
# and removes it at exit.
#
# When the server runs non daemonized, no pid file is created if none is
# specified in the configuration. When the server is daemonized, the pid file
# is used even if not specified, defaulting to "/var/run/redis.pid".
#
# Creating a pid file is best effort: if Redis is not able to create it
# nothing bad happens, the server will start and run normally.
pidfile /var/run/redis/redis_6380.pid
...
# Specify the log file name. Also the empty string can be used to force
# Redis to log on the standard output. Note that if you use standard
# output for logging but daemonize, logs will be sent to /dev/null
logfile /var/log/redis/redis_6380.log
...
# The working directory.
#
# The DB will be written inside this directory, with the filename specified
# above using the 'dbfilename' configuration directive.
#
# The Append Only File will also be created inside this directory.
#
# Note that you must specify a directory here, not a file name.
dir /var/lib/redis_6379/
【2台目】systemctlサービス起動ファイルのコピーと変更
$ sudo cp -upv /usr/lib/systemd/system/redis.service /usr/lib/systemd/system/redis_6380.service
`/usr/lib/systemd/system/redis.service' -> `/usr/lib/systemd/system/redis_6380.service'
$ sudo vi /usr/lib/systemd/system/redis_6380.service
[Unit]
Description=Redis persistent key-value database
After=network.target
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/bin/redis-server /etc/redis_6380.conf --supervised systemd
ExecStop=/usr/bin/redis-cli -p 6380 shutdown
Type=notify
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755
[Install]
WantedBy=multi-user.target
【2台目】起動設定
$ sudo systemctl stop redis.service
$ sudo systemctl disable redis.service
$ systemctl start redis_6380.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: redis
Password: [パスワード入れてね]
==== AUTHENTICATION COMPLETE ===
$ systemctl enable redis_6380.service
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-unit-files ===
Authentication is required to manage system service or unit files.
Authenticating as: redis
Password: [パスワード入れてね]
==== AUTHENTICATION COMPLETE ===
Created symlink from /etc/systemd/system/multi-user.target.wants/redis_6379.service to /usr/lib/systemd/system/redis_6379.service.
==== AUTHENTICATING FOR org.freedesktop.systemd1.reload-daemon ===
Authentication is required to reload the systemd state.
Authenticating as: redis
Password: [パスワード入れてね]
==== AUTHENTICATION COMPLETE ===
接続テスト
$ redis-cli -p 6379
127.0.0.1:6379> set key "hoge"
OK
127.0.0.1:6379> get key
"hoge"
127.0.0.1:6379> del key
(integer) 1
127.0.0.1:6379> get key
(nil)
$ redis-cli -p 6380
127.0.0.1:6380> set key "hoge"
OK
127.0.0.1:6380> get key
"hoge"
127.0.0.1:6380> del key
(integer) 1
127.0.0.1:6380> get key
(nil)