天天看點

Redis哨兵模式部署1. Redis編譯安裝(三台)2. 建立redis配置檔案(三台)2.配置哨兵模式3.驗證叢集

1. Redis編譯安裝(三台)

以下操作在三台主機同樣操作

1.1 安裝依賴包

yum -y install gcc gcc-c++ libstdc++-devel
           

1.2 上傳redis二進制包

tar zxvf redis-5.0.14.tar.gz -C /data
           

1.3 編譯redis,生成redis可執行檔案

cd /data/redis ;mv redis-5.0.14/* .
make MALLOC=libc
           

2. 建立redis配置檔案(三台)

建立資料目錄

mkdir -p /data/redis/cluster/redis.conf
           

修改權限

chown -R redis:redis /data/redis
           

建立配置檔案

2.1 第一台

cat >/data/redis/cluster/redis.conf<< EOF
bind 10.1.2.121
port 6379
daemonize yes
pidfile "/var/run/redis.pid"
logfile "/data/redis/cluster/redis.log"
dir "/data/redis/cluster/redis"
masterauth xxxxxxxxxx
requirepass "xxxxxxxxxx"
appendonly yes
maxmemory 7gb
EOF
           

2.2 第二台

cat > /data/redis/cluster/redis.conf <<EOF

bind 10.1.2.122
port 6379
daemonize yes
pidfile "/var/run/redis.pid"
logfile "/data/redis/cluster/redis.log"
dir "/data/redis/cluster/redis"
masterauth "xxxxxxxxxx"
requirepass "xxxxxxxxxx"

appendonly yes
maxmemory 7gb
EOF
           

2.3 第三台

cat > /data/redis/cluster/redis.conf <<EOF

bind 10.1.2.123
port 6379
daemonize yes
pidfile "/var/run/redis.pid"
logfile "/data/redis/cluster/redis.log"
dir "/data/redis/cluster/redis"
masterauth "xxxxxxxxxx"
requirepass "xxxxxxxxxx"

appendonly yes
maxmemory 7gb
EOF
           

2.4 拷貝redis-server、redis-cli、redis-sentinel可執行檔案

cp  src/redis-server /usr/bin/
cp src/redis-cli /usr/bin/
cp src/redis-sentinel /usr/bin/
chmod +x /usr/bin/redis-server
chmod +x /usr/bin/redis-cli
chmod +x /usr/bin/redis-sentinel
chown -R redis:redis /data/redis
           

2.5 配置自啟動配置檔案(三台)

2.5.1 第一台

cat > /usr/lib/systemd/system/redis.service << EOF
[Unit]
Description=Redis
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis.pid
ExecStart=/usr/bin/redis-server /data/redis/cluster/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/redis-cli -h 10.1.2.121 -p 6379 shutdown
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
           

2.5.2 第二台

cat > /usr/lib/systemd/system/redis.service << EOF
[Unit]
Description=Redis
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis.pid
ExecStart=/usr/bin/redis-server /data/redis/cluster/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/redis-cli -h 10.1.2.122 -p 6379 shutdown
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF
           

2.5.3 第三台

cat > /usr/lib/systemd/system/redis.service << EOF
[Unit]
Description=Redis
After=network.target

[Service]
Type=forking
PIDFile=/var/run/redis.pid
ExecStart=/usr/bin/redis-server /data/redis/cluster/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/redis-cli -h 10.1.2.123 -p 6379 shutdown
PrivateTmp=true

[Install]
WantedBy=multi-user.target

EOF
           

2.5.4 添加啟動項及啟動(三台)

Systemctl daemon-reload
Systemctl enable redis
Systemctl start redis
           

2.配置哨兵模式

注意事項

建立叢集之前需要保證其他節點都正常安裝和配置單機redis

2.1 配置哨兵配置檔案(三台)

2.1.1 第一台

cat > /data/redis/sentinel.conf << EOF
daemonize yes
bind 10.1.2.121
port 26379
logfile "/data/redis/logs/sentinel.log"
dir "/data/redis/sentinel"
sentinel myid e2f7c688a4285e6b72d8e2e02d1f6a2f0611ea0e
sentinel deny-scripts-reconfig yes
sentinel monitor master 10.1.2.123 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 15000
sentinel parallel-syncs master 2
sentinel auth-pass master xxxxxxxxxx
EOF
           

2.1.2 第二台

cat > /data/redis/sentinel.conf << EOF
    daemonize yes
bind 10.1.2.122
port 26379
logfile "/data/redis/logs/sentinel.log"
dir "/data/redis/sentinel"
sentinel myid 3e89710158cbfcd99938946cb07e41216a034584
sentinel deny-scripts-reconfig yes
sentinel monitor master 10.1.2.123 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 15000
sentinel parallel-syncs master 2
EOF
           

2.1.3 第三台

cat > /data/redis/sentinel.conf << EOF
daemonize yes
bind 10.1.2.123
port 26379
logfile "/data/redis/logs/sentinel.log"
dir "/data/redis/sentinel"
sentinel myid 9caba6da81a5452fc7269de27841042fcdfe92ef
sentinel deny-scripts-reconfig yes
sentinel monitor master 10.1.2.123 6379 2
sentinel down-after-milliseconds master 5000
sentinel failover-timeout master 15000
sentinel parallel-syncs master 2
EOF
           

2.2配置哨兵啟動項(三台)

2.2.1 第一台

cat > /usr/lib/systemd/system/sentinel.service << EOF
[Unit]
Description=Redis Sentinel
After=network.target
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/usr/bin/redis-sentinel /data/redis/sentinel.conf --supervised systemd
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
Type=notify

[Install]
WantedBy=multi-user.target
EOF
           

2.2.2第二台和第三台同樣配置

2.2.3 配置啟動項和啟動哨兵(三台)

Systemctl enable sentinel
Systemctl start sentinel
           

3.驗證叢集

3.1 登陸主節點

redis-cli  -h 10.1.2.123 -p 6379 -a xxxxxxxxxx
           
10.1.2.123:6379> info replication
           

3.2 登陸從節點

redis-cli -h 10.1.2.121  -p 6379  -a xxxxxxxxxx

10.1.2.121:6379> info replication
           

繼續閱讀