redis 5.0.x 构建 redis-cluster

操作系统:centos6.5 x86_64

Ubuntu 见 https://blog.csdn.net/weixin_37882382/article/details/83538367

redis:5.0.0

在一台虚拟机上验证集群配置,通过不同的端口,启动不同的redis实例

1、使用源码安装redis

cd /opt

wget http://download.redis.io/releases/redis-5.0.0.tar.gz

tar -xfv redis-5.0.0.tar.gz

cd redis-5.0.0

make

#指定安装的位置

扫描二维码关注公众号,回复: 5112510 查看本文章

make PREFIX=/usr/local/redis install

2、集群需要至少6个节点,拷贝出6份配置文件

#建立配置文件路径

mkdir -p /etc/redis/cluster/conf.d

#将通用配置放到配置文件目录

cd /etc/redis/cluster

cp /opt/redis-5.0.0/redis.conf  common.conf

3、建立个性化配置

cd /etc/redis/cluster/conf.d

vi 7000.conf

#配置文件要差异化,跟端口有关的都要分开配置,以7000端口为例,将以下内容写入7000.conf

#包含通用配置

include /etc/redis/cluster/common.conf

#指定端口
port 7000

#指定集群配置文件名称,该文件记录集群运行时信息

#注意:可以用绝对路径,但必须保证路径已经存在,否则启动失败;如果只有文件名称的话,文件生成在工作路径下
cluster-config-file /etc/redis/cluster/run/nodes-7000.conf

#指定进程pid文件
pidfile /var/run/redis_7000.pid

#指定日志文件
logfile /var/log/redis_7000.log

#指定数据库文件存放路径

dir /var/lib/redis/7000

#appendonly日志文件

appendfilename appendonly-7000.aof

4、按同样的方式建立7001.conf~7005.conf

sed 's/7000/7001/g' 7000.conf > 7001.conf

sed 's/7000/7002/g' 7000.conf > 7002.conf

sed 's/7000/7003/g' 7000.conf > 7003.conf

sed 's/7000/7004/g' 7000.conf > 7004.conf

sed 's/7000/7005/g' 7000.conf > 7005.conf

5、修改common.conf

1)关于个性化的配置前加#屏蔽掉

2)cluster-enabled改为 yes

3)appendonly改为yes

4)daemonize 改为 yes,使得服务后台运行

6、建立数据库文件路径

mkdir -p /var/lib/redis/7000

mkdir -p /var/lib/redis/7001

mkdir -p/var/lib/redis/7002

mkdir -p/var/lib/redis/7003

mkdir -p /var/lib/redis/7004

mkdir -p /var/lib/redis/7005

7、建立集群配置文件路径,cluster-config-file的路径

mkdir -p /etc/redis/cluster/run

8、编写启动脚本/etc/init.d/redis_cluster

可以参考4.0.2  https://blog.csdn.net/gw85047034/article/details/78689885

9、启动集群实例,/etc/init.d/redis_cluster  start

10、配置集群

cd /opt/redis-5.0.0/utils/create-cluster

执行./create-cluster create来创建集群,但执行之前,需要修改一下create-cluster脚本

将PORT=30000改为PORT=7000

将以下标红位置顺序调换一下,那样才是正确的端口列表7000~7005

if [ "$1" == "create" ]
then
    HOSTS=""
    while [ $((PORT < ENDPORT)) != "0" ]; do

        PORT=$((PORT+1))
        HOSTS="$HOSTS 127.0.0.1:$PORT"
    done
    ../../src/redis-cli --cluster create $HOSTS --cluster-replicas $REPLICAS
    exit 0
fi

然后执行./create-cluster create


[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

如果要重新配置集群,先停止集群,然后将cluster-config-file配置的所有文件删除,再重新启动集群,就可以重新配置集群

如果提示[ERR] Node 192.168.2.17:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0. 就在将dir配置的数据库目录下,各个端口子目录清空,注意,端口子目录不能删除,否则无法启动

注意:此时创建的集群里面,slots的地址都是127.0.0.1,要创建实际地址的集群,需要以下配置方式

1)修改common.conf,将bind的实际地址放前面,127.0.0.1放后面

bind 192.168.2.17 127.0.0.1

2)修改create-cluster脚本HOSTS="$HOSTS 127.0.0.1:$PORT" 中的127.0.0.1为实际地址

14、设置集群的密码

先将集群实例停止,/etc/init.d/redis_cluster stop

修改common.conf,将requirepass打开,并设置密码,同时将masterauth打开,密码设置与requirepass一样

15、重新启动集群,至此,集群配置完毕

16、验证集群

./redis-cli -p 7000

127.0.0.1:7000> cluster nodes

此时,7000、7001、7002是master,其他三个是slave

在另外一个会话窗口停掉7002

/etc/init.d/redis_cluster stop 7002

再次查看cluster状态

/etc/init.d/redis_cluster restart

此时,7002变成failed?,7005变为master

17、验证数据存取

./redis-cli -p 7000

127.0.0.1:7000> set key5 7005
(error) MOVED 9057 127.0.0.1:7001

登录的时候,必须加上-c参数,才会自动重定向到另外一个实例

./redis-cli -c -p 7000

再次执行,又出现(error) NOAUTH Authentication required.

登录的时候,必须加上密码参数-a,这样就不用要求输入密码了,或者使用auth password登录

猜你喜欢

转载自blog.csdn.net/qq_16069927/article/details/85991437