redis集群,docker redis集群
因为我们是利用虚拟机的docker去操作的配置所以先要了解一下docker网络配置
docker安装后,默认会创建下面三种网络类型
可以通过 --network bridge 指定网络类型
默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变
容器从原理上是可以与宿主机乃至外界的其他机器通信的。同一宿主机上,容器之间都是连接掉docker0这个网桥上的,它可以作 为虚拟交换机使容器可以相互通信。然而, 由于宿主机的 IP地址与容器的IP地址均不在同一个网段,不足以使宿主机以外的网络主动发现容器的存在。为了使外 界可以方位容器中的进程,docker采用了端口绑定的方式,也就是通过iptables的NAT, 将宿主机上的端口端口流量 转发到容器内的端口上
因为默认的网络不能制定固定的地址,所以我们将创建自定义网络,并指定网段:192.168.1.0/24 并命名为mynetwork,指令
docker network create --subnet=192.160.1.0/24 mynetwork
如下:
!注意:这个网络段不要和宿主机的网络端冲突,不然会容易对宿主机产生影响
一.根据dockerfile创建镜像
FROM alpine:3.11 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ && apk add gcc g++ libc-dev wget vim openssl-dev make linux-headers \ && rm -rf /var/cache/apk/* COPY ./redis-5.0.7.tar.gz redis-5.0.7.tar.gz #通过选择更小的镜像,删除不必要文件清理不必要的安装缓存,从而瘦身镜像 #创建相关目录能够看到日志信息跟数据跟配置文件 sh RUN mkdir -p /usr/src/redis \ && mkdir -p /redis/data \ && mkdir -p /redis/conf \ && mkdir -p /redis/log \ && mkdir -p /var/log/redis \ && tar -zxvf redis-5.0.7.tar.gz -C /usr/src/redis \ && rm -rf redis-5.0.7.tar.gz \ && cd /usr/src/redis/redis-5.0.7 && make \ && cd /usr/src/redis/redis-5.0.7 && make install; EXPOSE 6379 #这里注释了redis启动为了方便演示效果 # CMD ["redis-server","/usr/src/redis/redis-5.0.7/redis.conf"] #ENTRYPOINT ["redis-server", "/usr/src/redis/redis-5.0.7/redis.conf"]
案例操作如下在系统中创建一个文件夹
1. cd /home 2. mkdir redis 3. cd redis 4. touch Dockerfile 5. 将dockerfile文件内容粘贴到文件中 6. 下载redis安装包 链接: https://pan.baidu.com/s/1CgOAUlxBdLyNM8_dbEOLxw 提取码: swp3 7. docker build -t redis5 . #这个是创建镜像 8. docker run -itd -v /home/redis/master:/redis -p 6350:6379 --network=mynetwork --ip=192.160.1.150 --name redis5master redis5 #创建主容器 9. docker run -itd -v /home/redis/slave:/redis -p 6340:6379 --network=mynetwork --ip=192.160.1.140 --name redis5slave redis5 #创建从容器 10. docker exec -it redis5master sh #进入主 11. docker exec -it redis5slave sh #进入从
查看主的配置文件的这两个参数并修改
bind 0.0.0.0 protected-mode no
启动主的redis
find / -name redis.conf #找到redis.conf redis-server /redis/conf/redis.conf #启动redis如果说在redis目录下没有找到redis配置文件那就复制一下 cp /usr/src/redis/redis-5.0.7/redis.conf /redis/conf/redis.conf #复制配置文件然后在启动
进入主的redis客户端
redis-cli
这个时候我们在打开一个窗口进入从然后进入客户端
redis-cli SLAVEOF 192.160.1.150 6379 #利用这个命令就搭建好了主从192.160.1.150为主服务的ip
然后在主的客户端 set name test 在从的客户端也可以查到这个key了
redis对于主从复制有三种方式 masterHost 是ip masterPort是端口
1. 在配置文件中加入 slaveof {masterHost} {masterPort} 随redis启动生效
2. 在redis-server启动命令后加入 --slaveof {masterHost} {masterPort} 生效
3. 直接使用命令: slaveof {masterHost} {masterPort}
在成功建立主从连接之后我们可以通过客户端里 info replication 命令查看复制相关状态
redis默认就是主如果配置了重那就变成了重了
redis主从执行流程
保存主节点信息
主从建立socket连接
发送ping命令
权限验证
同步数据集
命令持续复制
本文由:xiaoshu168.com 作者:xiaoshu发表,转载请注明来源!