redis高可用集群-redis主从复制配置(1)
我们来配置一个一主两从的服务,根据前面写的已经配置好的redis基础上进行主从配置
一:进入redis的配置目录
cd /usr/local/redis
创建下面3个目录,命令为:
make -p /usr/local/redis/master /usr/local/redis/slave1 /usr/local/redis/slave2
复制 redis.conf 到这个3个目录
cp /usr/local/redis/redis.conf /usr/local/redis/master/redis.conf
依次复制redis.conf到另外2个从配置目录
二:配置项
2.1)修改端口为master->1000, slave1->2000, slave2->3000
vi /usr/local/redis/master/redis.conf
相应的修改其它2个从配置文件
2.2) 修改pidfile和logfile
在redis.conf中找到pidfile和logfile
pidfile /usr/local/redis/master/redis.pid
logfile /usr/local/redis/master/redis.log
相应的修改其它2个从配置文件slave1,slave2
2.3) 把启动方式设置为后台常驻进程方式
daemonize yes
修改主从所有的配置文件
2.4) 当然我们还可以设置外网访问的ip,(下面的实践没有设置,简单点)
默认就是绑定到了127.0.0.1
三:启动3个redis
/usr/local/redis/bin/redis-server /usr/local/redis/master/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/slave1/redis.conf
/usr/local/redis/bin/redis-server /usr/local/redis/slave2/redis.conf
四:客户端连接redis
4.1)连接slave1:
./bin/redis-cli -h 127.0.0.1 -p 2000
然后输入下面的命令查看服务器信息:
127.0.0.1:2000> info Replication # Replication role:master connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
# Replication
role:master
查看其它2台服务器得到的都是同样的信息
五:那么下面开始主从复制的配置
修改2台从服务器的配置文件
vi /usr/local/redis/slave1/redis.conf
设置为 slaveof 127.0.0.1 1000
如下图:
2台从服务器配置完成后,重启redis,查看redis是否重启成功
ps -ef|grep redis
主服务器不需要修改配置
六:验证
6.1)登录进从服务器slave1
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 2000 127.0.0.1:2000> info replacation # Replication role:slave master_host:127.0.0.1 master_port:1000 master_link_status:up master_last_io_seconds_ago:5 master_sync_in_progress:0 slave_repl_offset:85 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0
6.2)登录进主服务器master:
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 1000 127.0.0.1:1000> info replication # Replication role:master connected_slaves:2 slave0:ip=127.0.0.1,port=2000,state=online,offset=57,lag=1 slave1:ip=127.0.0.1,port=3000,state=online,offset=57,lag=0 master_repl_offset:57 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:56
6.3)打开3个客户端窗口,分别连上主服务器和2个从服务器
master服务器用set命令设置一个值:
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 1000
127.0.0.1:1000> set test testslave
OK
查看2台从服务器是否获取到正确的值:
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 2000
127.0.0.1:2000> get test
"testslave"
[root@localhost redis]# ./bin/redis-cli -h 127.0.0.1 -p 3000
127.0.0.1:3000> get test
"testslave"
全部得到正确的值,说明配置就成功了
参考:
http://doc.redisfans.com/topic/replication.html