docker 指定网卡_redis-cluster集群在docker中部署 (centos 环境)

一 前期准备

1、centos 7 系统+docker环境(略)

二 安装集群环境

1、安装redis镜像

docker pull redis ##获取最新redis版本

备注:redis官方集群方案 为4.0版本之后自带

2、安装ruby镜像 tag省略默认下载lasted

docker pull ruby

3、安装结果如下

4f0675664388a5ba9acf040339896cd0.png

docker 本地镜像

三、集群配置

1、创建虚拟网卡

docker network create redis-net

docker network ls ##查看网卡信息

ffc11e3762b75e1b561b0c3a657655de.png

docker 虚拟网卡信息

备注:创建redis-net虚拟网卡目的是让docker容器能与宿主(centos7)桥接网络并间接与外界连接

2、查看redis-net虚拟网卡网关ip

docker network inspect redis-net

08f3289c8df04c40cf8205094db0e606.png

3、创建配置文件模版

mkdir /home/redis-cluster ##在home 目录下创建 集群配置文件加

cd /home/redis-cluster ##在创建目录中

touch redis-cluster.tmpl ##创建模版件

vi redis-cluster.tmpl ##编辑模版文件

备注:编辑如下 按 esc + :wq 保存退出,不要有任何多余空格

port ${PORT} ##节点端口

cluster-enabled yes ##cluster集群模式

cluster-config-file nodes.conf ##集群配置名

cluster-node-timeout 5000 ##超时时间

cluster-announce-ip 172.18.0.1 ##实际为各节点网卡分配ip 先用上网关ip代替

cluster-announce-port ${PORT} ##节点映射端口

cluster-announce-bus-port 1${PORT} ##节点总线端

appendonly yes ##持久化模式

logfile redis.log ##日志文件

masterauth test@2019 ##密码,非必要

requirepass test@2019 ##同步密码,非必要

备注:此模版文件为集群节点通用文件 其中${PORT} 将读取命令行变量 ip则根据网卡分配ip进行替换 以保证节点配置文件除端口以及ip 全部一致。

4、创建节点配置文件

cd /home/redis-cluster

for port in `seq 7010 7015`; do

mkdir -p ./${port}/conf

&& PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf

&& mkdir -p ./${port}/data;

done

备注:命令译为 循环7010 - 7015 在当前目录下创建 701*/conf 目录结构 (mkdir -p 递归创建目录),设置701*为PORT变量 将当前目录下 模版文件 复制到 701*/conf/redis.conf 文件中,在当前目录下创建 701*/data 目录结构

5、验证上步

cd /home/redis-cluster

tree --charset gb2312 ##跟上charset,避免出现乱码

cat 701*/conf/redis.conf

42443ea51fbfa9f1f4a676b441042eb7.png

6、启动redis节点容器

for port in `seq 7010 7015`; do

docker run -d -ti -p ${port}:${port} -p 1${port}:1${port}

--privileged=true -v /home/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf

--privileged=true -v /home/redis-cluster/${port}/data:/data

--restart always --name redis-${port} --net redis-net

--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;

done

备注:命令译为 循环7010 - 7015 运行redis 容器

docker run 运行

-d 守护进程模式

--restart always 保持容器启动

--name redis-710* 容器起名

--net redis-net 容器使用虚拟网卡

-p 指定宿主机器与容器端口映射 701*:701*

-P 指定宿主机与容器redis总线端口映射 1701*:1701*

--privileged=true -v /home/redis-cluster/701*/conf/redis.conf:/usr/local/etc/redis/redis.conf

将宿主701*节点文件挂载到容器/usr/local/etc/redis/redis.conf 文件中

--privileged=true -v /home/redis-cluster/${port}/data:/data

将宿主701*/data目录挂载到容器/data目录中

--sysctl net.core.somaxconn=1024 redis redis-server /usr/local/etc/redis/redis.conf;

容器根据挂载的配置文件启动 redis服务端

7、验证容器启动

docker ps

0a7416d2ec2808562df216775d641a74.png

8、查看容器分配ip

docker network inspect redis-net

22e2d9cc10fe317158dcb6d61ef206f4.png

备注:每个容器对应分配了ip 需要修改节点配置文件redis.conf与其对应 并重启容器。

9、修改宿主挂载目录文件中文件redis.conf 对应的ip地址

vi /home/redis-cluster/701*/conf/redis.conf ##其中*用具体数字代替,依次修改,编辑ip为【8】查询分配的ip 并esc+:wq退出

备注:6个都要修改redis.conf

10、暂停容器并删除容器 以便重复6步骤

for port in `seq 7010 7015`; do

docker stop redis-${port};

docker rm redis-${port};

done

再重复【6】步骤redis启动容器

11、启动redis-cluster集群

docker exec -it redis-7010 redis-cli -a test@2019 --cluster create 172.18.0.2:7010 172.18.0.3:7011 172.18.0.4:7012 172.18.0.5:7013 172.18.0.6:7014 172.18.0.7:7015 --cluster-replicas 1

备注:--cluster-replicas 1 表示1主1备,前3个会自动设置为主,后面3个自动设置为备

12、进入客户端操作

docker exec -it redis-7010 redis-cli -h 192.168.2.88 -p 7010 -a test@2019 -c

备注:

-h:宿主主机地址

-p:端口

-a:密码

-c:以集群方式进入

备注:windows下docker部署类似,切换到linux环境(Switch to Windows containers),最终处于如下图状态。

d531734c6ad23c46b304e32b524766d2.png

windows的下docker操作可以利用windows自带的工具PowerShell

bcbef1f2dac030f36dce53d0e589d7e2.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值