[docker学习笔记] 12.docker搭建redis cluster(集群)

12.1 环境

准备2个虚拟机。简单的方法,克隆一个虚拟机,改一下ip,重启网络

 vi /etc/sysconfig/network-scripts/ifcfg-ens32 #打开网络配置文件进行编辑
 ......#改完后保存退出
 systemctl restart network

12.2 编辑redis配置文件。

12.2.1 两个虚拟机都需要操作。

创建目录和文件

 mkdir -p /usr/local/docker-redis/redis-cluster
 cd /usr/local/docker-redis/redis-cluster
 ls #确认没有是空文件夹
 vi redis-cluster.tmpl #编辑
 port ${PORT}
 requirepass 1234
 masterauth 1234
 protected-mode no
 daemonize no
 appendonly yes
 cluster-enabled yes
 cluster-config-file nodes.conf
 cluster-node-timeout 15000
 cluster-announce-ip 192.168.146.10
 cluster-announce-port ${PORT}
 cluster-announce-bus-port 1${PORT}
  • port:节点端口

  • requirepass:添加访问认证

  • masterauth:如果主节点开启了访问认证,从节点访问主节点需要认证

  • protected-mode:保护模式。默认值yes,即开启,开启后,需配置bind ip或者设置访问密码;若关闭,外部网络可以直接访问。

  • daemonize:是否以守护线程的方式启动(后台启动),默认no;

  • appendonly:是否开启AOF持久化模式,默认no;

  • cluster-enabled:是否开启集群,默认no;

  • cluster-config-file:集群节点信息文件;

  • cluster-node-timeout:集群节点连接超时时间;

  • cluster-announce-ip:集群节点IP,填写宿主机的IP;

  • cluster-announce-port:集群节点映射端口;

  • cluster-announce-bus-port:集群节点总线端口。

12.2.2 分别在2个虚拟机,redis-cluster目录下执行:

 for port in `seq 6471 6473`;do \
 mkdir -p ${port}/conf \
 && PORT=${port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf \
 && mkdir -p ${port}/data;\
 done
 for port in `seq 6474 6476`;do \
 mkdir -p ${port}/conf \
 && PORT=${port} envsubst < redis-cluster.tmpl > ${port}/conf/redis.conf \
 && mkdir -p ${port}/data;\
 done

12.2.3

 #安装tree命令
 yum install -y tree
 #查看目录结构
 tree /usr/local/docker-redis/redis-cluster
 #查看各个节点的详细信息
 cat /usr/local/docker-redis/redis-cluster/647{1..3}/conf/redis.conf

12.3 创建redis容器

 for port in $(seq 6471 6473);do \
 docker run -di --restart always --name redis-${port} --net host \
 -v /usr/local/docker-redis/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
 -v /usr/local/docker-redis/redis-cluster/${port}/data:/data \
 redis redis-server /usr/local/etc/redis/redis.conf; \
 done
 for port in $(seq 6474 6476);do \
 docker run -di  --name redis-${port} --net host \
 -v /usr/local/docker-redis/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
 -v /usr/local/docker-redis/redis-cluster/${port}/data:/data \
 redis redis-server /usr/local/etc/redis/redis.conf; \
 done

12.4 创建集群

 #进入容器
 docker exec -it redis-6474 bash
 #切换目录
 cd /usr/local/bin/
 #创建。如果出现拒绝连接,可以关闭防火墙。
 redis-cli -a 1234 --cluster create 192.168.146.10:6471 192.168.146.10:6472 192.168.146.10:6473 192.168.146.11:6474 192.168.146.11:6475 192.168.146.11:6476 --cluster-replicas 1

如果出现拒绝连接,可以关闭防火墙,如下。

 ​
 #永久关闭 firewalld防火墙
 systemctl stop firewalld.service  #停止firewalld服务
 systemctl disable firewalld.service # 开机禁用firewalld服务
 #永久关闭SELinux防火墙
 vi /etc/sysconfig/selinux
 ​
 SELINUX=disabled
 ​
 #重启
 reboot
 #给/etc/rc.d/rc.local 文件设置  “x”可执行权限
 chmod +x /etc/rc.d/rc.local

查看集群状态

 redis-cli -a 1234 --cluster check 192.168.146.11:6475

简单应用redis,set/get

 #进入容器并连接至集群某个节点
 docker exec -it redis-6471 /usr/local/bin/redis-cli -c -a 1234 -h 192.168.146.10 -p 6471
 #写入数据
 set name hello
 set aaa 111
 set bbb 222
 #读取数据
 get name 
 get bbb
 get ccc
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值