macOS high sierra 下搭建redis集群

来源:互联网 发布:js笔试题及答案 编辑:程序博客网 时间:2024/05/16 17:13

1.下载redis的安装包.

2.在/usr/local/目录下创建redis-cluster 文件夹,并将redis解压到此目录中

sudo tar -zxvf redis-4.0.6.tar.gz -C /usr/local/redis-cluster

3.进入redis解压目录

cd /usr/local/redis-cluster/redis-4.0.6

4.进行安装

sudo make && make install此处建议先进行test测试,如果有依赖问题好及时解决sudo make test

5.安装完成后,将redis-4.0.6文件夹复制6份,分别命名为redis01,redis02,… redis06

此时文件夹目录如下:    redis-cluster        - redis-4.0.6        - redis01        - redis02        - redis03        - redis04        - redis05        - redis06

6.修改redis配置文件redis.conf(如:到redis01目录下,修改redis01的redis.conf)

!!因为配置文件过于庞大,各个配置项相隔太远,不好管理,所以我将配置项复制了一份放在文件开始的位置,后边出现的相同配置项将其注释掉即可。#统一配置,将对应的配置项注解掉,提前到此处```#All the config is move to here#redis后台运行daemonize yes#端口7001,7002,7003port 7001#集群的配置配置文件首次启动自动生成 7000,7001,7002cluster-config-file nodes_7001.conf#aof日志文件名appendfilename "appendonly.7001.aof"#pidfile文件对应7000,7001,7002,7003pidfile /var/run/redis_7001.pid#开启集群 把注释#去掉cluster-enabled yes#请求超时 设置5秒够了cluster-node-timeout 5000#aof日志开启有需要就开启,它会每次写操作都记录一条日志appendonly yes#绑定ip,如果想要远程登录,就将其注释掉#bind 127.0.0.1#登陆密码 完成集群前不要设置,否则无法进行主从节点的链接#requirepass passwd#masterauth passwd#是否开启保护模式,如果想要远程操作(非本机操作)就将其设为no,否则为yesprotected-mode no

7.6个文件夹全部修改完成后,执行命令启动redis-server

cd /usr/local/redis-cluster/redis01 &&redis-server redis.confcd /usr/local/redis-cluster/redis02 &&redis-server redis.confcd /usr/local/redis-cluster/redis03 &&redis-server redis.confcd /usr/local/redis-cluster/redis04 &&redis-server redis.confcd /usr/local/redis-cluster/redis05 &&redis-server redis.confcd /usr/local/redis-cluster/redis06 &&redis-server redis.conf(最后一条要有回车)若提示没有权限,就给对应的文件添加权限,此处建议一劳永逸的方法sudo chown -R (your user name) /usr/local/redis-cluster此命令将redis-cluster下所有文件的所有者更改为当前用户再次执行启动命令

8.检查是否启动成功

执行ps -ef|grep redis查看是否启动

  501 61887     1   0  4:27下午 ??         0:00.02 redis-server 127.0.0.1:7001 [cluster]  501 61894     1   0  4:27下午 ??         0:00.02 redis-server 127.0.0.1:7002 [cluster]  501 61901     1   0  4:27下午 ??         0:00.02 redis-server 127.0.0.1:7003 [cluster]  501 61908     1   0  4:27下午 ??         0:00.02 redis-server 127.0.0.1:7004 [cluster]  501 61915     1   0  4:27下午 ??         0:00.02 redis-server 127.0.0.1:7005 [cluster]  501 61923     1   0  4:27下午 ??         0:00.02 redis-server 127.0.0.1:7006 [cluster]  501 61926 56774   0  4:27下午 ttys000    0:00.00 grep redis

如果出现以上结果,表示启动成功

9.进行主从节点的链接

进入redis的安装目录4.0.6

cd /usr/local/redis-4.0.6/src &&./redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006若没有问题,在确认界面输入yes;注意:--replicas  1 代表每个master有一个slave,还有就是前面三个是主服务,后面三个从服务地址,集群配置成功。PS:此处用到ruby环境,如果未安装ruby的,请自行百度如何安装配置ruby环境,ruby版本要求2.2.2及以上

若出现以下提示,表示操作成功

>>> Creating cluster>>> Performing hash slots allocation on 6 nodes...Using 3 masters:127.0.0.1:7001127.0.0.1:7002127.0.0.1:7003Adding replica 127.0.0.1:7004 to 127.0.0.1:7001Adding replica 127.0.0.1:7005 to 127.0.0.1:7002Adding replica 127.0.0.1:7006 to 127.0.0.1:7003M: 692301fa80af9870bb258c34b553590fbced72ad 127.0.0.1:7001   slots:0-5460 (5461 slots) masterM: 164295b1736fb5fc244abf0a2e57774d938a7262 127.0.0.1:7002   slots:5461-10922 (5462 slots) masterM: 0ee3bde15b2caf32df19ef85d874c228be8d9342 127.0.0.1:7003   slots:10923-16383 (5461 slots) masterS: 657967366913fff237e091320761ea7ef9544893 127.0.0.1:7004   replicates 692301fa80af9870bb258c34b553590fbced72adS: 13c976fada6a8537826b2585a5dabad6fd2a4ece 127.0.0.1:7005   replicates 164295b1736fb5fc244abf0a2e57774d938a7262S: 30098db4933f13b02ef2a30a5070617f0ae58fd4 127.0.0.1:7006   replicates 0ee3bde15b2caf32df19ef85d874c228be8d9342Can I set the above configuration? (type 'yes' to accept): yes>>> Nodes configuration updated>>> Assign a different config epoch to each node>>> Sending CLUSTER MEET messages to join the clusterWaiting for the cluster to join.....>>> Performing Cluster Check (using node 127.0.0.1:7001)M: 692301fa80af9870bb258c34b553590fbced72ad 127.0.0.1:7001   slots:0-5460 (5461 slots) master   1 additional replica(s)S: 13c976fada6a8537826b2585a5dabad6fd2a4ece 127.0.0.1:7005   slots: (0 slots) slave   replicates 164295b1736fb5fc244abf0a2e57774d938a7262M: 0ee3bde15b2caf32df19ef85d874c228be8d9342 127.0.0.1:7003   slots:10923-16383 (5461 slots) master   1 additional replica(s)M: 164295b1736fb5fc244abf0a2e57774d938a7262 127.0.0.1:7002   slots:5461-10922 (5462 slots) master   1 additional replica(s)S: 657967366913fff237e091320761ea7ef9544893 127.0.0.1:7004   slots: (0 slots) slave   replicates 692301fa80af9870bb258c34b553590fbced72adS: 30098db4933f13b02ef2a30a5070617f0ae58fd4 127.0.0.1:7006   slots: (0 slots) slave   replicates 0ee3bde15b2caf32df19ef85d874c228be8d9342[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.

PS:网上有教程说,进行完这一步,接下来要进行slots的分配,这个应该在3.x.x的版本需要,本次搭建并未进行slots的分配,系统自动完成了slots的分配工作

10.远程访问控制

现在我们已经搭建完redis的集群,该集群有三个主节点,三个从节点

本机登录redis进行测试redis-cli -h localhost -p 7001回车后会进入7001节点192.168.3.3:7001> 

此时表示我们的集群服务已经可用,下面进行远程登录的一些配置

针对目前很多的信息安全事件,如果我们的redis要在远程进行控制,加一些访问控制无疑是最好的    1.首先,停掉所有redis服务,先使用ps -ef | grep redis 列出所有的redis进程,并获取到pid    2.使用kill -9 pid pid ... pid 的方式,杀掉这6个redis-server进程    3.修改我们从redis01到redis06中的redis.conf文件            #登陆密码 完成集群前不要设置,否则无法进行主从节点的链接            #requirepass passwd            #masterauth passwd    将requirepass和masterauth注释打开    使其如下:            requirepass your-passwd            masterauth your-passwd    4.重新启动redis-server完成配置

远程登录测试

笔者使用的是ubuntu16.04LTS输入redis-cli -h 192.168.3.3 -p 7001 -a yourpasswd提示找不到redis-cli,这是因为笔者系统中并未安装redis及相关组件,这里笔者只需要使用远程登录组件,就不需要安装redis直接运行 sudo apt-get install redis-tools等待安装完成即可完成后,输入命令 redis-cli -a 192.168.3.3 -p 7001 -a yourpasswd登录成功后,进入redis控制台:$ redis-cli -h 192.168.3.3 -p 7001 -a yourpasswd192.168.3.3:7001> 输入测试 set a 1OK有时会出现(error) MOVED 15495 127.0.0.1:7003这并不是说我们配置有误,而是redis算法中,将我们的键值对计算之后,存放到了7003节点的对应slots中

至此,mac下的redis集群搭建完毕