阿里云Docker+Redis单机版搭建集群(主从)配置最详细记录
参考来源:https://www.cnblogs.com/fan-gx/p/11463400.html
原文是测试多台服务器,我的只有单台,仿照这个,自己探索了一番,搞出来了,非常详细的记录如下:
主机配置文件(6379)
# 注释这一行,表示Redis可以接受任意ip的连接
# bind 127.0.0.1
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379
# 关闭保护模式
protected-mode no
# 让redis服务后台运行
daemonize yes
# 设定密码(可选,如果这里开启了密码要求,slave的配置里就要加这个密码. 只是练习配置,就不使用密码认证了)
# requirepass masterpassword
# 配置日志路径,为了便于排查问题,指定redis的日志文件目录
logfile "/mylog/redis-master.log"
从机1配置文件(6380)
# 注释这一行,表示Redis可以接受任意ip的连接
# bind 127.0.0.1
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6380
# 关闭保护模式
protected-mode no
# 让redis服务后台运行
daemonize yes
# 设定密码(可选,如果这里开启了密码要求,slave的配置里就要加这个密码)
requirepass masterpassword
# 设定主库的密码,用于认证,如果主库开启了requirepass选项这里就必须填相应的密码
masterauth <master-password>
# 设定master的IP和端口号,redis配置文件中的默认端口号是6379
# 低版本的redis这里会是slaveof,意思是一样的,因为slave是比较敏感的词汇,所以在redis后面的版本中不在使用slave的概念,取而代之的是replica
# 将35.236.172.131做为主,其余两台机器做从。ip和端口号按照机器和配置做相应修改。
replicaof 35.236.172.131 6379
# 配置日志路径,为了便于排查问题,指定redis的日志文件目录
logfile "/mylog/redis-slave.log"
从机2配置文件(6382)【只修改port即可】
# 注释这一行,表示Redis可以接受任意ip的连接
# bind 127.0.0.1
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6382
# 关闭保护模式
protected-mode no
# 让redis服务后台运行
daemonize yes
# 设定密码(可选,如果这里开启了密码要求,slave的配置里就要加这个密码)
requirepass masterpassword
# 设定主库的密码,用于认证,如果主库开启了requirepass选项这里就必须填相应的密码
masterauth <master-password>
# 设定master的IP和端口号,redis配置文件中的默认端口号是6379
# 低版本的redis这里会是slaveof,意思是一样的,因为slave是比较敏感的词汇,所以在redis后面的版本中不在使用slave的概念,取而代之的是replica
# 将35.236.172.131做为主,其余两台机器做从。ip和端口号按照机器和配置做相应修改。
replicaof 35.236.172.131 6379
# 配置日志路径,为了便于排查问题,指定redis的日志文件目录
logfile "/mylog/redis-slave.log"
安装主机(6379)
#其中/var/lib/docker/containers/myconf/redis_1.conf是我放置主机配置文件位置
docker run -it --name redis-1 -v /var/lib/docker/containers/myconf/redis_1.conf:/usr/local/etc/redis/redis.conf -d -p 6379:6379 redis /bin/bash安装从机(6380)
docker run -it --name redis-2 -v /var/lib/docker/containers/myconf/redis_2.conf:/usr/local/etc/redis/redis.conf -d -p 6380:6379 redis /bin/bash
安装从机(6382)
docker run -it --name redis-4 -v /var/lib/docker/containers/myconf/redis_4.conf:/usr/local/etc/redis/redis.conf -d -p 6382:6379 redis /bin/bash
启动redis服务器(主6379)
# 以交互模式进入容器redis-1
$ docker exec -it redis-1 bash
# 创建日志文件目录(这里如果不写,直接从下方redis-server开始会报错,错误就是没有这个)
# 这里的/mylog/redis-master.log就是我的配置文件中的logfile
$ mkdir /mylog
$ touch /mylog/redis-master.log
# 启动redis服务器,如果没有任何输出,就说明成功了
$ redis-server /usr/local/etc/redis/redis.conf
# 在容器里启动一个redis客户端
$ redis-cli
# 执行info命令,查看服务器状态
127.0.0.1:6379> info replication
# 最后退出容器
$ exit
启动redis服务器(从6380)
# 以交互模式进入容器redis-2
$ docker exec -it redis-2 bash
# 创建日志文件目录(这里如果不写,直接从下方redis-server开始会报错,错误就是没有这个)
# 这里的/mylog/redis-slave.log就是我的配置文件中的logfile
$ mkdir /mylog
$ touch /mylog/redis-slave.log
# 启动redis服务器,如果没有任何输出,就说明成功了
$ redis-server /usr/local/etc/redis/redis.conf
# 在容器里启动一个redis客户端
$ redis-cli -p 6380
# 执行info命令,查看服务器状态(看到前方127.0.0.1:【6380】了没,这就ok啦,哈哈)
127.0.0.1:6380> info replication
# 最后退出容器
$ exit
启动redis服务器(从6382)
# 以交互模式进入容器redis-4
$ docker exec -it redis-4 bash
# 创建日志文件目录(这里如果不写,直接从下方redis-server开始会报错,错误就是没有这个)
# 这里的/mylog/redis-slave.log就是我的配置文件中的logfile
$ mkdir /mylog
$ touch /mylog/redis-slave.log
# 启动redis服务器,如果没有任何输出,就说明成功了
$ redis-server /usr/local/etc/redis/redis.conf
# 在容器里启动一个redis客户端
$ redis-cli -p 6382
# 执行info命令,查看服务器状态(看到前方127.0.0.1:【6382】了没,这就ok啦,哈哈)
127.0.0.1:6382> info replication
# 最后退出容器
$ exit
然后在主机下面info replication就会发现跟了两个从机,yeah!
127.0.0.1:6379> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=我的ip保密,port=6380,state=online,offset=1688,lag=0
slave1:ip=我的ip保密,port=6382,state=online,offset=1688,lag=1
master_replid:a8708b275e0694e97cf18aea3db4f683b536925a
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1688
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1688