Redis建置學習心得
由於在原先架構中, 同時會有三套Redis做為相互master-slave與sentinel monitor, 讓三個AP可以同時運用各自的Redis而不互相影響, 因此, 同一台伺服器至少會有四個Redis Instance.
要同時有多個Redis Instance在一台機器上時, 基本上不用再裝相同的程式, 只需要把安裝操作中, 開始建立configure檔案的步驟向下做下去即可. 以本例就是建立6380 port在192.168.127.101~103, 然後打上第二組replication. 但要比較注意的是, 所有預設放在6379 port的設定都要改為6380 (或是有指定的port).
1. 將Redis目錄中的redis.conf複製一份到 /etc/redis/路徑下, 並且加上之後要使用的port number做為檔名
# cp /usr/redis-3.2.9/redis.conf /etc/redis/6380.conf
2. 同時建立一個對應的port路徑在 /var/redis下
# mkdir /var/redis/6380
3. 修改剛才複製出來的/etc/redis/6379.conf 檔案內容
# vi /etc/redis/6380.conf
• 將 bind <IP> 的值修改為 實體IP位置, 不使用127.0.0.1 (未來實作不會在同一台)
• 將 port改為6380
• 將 daemonize 的值修改為 yes
• 將 pidfile 的值修改為 /var/run/redis_6380.pid
• 將 logfile 的值修改為 /var/log/redis_6380.log
• 將 dir 的值修改為 /var/redis/6380
4. 開啟防火牆在tcp 6380 port上
# firewall-cmd --permanent --add-port=6380/tcp
# firewall-cmd --reload
5. 將<REDISPATH>/utils/redis_init_script 複製到 /etc/init.d/<file_name> 統一管理, 特別是如果機器上有多個Redis Instance時 (後續會實做多個instance)
# cp /usr/redis-3.2.9/utils/redis_init_script /etc/init.d/redis_6380
6. 修改複製出來的檔案內容, 原則上仍以RedisMaster為例
# vi /etc/init.d/redis_6380
以下這幾行都要指定到正確的檔案位置, 預設的是舊版的, 所以會找不到檔案……與REDISPORT要給對PORT
REDISPORT=6380
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cli
PIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"
7. 啟動Redis, 語法如下
# /etc/init.d/redis_6380 start
8. 驗證, 看看服務是啟動的. 下列語法如果回應PONG就表示redis目前已啟動服務.
# redis-cli -h 192.168.127.101 -p 6380 ping
PONG
9. 測試重啟服務
# redis-cli -h 192.168.127.101 -p 6380 save
# redis-cli -h 192.168.127.101 -p 6380 shutdown
啟動Redis, 語法如下
# /etc/init.d/redis_6380 start
10. 設定開機時自動啟動redis, 在此使用CentOS 7之後的新功能, 註冊service的方式, 舊版的則請參考附註
建立service相案給redis (port 6380)
# vi /lib/systemd/system/redis_6380.service
輸入下列內容到檔案裡, 然後存檔離開 (copy的話用附件檔)
[Unit]
Description=Redis on port 6380
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /etc/redis/6380.conf
ExecStop=/usr/local/bin/redis-cli -p 6380 shutdown
[Install]
WantedBy=multi-user.target
註冊並啟動 Redis 服務
設定Service:
# systemctl daemon-reload
# systemctl enable redis_6380.service
Created symlink from /etc/systemd/system/multi-user.target.wants/redis_6380.service to /usr/lib/systemd/system/redis_6380.service.
接著就可以把第二套 (PORT 6380) 與第三套 (PORT 6381) 的Redis建立起來, 並設定好Replication, 其他設定都和在PORT 6379上相同, 只是遇上了PORT要指定時要改變一下, 就不再重複說明了.