docker搭建redis-cluster集群,多机器

redis-cluster搭建

机器列表

主机名IP地址
redis110.0.0.85
redis210.0.0.48
redis310.0.0.65
  • 此教程安装目录默认为 /community/rediscluster
  • 3台都是

免密登录(可不做)

  • 登录10.0.0.85
ssh-keygen -t rsa

[root@0002 .ssh]# cat authorized_keys 
[root@0002 .ssh]# cat ./id_rsa.pub >> authorized_keys 
[root@0002 .ssh]# chmod 600 authorized_keys 
[root@0002 .ssh]# cd ..
[root@0002 ~]# chmod -R 700 .ssh/
  • 复制密匙到其他机器
ssh-copy-id -i ~/.ssh/id_rsa.pub [romte_ip]

编写配置文件

  • vim redis-cluster.tmpl
  • 注意: daemonize必须为no
bind 0.0.0.0
port ${PORT}
# docker安装必须为no,如果是yes,docker会认为这个程序未启动
daemonize no
requirepass "123456"
logfile "/var/log/redis.log"
dbfilename "redis.rdb"
dir "/data"
appendonly yes
appendfilename "appendonly.aof"
masterauth "123456"

#是否开启集群
cluster-enabled yes

# 生成的node文件,记录集群节点信息,默认为nodes.conf,防止冲突,改为nodes-${PORT}.conf
cluster-config-file nodes-${PORT}.conf

#节点连接超时时间
cluster-node-timeout 20000

#集群节点的ip,当前节点的ip
cluster-announce-ip 10.0.0.85

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

#集群节点总线端口,节点之间互相通信,常规端口+1万
cluster-announce-bus-port 1${PORT}

创建文件夹命令

  • vim mkdir.sh
path=/community/rediscluster/
for port in `seq 7000 7001`;   #创建每个实例的conf 和data 文件夹
 do \
  mkdir -p ${path}cluster${port}/conf \
  && PORT=${port} envsubst < ${path}redis-cluster.tmpl > ${path}cluster${port}/conf/redis.conf \
  && mkdir -p ${path}cluster${port}/data && mkdir -p ${path}cluster${port}/log \
  && chmod -R 777 ${path}cluster${port}/log;\
done

创建镜像命令

  • vim create.sh
for port in `seq 7000 7001`; do
#运行每个实例
echo "docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
-v /community/rediscluster/cluster${port}/conf/redis.conf:/etc/redis/redis.conf \
-v /community/rediscluster/cluster${port}/data:/data \
-v /community/rediscluster/cluster${port}/log:/var/log \
--restart always --name redis-${port} \
--privileged=true \
redis redis-server /etc/redis/redis.conf
"
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} \
-v /community/rediscluster/cluster${port}/conf/redis.conf:/etc/redis/redis.conf \
-v /community/rediscluster/cluster${port}/data:/data \
-v /community/rediscluster/cluster${port}/log:/var/log \
--restart always --name redis-${port} \
--privileged=true \
redis redis-server /etc/redis/redis.conf
done

创建操控其他机器的命令

  • vim mycmd.sh
host=("10.0.0.85" "10.0.0.65" "10.0.0.48")

for item in ${host[@]};
    do 
        echo "====================    ${item}    ===================="
        ssh root@${item} "source /etc/profile; $@"
        echo ""
        echo ""
        echo ""
    done

将上述文件传到各个文件

  • redis-cluster.tmplmkdir.shcreate.sh传到其他机器上面
scp redis-cluster.tmpl mkdir.sh create.sh root@10.0.0.48:/community/rediscluster/
scp redis-cluster.tmpl mkdir.sh create.sh root@10.0.0.65:/community/rediscluster/

  • 修改 10.0.0.48,10.0.0.65redis-cluster.tmpl中的当前节点的ip为当前机器ip
  • 修改 10.0.0.48,10.0.0.65redis-cluster.tmpl中的当前节点的ip为当前机器ip
  • 修改 10.0.0.48,10.0.0.65redis-cluster.tmpl中的当前节点的ip为当前机器ip

创建redis容器

  • 如果不做免密登录,可以自己到对应的机器执行相对于的脚本
  • 如果不做免密登录,可以自己到对应的机器执行相对于的脚本
  • 如果不做免密登录,可以自己到对应的机器执行相对于的脚本
  • 1.先创建文件夹
sh mycmd.sh sh /community/rediscluster/mkdir.sh

  • 2.创建redis容器
sh mycmd.sh sh /community/rediscluster/create.sh

  • 3.查看redis容器是否启动
  • sh mycmd.sh docker ps

创建集群

  • 进去一台redis容器

  • docker exec -it redis-7000 sh

  • 创建集群

redis-cli -a 密码 --cluster create 10.0.0.48:7000 10.0.0.48:7001 10.0.0.65:7000 10.0.0.65:7001 10.0.0.85:7000 10.0.0.85:7001 --cluster-replicas 1

  • 检查状态信息(其中一个节点执行即可)
  • redis-cli -a 密码 --cluster check 10.0.0.48:7000

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值