docker pull redis二、编辑配置文件
在docker中创建redis容器需要挂载配置文件,所以先编辑配置文件
1、主服务器配置文件(redis.conf)
bind 0.0.0.0 #绑定主机地址 protected-mode no #关闭protected-mode模式,此时外部网络可以直接访问/开启protected-mode保护模式,需配置bind ip或者设置访问密码 port 6379 #指定Redis监听端口,默认端口为6379 logfile redis.log #日志文件 dir /data #指定本地数据库存放目录 replica-read-only no #保证从库也有写的 *** 作 appendonly yes #开启aof记录日志 appendfilename "appendonly.aof" #指定更新日志文件名 appendfsync always #表示每次更新 *** 作后手动调用fsync()将数据写到磁盘(慢,安全)不建议开启除非数据不允许丢失 auto-aof-rewrite-percentage 100 #aof文件增长比例,指当前aof文件比上次重写的增长比例大小(100表示增长一倍时开始重写) auto-aof-rewrite-min-size 64m #aof文件重写最小的文件大小,即最开始aof文件必须要达到这个文件时才触发,后面的每次重写就不会根据这个变量了(根据上一次重写完成之后的大小).此变量仅初始化启动redis有效.如果是redis恢复时,则lastSize等于初始aof文件大小.
2、编写从节点配置文件,注意端口号(redis-s1.conf&&redis-s2.conf)
redis-s1: bind 0.0.0.0 protected-mode no port 6380 logfile redis.log dir /data replicaof 172.17.0.2 6379 #docker内部容器之间的虚拟ip replica-read-only no save 60 10000 #使用RDB持久化60秒有10000个修改触发bgsave fork一个进程进行持久化(COW) ------------------------------------------------------------------------------------ redis-s2 bind 0.0.0.0 protected-mode no port 6381 logfile redis.log dir /data replicaof 172.17.0.2 6379 replica-read-only no save 60 10000
3、编写哨兵配置文件注意端口号(sentinel.conf&&sentinel-s1.conf&&sentinel-s2.conf)
bind 0.0.0.0 protected-mode no port 26379 dir /data logfile sentinel.log daemonize yes #redis使用守护进程启动 sentinel monitor redismaster 172.17.0.2 6379 2 #指定主服务器的ip和端口号,后面的数字2表示当哨兵集群当中有两个哨兵没有检测到主节点的心跳的时候表明主节点挂掉,开始推选新的主节点 ----------------------------------------------------------------------------------- bind 0.0.0.0 protected-mode no port 26380 dir /data logfile sentinel.log daemonize yes sentinel monitor redismaster 172.17.0.2 6379 2 -------------------------------------------------------------------------------------- bind 0.0.0.0 protected-mode no port 26381 dir /data logfile sentinel.log daemonize yes sentinel monitor redismaster 172.17.0.2 6379 2三、启动容器
1、启动主容器(端口和目录根据自身情况而定)
docker run -d -p 6379:6379 -p 26379:26379 -v /redis/redis.conf:/data/redis.conf -v /redis/sentinel.conf:/data/sentinel.conf --name redis redis redis-server redis.conf
2、启动从容器
docker run -d -p 6380:6380 -p 26380:26380 -v /redis/redis-s1.conf:/data/redis-s1.conf -v /redis/sentinel-s1.conf:/data/sentinel-s1.conf --name redis-s1 redis redis-server redis-s1.conf docker run -d -p 6381:6381 -p 26381:26381 -v /redis/redis-s2.conf:/data/redis-s2.conf -v/redis/sentinel-s2.conf:/data/sentinel-s2.conf --name redis-s2 redis redis-server redis-s2.conf四、验证
1、验证主容器
docker exec -it redis bash #进入容器 redis-cli -p 6379 进入客户端 info replication(如下截图) role:master 表示主节点启动成功
2、验证从节点(两个从节点验证方式一致)
docker exec -it redis-s1 bash redis-cli -p 6380 info replication(如下截图) role: slave
到此主从复制已经配置成功
1、主节点启动哨兵
redis-sentinel sentinel.conf
2、从节点启动哨兵
redis-sentinel sentinel-s1.conf --------------------------------------- redis-sentinel sentinel-s2.conf
3、验证哨兵
redis-cli -p 26379 #主节点配置的哨兵 redis-cli -p 26380 #从节点配置的哨兵 redis-cli -p 26381 #从节点配置的哨兵 info 使用命令info查看结果(如下截图)
4、验证redis挂了是否重新选举新的主节点
退出容器exit docker stop redis 停掉主节点 默认30秒后 查看从节点 redis-cli -p 6380 redis-cli -p 6381 使用命令 info replication 发现哨兵已经为你选了一个主节点如下截图
5、如果此时在启动之前的主节点,发现此时变成了从节点
docker start redis docker exec -it redis bahs redis-cli -p 6379 info replication
6、此时启动哨兵发现主节点的ip和端口也变了
redis-sentinel sentinel.conf redis-cli -p 26379 info六、学习总结一波
1、docker安装vim
apt-get update apt-get install vim
2、文件 *** 作命令
mkdir data touch redis.conf chmod 777 -R data
3、docker安装telnet查看主从节点通不通
apt-get update apt-get install telnet
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)