Redis

首页 -  Redis  -  redis集群,docker redis集群

redis集群,docker redis集群

redis集群,docker redis集群

因为我们是利用虚拟机的docker去操作的配置所以先要了解一下docker网络配置

docker安装后,默认会创建下面三种网络类型

image.png

可以通过 --network bridge 指定网络类型

默认情况下启动的Docker容器,都是使用 bridgeDocker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,DockerIP地址就变

容器从原理上是可以与宿主机乃至外界的其他机器通信的。同一宿主机上,容器之间都是连接掉docker0这个网桥上的,它可以作 为虚拟交换机使容器可以相互通信。然而, 由于宿主机的 IP地址与容器的IP地址均不在同一个网段,不足以使宿主机以外的网络主动发现容器的存在。为了使外 界可以方位容器中的进程,docker采用了端口绑定的方式,也就是通过iptablesNAT, 将宿主机上的端口端口流量 转发到容器内的端口上

因为默认的网络不能制定固定的地址,所以我们将创建自定义网络,并指定网段:192.168.1.0/24 并命名为mynetwork,指令

docker network create --subnet=192.160.1.0/24 mynetwork


如下:

image.png!注意:这个网络段不要和宿主机的网络端冲突,不然会容易对宿主机产生影响


一.根据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主从执行流程

  1. 保存主节点信息

  2. 主从建立socket连接

  3. 发送ping命令

  4. 权限验证

  5. 同步数据集 

  6. 命令持续复制

(0)
分享:

本文由:xiaoshu168.com 作者:xiaoshu发表,转载请注明来源!

标签:

相关阅读