redis一主二從加哨兵
阿新 • • 發佈:2019-01-28
hist cal finished port 兩個 ont eof 服務器 dump
redis版本:redis-3.0.6.tar.gz
master:192.168.3.180
slave:192.168.3.184 (機器原因,兩從都在這上面)
一.redis安裝
cd /root/tools/ tar -zxvf redis-3.0.6.tar.gz cd redis-3.0.6 make install PREFIX=/usr/local/redis ln -s /usr/local/redis/bin/redis-cli /usr/local/bin/redis-cli cp utils/redis_init_script /etc/init.d/redis mkdir /etc/redis cp redis.conf /etc/redis/6379.conf cp -rp sentinel.conf /etc/redis/sentinel_26379.conf
二.配置
主服務器上redis
vim 6379.conf daemonize yes pidfile /var/run/redis_6379.pid port 6379 bind 0.0.0.0 (很重要,否則主從同步會失敗) logfile "/var/log/redis_6379.log" dbfilename "dump_6379.rdb" dir "/opt/redis/6379" requirepass 123456 (設置redis密碼)
哨兵sentinel (本文只有一個哨兵,哨兵也可以部署多臺機器,形成哨兵集群,避免單點的問題,保證系統的高可用。)
#修改或添加以下幾項 vim sentinel_26379.conf port 26379 daemonize yes logfile "/tmp/sentinel.log" dir "/opt/redis/redis_sentinel" sentinel monitor mymaster 192.168.3.180 6379 1 (最後的數字1指明當有多少個sentinel認為一個master失效時,master才算真正失效) sentinel parallel-syncs mymaster 2 (最後的數字2表示有多少個slave)
從服務器上
#從服務器配置可復制主服務器的,只需要修改相應端口和修改添加以下一行即可 slaveof192.168.3.180 6379 (指定主redis)
測試:
分別啟動master和兩個slave
master上:
[root@novel tmp]# redis-cli -p 6379 127.0.0.1:6379> info replication # Replication role:master connected_slaves:2 slave0:ip=192.168.3.184,port=6391,state=online,offset=190442,lag=0 slave1:ip=192.168.3.184,port=6390,state=online,offset=190442,lag=0 master_repl_offset:190442 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:190441
slave上:
[root@danny redis]# redis-cli -p 6390 127.0.0.1:6390> info replication # Replication role:slave master_host:192.168.3.180 master_port:6379 master_link_status:up [root@danny redis]# redis-cli -p 6391 127.0.0.1:6391> info replication # Replication role:slave master_host:192.168.3.180 master_port:6379 master_link_status:up
以上可看到已經完成主從同步,也可以去看看slave的啟動日誌,查看同步實時信息
[root@danny redis]# tailf /var/log/redis_6390.log 4706:S 28 Jan 13:05:29.985 * Connecting to MASTER 192.168.3.180:6390 4706:S 28 Jan 13:05:29.985 * MASTER <-> SLAVE sync started 4706:S 28 Jan 13:05:29.986 * Non blocking connect for SYNC fired the event. 4706:S 28 Jan 13:05:29.987 * Master replied to PING, replication can continue... 4706:S 28 Jan 13:05:29.987 * Partial resynchronization not possible (no cached master) 4706:S 28 Jan 13:05:29.989 * Full resync from master: 4da2c58d50928717d9a45216ced5c36a45a3b78c:29 4706:S 28 Jan 13:05:30.055 * MASTER <-> SLAVE sync: receiving 18 bytes from master 4706:S 28 Jan 13:05:30.055 * MASTER <-> SLAVE sync: Flushing old data 4706:S 28 Jan 13:05:30.055 * MASTER <-> SLAVE sync: Loading DB in memory 4706:S 28 Jan 13:05:30.055 * MASTER <-> SLAVE sync: Finished with success
三.哨兵啟用
進入redis的安裝目錄可以看到
[root@danny bin]# ls dump.rdb redis-benchmark redis-check-aof redis-check-dump redis-cli redis-sentinel redis-server [root@danny bin]# pwd /usr/local/redis/bin
啟動哨兵
./redis-sentinel /etc/redis/sentinel_26379.conf
redis一主二從加哨兵