一、背景
最近在做零信赖平安网关,须要应用Redis
作为认证缓存服务器,因为网关服务器散布在多个集群,每次都跨机房认证不太实现;所以须要应用Redis
主从同步,将过程记录下来,心愿能够给须要的同学一点参考。
二、操作步骤
- 装置Docker
- 主服务配置
- 从服务配置
- 验证同步成果
三、装置Docker
本篇文章次要是问了记录主从配置的过程,因而我采纳最简略的docker形式来搭建Redis服务,装置docker
的命令如下所示
curl -sSL https://get.daocloud.io/docker | sh
命令执行实现之后,能够看到如下图所示界面
在上图中能够看到docker的一些相干信息,咱们要确认docker装置是否胜利还能够应用docker info
命令进行查看,执行命令如下所示
docker info
命令执行之后,返回信息如下图所示
在上图中能够看到docker的版本信息为20.10.3
,这是目前的最新版本,曾经确认装置胜利无误。
四、主服务配置
接下来我须要应用docker装置Redis服务,我在实际过程中发现间接应用Redis镜像有些异样,于是应用centos镜像,再在容器里装置Redis,运行容器的命令如下所示
docker run -d -it -p 16379:6379 --name redis_master centos:7
命令执行结束之后再进入该容器,进入容器的命令如下所示
docker exec -it redis_master bash
命令执行结束后,返回的信息如下图所示
在上图中能够看到曾经胜利的进入到了容器外面,接下来我须要在容器里装置Redis,装置Redis的命令如下所示
yum install -y epel-release && yum install -y redis
命令执行结束之后,返回的信息如下图所示
从上图中能够看到,Redis曾经装置实现,接下来须要新建一个Redis的主库配置文件,执行命令如下所示
vi ~/master.conf
配置文件如下所示,将下列配置文件复制并粘贴到vi编辑窗口当中。
#bind 0.0.0.0protected-mode yesport 6379tcp-backlog 511unixsocket /tmp/redis_auth.sockunixsocketperm 777timeout 0tcp-keepalive 300daemonize yessupervised autopidfile /var/run/redis_auth.pidloglevel debuglogfile /tmp/redis_auth.logdatabases 16save ""stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump.rdbdir /var/lib/redisrequirepass 123123123slave-serve-stale-data yesslave-read-only yesrepl-diskless-sync norepl-diskless-sync-delay 5repl-disable-tcp-nodelay noslave-priority 100appendonly yesappendfilename "funfe.aof"appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 512mbaof-load-truncated yeslua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128latency-monitor-threshold 0notify-keyspace-events ""hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-size -2list-compress-depth 0set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000activerehashing yeshz 10aof-rewrite-incremental-fsync yes
在vi编辑窗口粘贴后,如下图所示
粘贴实现并查看无误之后,应用:wq!
命令进行保留,接着就能够启动Redis程序,启动的命令如下所示
redis-server `/redis.conf
在上方的启动命令中须要指定配置文件门路,如下图所示
在上图中能够看到Redis服务曾经启动实现。
五、从服务配置
接下来我须要再次启动一个Redis从库服务器,运行容器的命令如下所示
docker run -d -it -p 26379:6379 --name redis_slave centos:7
在上方的命令中,因为在同一台主机,为了不和主库端口产生抵触,我将主机端口26379
,启动实现之后就能够进入从库容器,运行的命令如下所示
docker exec -it redis_slave bash
命令执行结束后,同样须要新建一个Redis的配置文件,运行的命令如下所示
vi ~/redis.conf
在配置文件中,须要退出从库的配置代码,配置样例如下所示
bind 127.0.0.1protected-mode yesport 6379tcp-backlog 511unixsocket /tmp/redis_auth.sockunixsocketperm 777timeout 0tcp-keepalive 300daemonize yessupervised autopidfile /var/run/redis_6379.pidloglevel noticelogfile /tmp/redis.logdatabases 16save ""stop-writes-on-bgsave-error yesrdbcompression yesrdbchecksum yesdbfilename dump.rdbdir /var/lib/redisslaveof 172.23.193.148 16379masterauth 123123123slave-serve-stale-data yesslave-read-only yesrepl-diskless-sync norepl-diskless-sync-delay 5repl-disable-tcp-nodelay noslave-priority 100appendonly yesappendfilename "funfe.aof"appendfsync everysecno-appendfsync-on-rewrite noauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 512mbaof-load-truncated yeslua-time-limit 5000slowlog-log-slower-than 10000slowlog-max-len 128latency-monitor-threshold 0notify-keyspace-events ""hash-max-ziplist-entries 512hash-max-ziplist-value 64list-max-ziplist-size -2list-compress-depth 0set-max-intset-entries 512zset-max-ziplist-entries 128zset-max-ziplist-value 64hll-sparse-max-bytes 3000activerehashing yeshz 10aof-rewrite-incremental-fsync yes
将配置样例复制进来之后,窗口如下所示
粘贴实现并查看无误之后,应用:wq!
命令进行保留,接着就能够启动Redis程序,启动的命令如下所示
接着装置Redis服务,装置命令如下所示
yum install -y epel-release && yum install -y redis
命令执行结束之后,返回的信息如下图所示
在上图中能够看到从库的Redis也装置实现了,接下来应用redis-server
命令启动从库服务器,命令如下图所示
redis-server redis.conf
命令执行结束之后,返回的信息如下图所示
在上图中能够看到Redis曾经启动实现,接下来就能够进行验证成果了
六、后果验证
验证办法次要是在主库中设置数据,察看从库是否也会同步更新;
6.1 初步验证
不过这种操作有点麻烦,咱们最好是先检查一下从库的启动日志,查看启动日志的命令如下所示
cat /tmp/redis.log
命令执行结束之后,会返回Redis的日志信息,如下图所示
在上图中的日志信息能够看到从库曾经胜利将主库信息复制到本地来了。
6.2 同步查看
尽管日志中提醒胜利了,不过是否胜利主从同步还是要以实际效果为准,这里我回到主服务器的终端窗口,而后进入redis的命令控制台,进入控制台的命令如下所示
redis-cli -a 123123123
命令执行之后,就能够进行redis命令操作了,这里我设置一个test
为123123
的键值对,设置命令如下所示
set test 123123
命令执行结束之后,返回的信息如下图所示
在上图中能够看到Redis曾经提醒设置键值对胜利了,接下来我持续回到从库的终端窗口,而后进入Redis的控制台,执行命令如下所示
redis-cli -a 123123123
命令执行结束之后,就能够通过keys
命令查看以后从库的键值对,命令如下所示
keys *
命令执行结束之后,返回的信息如下图所示
在上图中能够看到test
这个数据曾经胜利复制过去了。
作者:汤青松
微信:songboy8888
日期:2021-04-11
应用Docker进行Redis主从复制实际