用docker安装官方redis和主从配置

2018-11-05  本文已影响47人  szgl_lucifer

1:拉取redis官方镜像

docker pull redis:3.2

2:查看拉取的镜像

docker images

3:因为我拉取的是redis3.2版本,所以需要在redis官网下载redis3.2版本的redis.conf文件

https://github.com/antirez/redis/releases/tag/3.2.11 

现在本地修改redis.conf文件

想要远程连接,首先把绑定到本地地址的配置注释掉

保护模式关掉 

设置登录密码

4:把修改好的redis.conf放到建立的目录下:

我在根目录下的docker/redis下放置redis.conf文件,然后在这个路径下运行run命令。

5:运行镜像生成容器

docker run -p 6379:6379 --name myredis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis:3.2 redis-server /etc/redis/redis.conf --appendonly yes

--name myredis : 指定容器名称,这个最好加上,不然在看docker进程的时候会很尴尬。

-p 6699:6379 : 指定端口映射,默认redis启动的是6379,至于外部端口不冲突就行。

-v $PWD/redis.conf:/etc/redis/redis.conf : 将主机中当前目录下的redis.conf配置文件映射。

-v $PWD/data:/data -d redis:3.2 : 将主机中当前目录下的data挂载到容器的/data

--redis-server --appendonly yes :在容器执行redis-server启动命令,并打开redis持久化配置

6:运行好后,查看容器是否在运行 docker ps -a

7:得到容器id,进入redis客户端。

docker exec -it 9f75b03abe0d bash

redis-cli

能进入说明配置没有问题。

8:远程用redis工具链接

配置ip地址、端口号、密码,然后可以正常链接。

9:主从配置

在另一台虚拟机上安装一个redis,配置文件redis.conf内容修改:

slaveof  192.168.155.56  6379  

192.168.155.56 是我前一个redis的地址

启动redis镜像生成容器:

docker run -p 6379:6379 --name redis -v /docker/redis/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data -d redis:3.2 redis-server /etc/redis/redis.conf --appendonly yes

这样,我在192.168.155.56,192.168.155.55 都启动了redis。 55是56的备份机  56是Master节点  55是Slaver节点

当往56上写数据的时候,会自动同步给55

10:主从切换

https://github.com/antirez/redis/releases/tag/3.2.11 把sentinel.conf配置文件下来,修改内面的内容:

sentinel monitor mymaster 192.168.155.56 6379 1

我把最后一个值设置为1,测试使用。(一般会设置为2) 这个值表示当有1台机器监测到56redis当掉的话,就启动55当master

启动镜像

docker run -p 26379:26379 --name sentinel -v /docker/redis/sentinel.conf:/etc/redis/sentinel.conf -v /docker/redis/data:/data -d redis:3.2 redis-sentinel /etc/redis/sentinel.conf --appendonly yes --slave-read-only yes

把56机器上的redis停掉,看下55机器的日志

docker logs -f sentinel

55变成master,56变成slave

11:工程中application.yml的修改为

# name of Redis server 哨兵监听的Redis server的名称

spring.redis.sentinel.master=mymaster

# comma-separated list of host:port pairs  哨兵的配置列表

spring.redis.sentinel.nodes=192.168.155.56:26379,192.168.155.55:26379,192.168.155.45:26379

这样写就可以自动切换redis节点了。

上一篇下一篇

猜你喜欢

热点阅读