单机搭建Redis集群

在测试和研发环境搭建单机Redis集群,简单易懂、方便使用。

1,通过二进制安装docker环境

官网下载静态二进制文件:
https://download.docker.com/linux/static/stable/x86_64/docker-20.10.3.tgz
1.1,上传静态二进制文件到服务器 /home/admin
1.2,提取解压文件
$ tar -zxf /home/admin/docker-20.10.3.tgz
1.3,将二进制文件移到可执行路径上的目录
$ cp /home/admin/docker/* /usr/bin/
1.4,编辑docker文件
$ cat>> /etc/systemd/system/docker.service<<\EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
# the default is not to use systemd for cgroups because the delegate issues still
# exists and systemd currently does not support the cgroup feature set required
# for containers run by docker
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
ExecReload=/bin/kill -s HUP $MAINPID
# Having non-zero Limit*s causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
# Uncomment TasksMax if your systemd version supports it.
# Only systemd 226 and above support this version.
#TasksMax=infinity
TimeoutStartSec=0
# set delegate yes so that systemd does not reset the cgroups of docker containers
Delegate=yes
# kill only the docker process, not all processes in the cgroup
KillMode=process
# restart the docker process if it exits prematurely
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s

[Install]
WantedBy=multi-user.target
EOF
1.5,添加可执行权限
$ chmod +x /etc/systemd/system/docker.service -R
1.6,启动docker
$ systemctl start docker

常用参数

systemctl daemon-reload         //重载配置文件
systemctl start docker          //启动Docker
systemctl stop docker           //关闭docker
systemctl restart  docker       //重启docker
systemctl enable docker.service //设置开机自启
systemctl status docker         //查看Docker状态
1.7,执行docker命令,验证是否安装成功
$ docker ps 
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

2,安装redis

2.1,在可联网并安装有docker的服务器,拉取redis镜像后再导出镜像
//拉取镜像
$ docker pull redis:6.0.12

//导出镜像
$ docker sava -o redis.tar redis:6.0.12
2.2,上传docker导出的redis镜像到待部署的服务器 /home/admin/
2.2,加载导出的redis镜像
//加载镜像
$ docker load -i redis.tar
2.3,删除/home/admin/docker/的所有内容

(因为上面进行复制到执行路径 /usr/bin/ 下的操作)

$ rm -rf /home/admin/docker/*
2.4,创建虚拟网卡

(搭建桥接模式)

$ docker network create redis-net
2.5,创建redis配置文件模板
$ mkdir -p /home/admin/docker/redis-cluster
$ cd /home/admin/docker/redis-cluster
$ cat >>redis-cluster.tmpl<<\EOF
port ${PORT}
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
cluster-announce-ip #写入本机ip
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
EOF

**各节点解释如下所示:**

port:节点端口,即对外提供通信的端口
cluster-enabled:是否启用集群
cluster-config-file:集群配置文件
cluster-node-timeout:连接超时时间
cluster-announce-ip:集群各节点IP地址
cluster-announce-port:集群节点映射端口
cluster-announce-bus-port:集群总线端口
appendonly:持久化模式
cluster-announce-ip:这个IP需要特别注意一下,如果要对外提供访问功能,需要填写宿主机的IP,如果填写docker分配的IP(172.x.x.x),可能会导致部分集群节点在跳转时失败。
2.6,创建节点配置文件

在redis-cluser中执行以下命令

for port in $(seq 6379 6384); \
do \
  mkdir -p ./${port}/conf  \
  && PORT=${port} envsubst < ./redis-cluster.tmpl > ./${port}/conf/redis.conf \
  && mkdir -p ./${port}/data; \
done

给创建的节点添加权限

$ chmod -R 777 63*
2.7,创建redis节点容器
for port in $(seq 6379 6384); \
do \
   docker run -it -d -p ${port}:${port} -p 1${port}:1${port} \
  --privileged=true -v /home/admin/docker/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf \
  --privileged=true -v /home/admin/docker/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
2.8,验证是否创建成功
$ docker ps -a
2.9,创建redis-cluster集群

进入Docker容器命令行

$ docker exec -it redis-6379 bash
root@635dd07f5d6d:/data# 

进入容器目录

cd /usr/local/bin

redis-cli命令创建redis cluster集群(注意:此时redis集群默认平均分片后,redis节点都是Master,可以通过添加集群节点设置主从关系)

/usr/local/bin/redis-cli --cluster create ip:6379 ip:6380 ip:6381 ip:6382 ip:6383 ip:6384 --cluster-replicas 1

连接集群的某一个节点

$ redis-cli -c -h 192.168.161.249 -p 6379
ip:6379> set aa aa
OK
ip:6379> get aa
"aa"
ip:6379> 

查看集群信息

//集群状态
$ redis-cli -c -h 10.10.18.118 -p 6379 cluster info
//集群节点信息
$ redis-cli -c -h 10.10.18.118 -p 6379 cluster nodes
//添加节点
$ redis-cli --cluster add-node 新节点IP:端口 集群某节点IP:端口

//指定主从关系
$ redis-cli -h 从节点IP -p 从节点端口 cluster replicate  主节点ID
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值