Redis-Docker部署及主从复制配置

1.安装部署Redis

1).查看所有的Redis镜像

docker search redis

2).拉取你中意的Redis镜像(推荐star高的)

docker pull

em:

docker pull redis

3).创建挂载的目录

宿主机创建目录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
mkdir -p /data/LPAPP/docker_redis_6379/etc

mkdir -p /data/LPAPP/docker_redis_6379/data

mkdir -p /data/LPAPP/docker_redis_6379/log

chmod -R 777 /data/LPAPP/docker_redis_6379/etc

chmod -R 777 /data/LPAPP/docker_redis_6379/data

chmod -R 777 /data/LPAPP/docker_redis_6379/log

宿主机上创建redis用户

1
2
3
4
5
useradd redis

cd /data/LPAPP

chown -Rf redis:redis docker_redis_6379

4).配置文件

A.redis.conf配置文件

#根据文档-Redis(主从复制),

在/data/LPAPP/docker_redis_6379/etc下

vim redis.conf

复制粘贴(Redis(主从复制))=>5.完整redis.conf)配置内容

修改内容:

#启动端口

port 6379

#守护方式PID存放路径

pidfile /var/run/redis_6379.pid

#日志文件stdout是标准输出(输出屏幕或者发送给dev/null)

logfile “/var/log/redis/redis_6379.log”

#守护方式启动,docker必须为关闭

daemonize no

B.sentinel.conf配置文件

#根据文档-Redis(主从复制)生成以下配置文件

sentinel.conf #哨兵配置

5).创建容器并启动,端口6379

1.拉取镜像并创建容器并启动(挂载目录并从配置启动)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
docker run --privileged=true \

-p 6379:6379 \

-v /data/LPAPP/docker_redis_6379/data:/data \

-v /data/LPAPP/docker_redis_6379/etc:/etc/redis \

-v /data/LPAPP/docker_redis_6379/log:/var/log/redis \

--name redis_6379 \

-itd redis redis-server /etc/redis/redis.conf

2.启动失败,查看日志

docker logs redis_6379

3.配置说明

-p 6379:6379:把容器内的6379端口映射到宿主机6379端口

-v /data/LPAPP/docker_redis_6379/data:/data:把宿主机配置好的redis.conf放到容器内的这个位置中

-v /root/redis/data:/data:把redis持久化的数据在宿主机内显示,做数据备份

redis-server /etc/redis/redis.conf -p 6379:这个是关键配置,让redis不是无配置启动,而是按照这个redis.conf的配置启动,并且端口为630

–appendonly yes:redis启动后数据持久化

–privileged=true 增加权限,解决权限不够,导致执行后docker ps 查不到redis

4.进入容器:

docker exec -it redis_6379 /bin/bash

5.进入redis

docker exec -it redis_6379 redis-cli -h localhost -p 6379 -a dy123456

6.主从复制

A.创建共享网络

docker network create –driver bridge docker_redis

docker netweork ls

docker network inspect docker_redis

B.端口:6379

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
docker stop redis_6379

docker rm redis_6379

docker run --privileged=true \

-p 6379:6379 \

-v /data/LPAPP/docker_redis_6379/data:/data \

-v /data/LPAPP/docker_redis_6379/etc:/etc/redis \

-v /data/LPAPP/docker_redis_6379/log:/var/log/redis \

--network docker_redis \

--name redis_6379 \

-itd redis redis-server /etc/redis/redis.conf

C.端口:6380

A.创建目录

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
mkdir -p /data/LPAPP/docker_redis_6380/etc \

mkdir -p /data/LPAPP/docker_redis_6380/data \

mkdir -p /data/LPAPP/docker_redis_6380/log \

chmod -R 777 /data/LPAPP/docker_redis_6380/etc \

chmod -R 777 /data/LPAPP/docker_redis_6380/data \

chmod -R 777 /data/LPAPP/docker_redis_6380/log \

chown -Rf redis:redis docker_redis_6380

B.创建配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
cp /data/LPAPP/docker_redis_6379/etc/redis.conf /data/LPAPP/docker_redis_6380/etc/

vim redis.conf

修改内容:

\#启动端口

port 6379

\#守护方式PID存放路径

pidfile /var/run/redis_6380.pid

\#日志文件stdout是标准输出(输出屏幕或者发送给dev/null)

logfile "/var/log/redis/redis_6380.log"

\#守护方式启动,docker必须为关闭

daemonize no

\#从服务器只读

slave-read-only yes

\#从服务器关闭AOF备份

appendonly no

\#注释save相关的RDB备份

\#主服务器访问密码

masterauth dy123456

\#主服务器IP和PORT

slaveof redis_6379 6379

C.创建并启动容器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
docker run --privileged=true \

-p 6380:6379 \

-v /data/LPAPP/docker_redis_6380/data:/data \

-v /data/LPAPP/docker_redis_6380/etc:/etc/redis \

-v /data/LPAPP/docker_redis_6380/log:/var/log/redis \

--network docker_redis \

--name redis_6380 \

-itd redis redis-server /etc/redis/redis.conf

D.端口:6381

A.创建目录

mkdir -p /data/LPAPP/docker_redis_6381/etc \

mkdir -p /data/LPAPP/docker_redis_6381/data \

mkdir -p /data/LPAPP/docker_redis_6381/log \

chmod -R 777 /data/LPAPP/docker_redis_6381/etc \

chmod -R 777 /data/LPAPP/docker_redis_6381/data \

chmod -R 777 /data/LPAPP/docker_redis_6381/log \

chown -Rf redis:redis docker_redis_6381

B.创建配置

cp /data/LPAPP/docker_redis_6380/etc/redis.conf /data/LPAPP/docker_redis_6381/etc/

vim redis.conf

修改内容:

#启动端口

port 6379

#守护方式PID存放路径

pidfile /var/run/redis_6381.pid

#日志文件stdout是标准输出(输出屏幕或者发送给dev/null)

logfile “/var/log/redis/redis_6381.log”

#守护方式启动,docker必须为关闭

daemonize no

#从服务器只读

slave-read-only yes

#从服务器关闭AOF备份

appendonly no

#注释save相关的RDB备份

#主服务器访问密码

masterauth dy123456

#主服务器IP和PORT

slaveof redis_6379 6379

C.创建并启动容器

docker run –privileged=true \

-p 6381:6379 \

-v /data/LPAPP/docker_redis_6381/data:/data \

-v /data/LPAPP/docker_redis_6381/etc:/etc/redis \

-v /data/LPAPP/docker_redis_6381/log:/var/log/redis \

–network docker_redis \

–name redis_6381 \

-itd redis redis-server /etc/redis/redis.conf

E.测试主从复制

#查看redis服务信息

docker exec -it redis_6379 redis-cli -p 6379 -a dy123456 info

#查看主从复制信息

docker exec -it redis_6379 redis-cli -p 6379 -a dy123456 info replication

#redis客户端,测试主从复制

docker exec -it redis_6379 redis-cli -h localhost -p 6379 -a dy123456

F.哨兵 sentinel

A.创建目录

mkdir -p /data/LPAPP/docker_redis_sentinel_26379/etc

mkdir -p /data/LPAPP/docker_redis_sentinel_26379/data

mkdir -p /data/LPAPP/docker_redis_sentinel_26379/log

chmod -R 777 /data/LPAPP/docker_redis_sentinel_26379/etc \

chmod -R 777 /data/LPAPP/docker_redis_sentinel_26379/data \

chmod -R 777 /data/LPAPP/docker_redis_sentinel_26379/log \

chown -Rf redis:redis docker_redis_sentinel_26379

B.创建配置

cd /data/LPAPP/docker_redis_sentinel_26379/etc

vim sentinel.conf

复制粘贴(Redis(主从复制))=>sentinel.conf配置)配置内容

修改的内容:

sentinel monitor redis_6379 172.18.0.2 6379 1

sentinel auth-pass redis_6379 dy123456

sentinel down-after-milliseconds redis_6379 10000

C.创建并启动容器

docker run –privileged=true \

-p 26379:26379 \

-v /data/LPAPP/docker_redis_sentinel_26379/data:/data \

-v /data/LPAPP/docker_redis_sentinel_26379/etc:/etc/redis \

-v /data/LPAPP/docker_redis_sentinel_26379/log:/var/log/redis \

–network docker_redis \

–name redis_sentinel_26379 \

-itd redis redis-sentinel /etc/redis/sentinel.conf

D.观察容器内哨兵情况

监听哨兵日志,停止主redis服务器,观看日志变化

docker exec -it redis_sentinel_26379 redis-cli -h localhost -p 26379 -a dy123456