自公司中间件逐渐容器化之后,太过依赖K8S,以至于快忘了怎么手动搭建一个集群,本文主要记录一下手动搭建一个3主3从集群的过程(3个master,每个master一个副本),redis版本为目前最新的redis7.0.0,顺便测试下redis7的新特性:
Cluster: Support for hostnames, instead of IP addresses only
准备工作
准备三台虚拟机,每台机器上启动两个实例,总共6个实例:
ip | hostname | 集群端口分配 |
---|
172.24.30.192 | XXGL-T-TJSYZ-REDIS-01 | 5100、5101 | 172.24.30.193 | XXGL-T-TJSYZ-REDIS-02 | 5102、5103 | 172.24.30.194 | XXGL-T-TJSYZ-REDIS-03 | 5104、5105 |
下载源码包:https://redis.io/download/
分别上传源码包至三台机器,创建redis-data目录,用于存放数据,test-cluster目录,用于存放集群配置文件
三台机器同时执行解压操作:
tar -zxvf redis-7.0.0.tar.gz
集群部署
编译
make && make install
进入到src目录,可以看到相关的工具,包括启动脚本都生成了(我记得之前的版本是默认编译到/usr/local/redis目录下了,新版本不一样了?)
修改配置文件
这里只列出其中一个节点的配置,其他的只需要复制,然后稍作修改即可。
示例:5100.conf
# 节点端口号
port 5100
# 设置为守护进程,配置 redis 后台运行
daemonize yes
# pid 文件,会自动创建的,直接指定目录
pidfile /var/run/redis_5100.pid
# 相关数据保存位置
dir /neworiental/redis7/redis-data/5100
# 关闭保护模式
protected-mode no
# 开启集群
cluster-enabled yes
# 集群配置文件,不需要我们维护,首次启动的时候会自动生成
cluster-config-file nodes_5100.conf
# 开启 AOF 日志
appendonly yes
#以下为redis7新的配置项,也是本次测试的核心,如果是低版本的,删除这两行即可
cluster-preferred-endpoint-type hostname
cluster-announce-hostname XXGL-T-TJSYZ-REDIS-01
启动
以上每台机器上的源码都编译完、6个配置文件都修改完之后,就可以依次启动redis了,每台机器上,可以使用相同的启动程序,不同的配置文件。
注意:所以文件夹需要提前创建好,不然启动会报错:
创建完成之后,启动成功!
/neworiental/redis7/redis-7.0.0/src/redis-server /neworiental/redis7/test-cluster/5100.conf
/neworiental/redis7/redis-7.0.0/src/redis-server /neworiental/redis7/test-cluster/5101.conf
其他两台机器也按上面的操作执行一遍:
/neworiental/redis7/redis-7.0.0/src/redis-server /neworiental/redis7/test-cluster/5102.conf
/neworiental/redis7/redis-7.0.0/src/redis-server /neworiental/redis7/test-cluster/5103.conf
/neworiental/redis7/redis-7.0.0/src/redis-server /neworiental/redis7/test-cluster/5104.conf
/neworiental/redis7/redis-7.0.0/src/redis-server /neworiental/redis7/test-cluster/5105.conf
创建集群
在三台机器上其中一台上执行:
/neworiental/redis7/redis-7.0.0/src/redis-cli --cluster create 172.24.30.192:5100 172.24.30.192:5101 172.24.30.193:5102 172.24.30.193:5103 172.24.30.194:5104 172.24.30.194:5105 --cluster-replicas 1
以上集群就算创建完毕了,可以通过redis-cli工具查看集群信息:
可以看到cluster nodes命令返回了配置的hostname
集群信息也正常,可正常使用
对于支持hostname暴露集群节点信息这个新特性,客户端需要提前配置host,集群内部的redirect等操作也是基于hostname,是否有更多的实用意义,还需要探究,后续会做补充。
|