本文为博主搭建redis集群的笔记,这里用到的服务器版本是CentOs7.5,废话不多说,具体操作码上。
在搭建集群之前,我们要先开放对应的端口,阿里云要添加防火墙规则。
首先登录阿里云服务器管理平台,进入网络安全中的安全组,执行以下操作添加端口
然后登录linux服务器后,添加端口
vi /etc/sysconfig/iptables
安装docker
docker pull redis
docker pull ruby
在/usr/local/src目录下创建redis-cluster文件夹,并创建配置文件redis-cluster.conf
cd /usr/local/src && mkdir redis-cluster && cd ./redis-cluster && touch redis-cluster.conf
在redis-cluster.conf 添加以下内容
port ${PORT}
cluster-enabled yes
protected-mode no
cluster-config-file nodes.conf
cluster-node-timeout 5000
#对外ip
cluster-announce-ip [ip]
cluster-announce-port ${PORT}
cluster-announce-bus-port 1${PORT}
appendonly yes
ps:注意修改 [ip],[ip]为你服务器ip。
docker network create redis-net
进入/usr/local/src/redis-cluster
cd /usr/local/src/redis-cluster
生成conf和data目录,并生成配置信息
for port in `seq 6000 6005`; do
mkdir -p ./${port}/conf && PORT=${port} envsubst < ./redis-cluster.conf > ./${port}/conf/redis.conf && mkdir -p ./${port}/data;
done
ps:共生成6个文件夹,从6000到6005,每个文件夹下包含data和conf文件夹,同时conf里面有redis.conf配置文件。
for port in `seq 6000 6005`; do
docker run -d -ti -p ${port}:${port} -p 1${port}:1${port} -v /usr/local/src/redis-cluster/${port}/conf/redis.conf:/usr/local/etc/redis/redis.conf -v /usr/local/src/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
任意进入一个创建的Redis容器(CONTAINER ID为容器id)
docker exec -it CONTAINER ID /bin/bash
执行
redis-cli --cluster create ip:6000 ip:6001 ip:6002 ip:6003 ip:6004 ip:6005 --cluster-replicas 1
ps:这里的ip为你服务器的ip,记得修改。
如果出现waiting for the Cluster to join…,那么应该是你端口没有开放完全。
首先进入任意一个Redis容器内(CONTAINER ID为容器id)
docker exec -it CONTAINER ID /bin/bash
然后进入 redis-cli(ip为你服务器ip)
redis-cli -h ip -p 6000
查看节点消息
cluster nodes
普通模式连接:由于 test 根据哈希槽计算,是分布在 6001服务上。所以这里会提示转到 6001。
集群模式连接:以下例子显示操作正常(首先要退出当前redis-cli,然后再执行以下代码,ip为你服务器ip)。
redis-cli -c -h ip -p 6000 set test 1
redis-cli -c -h ip -p 6000 get test