redis集群安裝部署 redis三主三從集群
- 1、下載redis
- 2、安裝redis集群 三主三從
- 3、配置redis開機自啟動
- 3.1、建立啟動腳本
- 3.2、復制多份redis啟動腳本給集群使用
- 3.3、添加可執行權限
- 3.4、配置開機自啟動
1、下載redis
本次redis安裝部署選擇當前最新的穩定版本7.4.1
下載鏈接: https://github.com/redis/redis/archive/refs/tags/7.4.1.tar.gz
安裝包名是redis-7.4.1.tar.gz
2、安裝redis集群 三主三從
redis三主三從集群機器規劃
機器IP | redis端口 | redis安裝目錄 | 每個redis節點配置文件 | 每個redis節點的集群配置文件 |
---|---|---|---|---|
192.168.2.162 | 6379 | /usr/local/redis/ | /usr/local/redis/conf/redis-cluster-6379.conf | /data/redis7/cluster/6379/data/nodes-6379.conf |
192.168.2.162 | 6380 | /usr/local/redis/ | /usr/local/redis/conf/redis-cluster-6380.conf | /data/redis7/cluster/6380/data/nodes-6380.conf |
192.168.2.164 | 6379 | /usr/local/redis/ | /usr/local/redis/conf/redis-cluster-6379.conf | /data/redis7/cluster/6379/data/nodes-6379.conf |
192.168.2.164 | 6380 | /usr/local/redis/ | /usr/local/redis/conf/redis-cluster-6380.conf | /data/redis7/cluster/6380/data/nodes-6380.conf |
192.168.2.168 | 6379 | /usr/local/redis/ | /usr/local/redis/conf/redis-cluster-6379.conf | /data/redis7/cluster/6379/data/nodes-6379.conf |
192.168.2.168 | 6380 | /usr/local/redis/ | /usr/local/redis/conf/redis-cluster-6380.conf | /data/redis7/cluster/6380/data/nodes-6380.conf |
上傳redis-7.4.1.tar.gz到三臺機器上
下面是安裝redis 7.4.1命令,3臺redis機器都執行
cd /path/to/redis-7.4.1.tar.gz
tar -xzvf redis-7.4.1.tar.gz
cd redis-7.4.1
make
make install PREFIX=/usr/local/redis
PREFIX=/usr/local/redis 這個是指定redis的安裝目錄,因此要保證這個目錄為空。
安裝完后 會自動創建/usr/local/redis目錄 內容如下 內容就是redis的可執行程序redis-cli、redis-server
配置redis環境變量
vi /etc/profile
在/etc/profile末尾處中增加如下內容:
export REDIS_HOME=/usr/local/redis
export PATH=$PATH:$REDIS_HOME/bin
之后執行source加載環境變量:
source /etc/profile
在執行如下命令。如果能輸出redis版本說明環境變量配置成功:
redis-server --version
然后創建redis集群的目錄、配置文件等,3臺redis機器都執行
mkdir -p /data/redis7/cluster/6379
mkdir -p /data/redis7/cluster/6380cd /data/redis7/cluster/6379
mkdir logs data
cd /data/redis7/cluster/6380
mkdir logs datamkdir /usr/local/redis/conf
mkdir /usr/local/redis/pidvi /usr/local/redis/redis.conf
redis.conf中填入以下內容:
#redis訪問端口(需要修改)
port 6379#設置開啟守護進程
daemonize yes#關閉保護模式
protected-mode no#開啟遠程訪問
bind 0.0.0.0# 開啟AOF
appendonly yes#日志存放位置(需要修改)
logfile "/data/redis7/cluster/6379/logs/redis-cluster-6379.log"#數據保存目錄(需要修改)
dir /data/redis7/cluster/6379/data/# pid文件創建位置(需要修改)
pidfile /usr/local/redis/pid/redis_6379.pid#aof 持久化文件位置(需要修改) 在dir目錄下
appendfilename "6379-appendonly.aof"#修改rdb持久化文件位置(需要修改) 在dir目錄下
dbfilename 6379-dump.rdb# 開啟集群模式
cluster-enabled yes
# 每一個redis節點需要有一個配置文件,三主三從集群共6個節點,因此需要6份配置文件。每個節點處于集群中都需要告知其他所有節點,達到集群中節點信息交換的目的,這個文件用于存儲集群模式下的集群狀態等信息,這個文件是由redis自己維護,不用管。如果你要重新創建集群,那么把每個節點的這個文件刪了就行
#(需要修改) 在dir目錄下
cluster-config-file nodes-6379.conf
# 超時時間,超時則認為master宕機,隨后主備切換單位毫秒
cluster-node-timeout 5000
#設置集群節點間訪問密碼
masterauth 123456
#設置連接密碼
requirepass 123456
創建redis集群配置文件
cp /usr/local/redis/redis.conf /usr/local/redis/conf/redis-cluster-6379.conf
cp /usr/local/redis/redis.conf /usr/local/redis/conf/redis-cluster-6380.conf
編輯 /usr/local/redis/conf/redis-cluster-6380.conf 把其中的6379修改成6380
sed -i "s/6379/6380/g" /usr/local/redis/conf/redis-cluster-6380.conf
在每個redis機器上分別啟動redis程序
nohup /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-cluster-6379.conf &
nohup /usr/local/redis/bin/redis-server /usr/local/redis/conf/redis-cluster-6380.conf &
創建redis集群,在任意一臺redis機器上執行就行
–cluster-replicas 1 :表示每個主節點需要1個從節點。這里隨機分配主從關系,如果需要定制,則可以不加該參數,使用add-node來定制,
redis-cli --cluster create 192.168.2.162:6379 192.168.2.162:6380 192.168.2.164:6379 192.168.2.164:6380 192.168.2.168:6379 192.168.2.168:6380 --cluster-replicas 1 -a 123456
會提示是否接受上面配置,輸入yes就可以了,就開始初始化集群,等待完成即可,
至此redis三主三從集群部署完成。
查看redis集群狀態
在redis集群中任一臺機器上登錄redis
redis-cli -p 6379
登入redis后 執行
auth 123456
cluster info
cluster nodes
其中cluster info 顯示 cluster_state:ok 即表示集群創建成功。否則集群創建失敗。
3、配置redis開機自啟動
3.1、建立啟動腳本
官方啟動腳本 https://github.com/redis/redis/blob/unstable/utils/redis_init_script
這是官方啟動腳本內容
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.### BEGIN INIT INFO
# Provides: redis_6379
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFOREDISPORT=6379
EXEC=/usr/local/bin/redis-server
CLIEXEC=/usr/local/bin/redis-cliPIDFILE=/var/run/redis_${REDISPORT}.pid
CONF="/etc/redis/${REDISPORT}.conf"case "$1" instart)if [ -f $PIDFILE ]thenecho "$PIDFILE exists, process is already running or crashed"elseecho "Starting Redis server..."$EXEC $CONFfi;;stop)if [ ! -f $PIDFILE ]thenecho "$PIDFILE does not exist, process is not running"elsePID=$(cat $PIDFILE)echo "Stopping ..."$CLIEXEC -p $REDISPORT shutdownwhile [ -x /proc/${PID} ]doecho "Waiting for Redis to shutdown ..."sleep 1doneecho "Redis stopped"fi;;*)echo "Please use start or stop as first argument";;
esac
vi /etc/init.d/redisd6379 填入以下改造后內容如下(對官方啟動腳本加以改造適應我們自己安裝的redis程序)
#!/bin/sh
#
# Simple Redis init.d script conceived to work on Linux systems
# as it does use of the /proc filesystem.### BEGIN INIT INFO
# Provides: redis_6379
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Redis data structure server
# Description: Redis data structure server. See https://redis.io
### END INIT INFOREDISPORT=6379
EXEC=/usr/local/redis/bin/redis-server
CLIEXEC=/usr/local/redis/bin/redis-cliPIDFILE=/usr/local/redis/pid/redis_${REDISPORT}.pid
CONF="/usr/local/redis/conf/redis-cluster-${REDISPORT}.conf"case "$1" instart)if [ -f $PIDFILE ]thenecho "$PIDFILE exists, process is already running or crashed"elseecho "Starting Redis server..."$EXEC $CONFfi;;stop)if [ ! -f $PIDFILE ]thenecho "$PIDFILE does not exist, process is not running"elsePID=$(cat $PIDFILE)echo "Stopping ..."$CLIEXEC -p $REDISPORT -a '123456' shutdownwhile [ -x /proc/${PID} ]doecho "Waiting for Redis to shutdown ..."sleep 1doneecho "Redis stopped"fi;;*)echo "Please use start or stop as first argument";;
esac
3.2、復制多份redis啟動腳本給集群使用
cd /etc/init.d
cp redisd6379 redisd6380
sed -i "s/REDISPORT=6379/REDISPORT=6380/" /etc/init.d/redisd6380
3.3、添加可執行權限
chmod +x /etc/init.d/redisd6379
chmod +x /etc/init.d/redisd6380
3.4、配置開機自啟動
添加開機自啟動
chkconfig --add redisd6379
chkconfig --add redisd6380
查看開機自啟動配置
chkconfig --list
默認開啟runlevel=2345的啟動
至此redis開機自啟動配置完成