文章目录
一 安装redis
docker pull redis
二 安装Docker-compose
1 在线安装速度很慢,我们离线安装,准备离线安装包
下载地址 https://download.csdn.net/download/qq_33396183/20720394
2 docker-compose-Linux-x86_64 上传到服务器中,然后执行如下命令将其移动到/usr/local/bin/目录中 并且更名为docker-compose
mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
3 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
4 验证docker-compose
docker-compose -version
三 Docker-compose配置Redis主从
1 创建本地与docker映射的目录
1.在/data/redis目录下新建文件夹redis_cluster
[root@localhost roo]# mkdir -p /data/redis/redis_cluster
2.我们需要搭建三个redis集群,在redis_cluster目录下新建三个文件夹
[root@localhost redis_cluster]# mkdir 6379 6380 6381
3.把redis的配置文件分别上传到这三个文件夹下
2 分别修改配置文件redis.conf 中的内容,修改内容如下
配置 | 说明 |
---|---|
daemonize no | #这个使用默认值,不能该成yes |
pidfile /var/run/redis_6379.pid | #把名称改成对应的端口号 |
port 6379 | #修改redis端口号 |
dbfilename dump6379.rdb | #在名称上加上对应的端口号 |
bind 127.0.0.1 | #找到这一项,注释掉 |
requirepass 123456 | #设置当前redis数据库的密码 |
masterauth 123456 | #设置主库密码 |
appendonly yes | #开启redis持久化 |
3 创建redis的docker-compose.yml文件
version: '3'
services:
# 主节点的容器
redis-server-master:
image: redis
container_name: redis-server-master
restart: always
ports:
- "6379:6379"
# 指定时区,保证容器内时间正确
environment:
TZ: "Asia/Shanghai"
volumes:
# 映射配置文件和数据目录
- /data/redis/redis_cluster/6379/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/redis_cluster/6379/data:/data
sysctls:
# 必要的内核参数
net.core.somaxconn: '511'
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
# 从节点1的容器
redis-server-slave-1:
image: redis
container_name: redis-server-slave-1
restart: always
depends_on:
- redis-server-master
ports:
- "6380:6380"
environment:
TZ: "Asia/Shanghai"
volumes:
- /data/redis/redis_cluster/6380/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/redis_cluster/6380/data:/data
sysctls:
net.core.somaxconn: '511'
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
# 从节点2的容器
redis-server-slave-2:
image: redis
container_name: redis-server-slave-2
restart: always
depends_on:
- redis-server-master
ports:
- "6381:6381"
environment:
TZ: "Asia/Shanghai"
volumes:
- /data/redis/redis_cluster/6381/redis.conf:/usr/local/etc/redis/redis.conf
- /data/redis/redis_cluster/6381/data:/data
sysctls:
net.core.somaxconn: '511'
command: ["redis-server", "/usr/local/etc/redis/redis.conf"]
4 启动docker-compose
docker-compose up -d
5 进入redis客户端并登录
进入redis客户端
docker exec -it 容器id redis-cli -p 6379
docker exec -it 容器id redis-cli -p 6380
docker exec -it 容器id redis-cli -p 6381
三个客户端都登录进去登录
auth 123456
6 配置主从关系
在这里我们把6379配置为主,6380,6381配置为从
我们在6380,6381的客户端上分别输入如下命令
slaveof 116.62.68.112 6379
7 查看redis的主从关系,使用如下命令
info replication
四 Docker-compose配置哨兵
1 创建sentinel的docker-compose.yml文件
version: '3'
services:
redis-sentinel-1:
image: redis
container_name: redis-sentinel-1
restart: always
ports:
- "26379:26379"
volumes:
- /data/redis/redis_cluster/sentinel/26379/sentinel.conf:/etc/redis/sentinel.conf
- /data/redis/redis_cluster/sentinel/26379/data:/data -d redis redis-sentinel
# 指定时区,保证容器内时间正确
environment:
TZ: "Asia/Shanghai"
sysctls:
net.core.somaxconn: '511'
command: ["redis-sentinel", "/etc/redis/sentinel.conf"]
redis-sentinel-2:
image: redis
container_name: redis-sentinel-2
restart: always
ports:
- "26380:26380"
volumes:
- /data/redis/redis_cluster/sentinel/26380/sentinel.conf:/etc/redis/sentinel.conf
- /data/redis/redis_cluster/sentinel/26380/data:/data -d redis redis-sentinel
environment:
TZ: "Asia/Shanghai"
sysctls:
net.core.somaxconn: '511'
command: ["redis-sentinel", "/etc/redis/sentinel.conf"]
redis-sentinel-3:
image: redis
container_name: redis-sentinel-3
restart: always
ports:
- "26381:26381"
volumes:
- /data/redis/redis_cluster/sentinel/26381/sentinel.conf:/etc/redis/sentinel.conf
- /data/redis/redis_cluster/sentinel/26381/data:/data -d redis redis-sentinel
environment:
TZ: "Asia/Shanghai"
sysctls:
net.core.somaxconn: '511'
command: ["redis-sentinel", "/etc/redis/sentinel.conf"]
2 启动docker-compose
docker-compose up -d