文章目录
docker安装redis一主二从部署
前提条件
服务器ip:192.168.56.102(主),192.168.56.105(从),192.168.56.106(从)
安装好docker环境,教程:Linux的centos7安装docker
1.拉起镜像
可以在docker仓库查询最新的镜像,官网地址:https://hub.docker.com/
我拉取的版本是6.0.9
docker pull redis:6.0.9
2.参数说明
redis最原始版redis.conf配置文件关键信息详细说明
3.配置文件
1)创建文件夹
docker的redis镜像是没有redis.conf文件,这个文件要我们先创建好,然后映射给容器里
mkdir -p /usr/local/docker/redis/conf
mkdir -p /usr/local/docker/redis/data
mkdir -p /usr/local/docker/redis/log
2)主机配置文件
创建文件 redis_master.conf
vim /usr/local/docker/redis/conf/redis_master.conf
redis_master.conf 文件内容
# 绑定
bind 0.0.0.0
# 连接保护模式关闭
protected-mode no
# 端口
port 6379
# 数据库数量
databases 16
# rdb快照规则
# 在900秒(15分钟)后,如果至少更改了1个键
save 900 1
save 300 10
save 60 10000
# rdb快照文件名称
dbfilename dump.rdb
# 客户端连接数量设置
maxclients 10000
# AOF模式开启,默认关闭
appendonly yes
# 文件名
appendfilename "appendonly.aof"
# AOF同步机制
# 每秒同步
appendfsync everysec
# 文件大小切割
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 淘汰机制设置
maxmemory-policy noeviction
#密码设置
requirepass 123456
3)二从机配置文件
创建文件 redis_slave.conf
vim /usr/local/docker/redis/conf/redis_slave.conf
redis_slave.conf 文件内容,在主机的redis_master.conf的配置之上再加多下面的配置
# 主机地址
replicaof 192.168.56.102 6379
masterauth 123456
4)开始启动redis
主机启动命令:
docker run \
--restart=always \
--name redis-master \
-v /usr/local/docker/redis/conf/redis_master.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis/data:/data \
-v /etc/localtime:/etc/localtime \
-p 6379:6379 \
-d redis:6.0.9 redis-server /etc/redis/redis.conf
从机1启动命令:
docker run \
--restart=always \
--name redis-slave-1 \
-v /usr/local/docker/redis/conf/redis_slave.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis/data:/data \
-v /etc/localtime:/etc/localtime \
-p 6379:6379 \
-d redis:6.0.9 redis-server /etc/redis/redis.conf
从机2启动命令:
docker run \
--restart=always \
--name redis-slave-2 \
-v /usr/local/docker/redis/conf/redis_slave.conf:/etc/redis/redis.conf \
-v /usr/local/docker/redis/data:/data \
-v /etc/localtime:/etc/localtime \
-p 6379:6379 \
-d redis:6.0.9 redis-server /etc/redis/redis.conf
验证是否成:
连接客户端命令:
docker exec -it redis-master bash -c "redis-cli -h 127.0.0.1 -p 6379"
查看redis主机展示信息:
[root@centos-105 /usr/local/docker/redis/conf]docker exec -it redis-master bash -c "redis-cli -h 127.0.0.1 -p 6379"
127.0.0.1:6379> info replication
# Replication
role:master # 当时master
connected_slaves:2 #连接从机数量
slave0:ip=192.168.56.105,port=6379,state=online,offset=1120,lag=0 #从机信息
slave1:ip=192.168.56.106,port=6379,state=online,offset=1106,lag=1 #从机信息
master_replid:4f0264f734e529b03ae5b7e676ad7a5d4bdce332
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1120
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1120
查看redis从机展示信息:
[root@centos-105 /usr/local/docker/redis/conf]docker exec -it redis-slave-1 bash -c "redis-cli -h 127.0.0.1 -p 6379"
127.0.0.1:6379> info replication
# Replication
role:slave # 当时slave
master_host:192.168.56.102 #连接主机信息
master_port:6379
master_link_status:up
master_last_io_seconds_ago:9
master_sync_in_progress:0
slave_repl_offset:1162
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:4f0264f734e529b03ae5b7e676ad7a5d4bdce332
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1162
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1162
注意:在从机是不允许做写人操作,只能读
127.0.0.1:6379> set sss sss
(error) READONLY You can't write against a read only replica.
4.redis压力测试
使用redis自带的redis-benchmark测试工具来测试redis的性能
docker exec -it redis-master bash -c "redis-benchmark -c 50 -n 10000"
- c 指定并发连接数
- n 指定请求数
5.注意事项
1)daemonize 后台运行
注意:docker -d 已经是后台运行了,所以在redis.conf的配置里,daemonize 设置为no,如果是yes,会出现冲突,然后启动不了redis容器