redis 高可用 主从复制

redis 高可用  主从复制

 

###redis 高可用 主从复制


###所有节点运行
wget http://download.redis.io/releases/redis-3.2.12.tar.gz


yum install -y gcc
tar xzf redis-3.2.12.tar.gz -C /usr/src/
cd /usr/src/redis-3.2.12
make && make install PREFIX=/usr/local/redis



\cp src/redis-trib.rb /usr/local/redis/bin/
\cp -f utils/redis_init_script /etc/init.d/redis
sed -i '/stop)/ i #\n\trestart)\n\t\t$0 stop\n\t\t$0 start\n\t;;' /etc/init.d/redis


mkdir -p /usr/local/redis/{conf,data,log}
ln -s /usr/local/redis/conf /etc/redis
ln -s /usr/local/redis/bin/redis-trib.rb /usr/local/bin/redis-trib.rb


grep -Ev '^#|^$' redis.conf >/etc/redis/6379.conf


sed -i 's/^daemonize.*/daemonize yes/g' /etc/redis/6379.conf
sed -i 's/^port .*/port 6379/g' /etc/redis/6379.conf
sed -i 's/^bind .*/bind 0.0.0.0/g' /etc/redis/6379.conf



/etc/init.d/redis restart


netstat -lntp |grep redis



####只在slave 从节点运行
echo 'slaveof 172.16.3.232 6379' >>/etc/redis/6379.conf
/etc/init.d/redis restart
netstat -lntp |grep redis



###########测试验证


##主节点运行
echo "
set name redis-master-test-by-$(hostname)
get name
" |redis-cli


####只在slave 从节点运行
echo "get name" |redis-cli



################redis-sentinel ############
mkdir -p /usr/local/redis/log


cd /usr/src/redis-3.2.12


grep -Ev '^#|^$' sentinel.conf >/etc/redis/sentinel.conf



cat /etc/redis/sentinel.conf


\cp /etc/redis/sentinel.conf{,.bak}


echo '


logfile "/usr/local/redis/log/sentinel.log"
daemonize yes
protected-mode no


dir /tmp
sentinel monitor mymaster 172.16.3.232 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 120000


rename-command SHUTDOWN REDIS_SHUTDOWN
sentinel auth-pass mymaster XYZ
' >/etc/redis/sentinel.conf



#sed -i 's/^sentinel monitor mymaster.*/sentinel monitor mymaster 172.16.3.232 6379 2/g' /etc/redis/sentinel.conf


redis-sentinel /etc/redis/sentinel.conf


echo info |redis-cli -p 26379
##master0:name=mymaster,status=ok,address=172.16.3.232:6379,slaves=2,sentinels=3



###########测试验证


##主节点运行


echo "
set name redis-master-test-by-$(hostname)
get name
" |redis-cli


####只在slave 从节点运行
echo "get name" |redis-cli


 


######主节点运行
/etc/init.d/redis stop


####在所有节点
echo info |redis-cli -p 26379


###master0:name=mymaster,status=ok,address=172.16.3.234:6379,slaves=2,sentinels=3
#查看主是不是已经切换


#####在切换后的主节点运行 172.16.3.234
echo "
set name redis-master-test-by-$(hostname)
get name
" |redis-cli


#[root@ops234 redis-3.2.12]# echo "
#> set name redis-master-test-by-$(hostname)
#> get name
#> " |redis-cli
#OK
#"redis-master-test-by-ops234"



####只在slave 从节点运行
echo "get name" |redis-cli


#[root@ops233 redis-3.2.12]# echo "get name" |redis-cli
#"redis-master-test-by-ops234"

 

 

posted @ 2019-10-17 17:49  些许记忆  阅读(118)  评论(0编辑  收藏  举报