Notice: 函数 WP_Scripts::localize 的调用方法不正确$l10n 参数必须是一个数组。若要将任意数据传递给脚本,请改用 wp_add_inline_script() 函数。 请查阅调试 WordPress来获取更多信息。 (这个消息是在 5.7.0 版本添加的。) in /data/www/appblog/wp-includes/functions.php on line 6131

Redis 6 服务器集群搭建

Redis集群搭建

(1)在redis安装目录,创建6个文件夹:

mkdir 9000 9001  9002  9003  9004  9005

(2)将redis安装目录redis.conf文件分别拷贝到6个文件夹中,并命名为:redis-cluster.conf

cp redis.conf 9000/redis-cluster.conf
cp redis.conf 9001/redis-cluster.conf
cp redis.conf 9002/redis-cluster.conf
cp redis.conf 9003/redis-cluster.conf
cp redis.conf 9004/redis-cluster.conf
cp redis.conf 9005/redis-cluster.conf

(3)将 9000-9005 的6个文件夹中redis-cluster.conf文件按照以下的方式进行配置

端口号改成所在文件夹的名称,比如以9000为例:

port 9000

(4)将206的守护进程开启:

daemonize yes

(5)关闭保护模式(如果开启,需要设置密码,比较繁琐。如有需要可以按照自己的需求配置)

protected-mode no

(6)开启集群

cluster-enabled yes

(7)配置cluster-config-file,按照如下格式进行配置:nodes-当前节点的端口号.conf

cluster-config-file nodes-9000.conf

(8)创建启动脚本:start-cluster.sh

#以集群方式启动9000到9005的Redis服务
for port in {9000..9005}
do
  #关闭已经启动的服务,删除临时文件
  redis-cli -c -p $port -h 192.168.52.88 shutdown
  rm -f $port/dump*
  rm -f $port/nodes*
done;

#start redis
for port in {9000..9005}
do redis-server $port/redis-cluster.conf
done;

#create cluster
echo yes|src/redis-cli --cluster create 192.168.52.88:9000 192.168.52.88:9001 192.168.52.88:9002 192.168.52.88:9003 192.168.52.88:9004 192.168.52.88:9005  --cluster-replicas 1

需要将其中的IP修改为自己服务器对应的IP

需要注意的是,老版本的Redis创建服务节点需要使用redis-trib.rb创建,但是新版本的redis则直接用redis-cli即可

其它参数解释:

  • –cluster-replicas 1:表示希望为集群中的每个主节点创建一个从节点(一主一从)
    -cluster-replicas 2:表示希望为集群中的每个主节点创建两个从节点(一主二从)

也就是说,当前的脚本,将启动3主3从的节点

(9)创建停止脚本:stop-cluster.sh

for port in {9000..9005}
do
redis-cli -c -p $port shutdown
done;

Redis集群验证

执行sh start-cluster.sh

Redis6启动集群

可以看到,3主3从的集群配置成功:

  • M:代表主节点,并且自动分配了槽道号
  • S:代表从节点,没有槽道号

Redis集群测试

登录其中一个节点:设置yezhou键的值为ok:
通过对yezhou键的hash取模计算,得到其槽道号为6716,归属端口为9003的节点管理,并自动切换到了端口为9003的节点:

# redis-cli -c -p 9000
127.0.0.1:9000> set yezhou ok
-> Redirected to slot [6716] located at 192.168.52.88:9003
OK
192.168.52.88:9003>

获取键值:

192.168.52.88:9003> get yezhou
"ok"

OK,Redis集群到此搭建成功。

常见错误

[ERR] Node 192.168.52.88:9000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.

Redis6启动集群节点非空问题

如果遇到这样的错误,解决方法:

(1)删除dump.rdb文件
(2)删除自动生成的在redis.conf里面cluster-config-file配置的文件:

Redis6删除cluster-config-file配置生成文件

上一篇 Redis 6 集群安装
下一篇 MySQL 与 Redis 缓存的同步方案