macOS high sierra 下搭建redis集群

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,7003
port 7001

#集群的配置配置文件首次启动自动生成 7000,7001,7002
cluster-config-file nodes_7001.conf

#aof日志文件名
appendfilename "appendonly.7001.aof"

#pidfile文件对应7000,7001,7002,7003
pidfile /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,否则为yes
protected-mode no

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

cd /usr/local/redis-cluster/redis01 &&
redis-server redis.conf
cd /usr/local/redis-cluster/redis02 &&
redis-server redis.conf
cd /usr/local/redis-cluster/redis03 &&
redis-server redis.conf
cd /usr/local/redis-cluster/redis04 &&
redis-server redis.conf
cd /usr/local/redis-cluster/redis05 &&
redis-server redis.conf
cd /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:7001

127.0.0.1:7002

127.0.0.1:7003

Adding replica 127.0.0.1:7004 to 127.0.0.1:7001

Adding replica 127.0.0.1:7005 to 127.0.0.1:7002

Adding replica 127.0.0.1:7006 to 127.0.0.1:7003

M: 692301fa80af9870bb258c34b553590fbced72ad 127.0.0.1:7001

   slots:0-5460 (5461 slots) master

M: 164295b1736fb5fc244abf0a2e57774d938a7262 127.0.0.1:7002

   slots:5461-10922 (5462 slots) master

M: 0ee3bde15b2caf32df19ef85d874c228be8d9342 127.0.0.1:7003

   slots:10923-16383 (5461 slots) master

S: 657967366913fff237e091320761ea7ef9544893 127.0.0.1:7004

   replicates 692301fa80af9870bb258c34b553590fbced72ad

S: 13c976fada6a8537826b2585a5dabad6fd2a4ece 127.0.0.1:7005

   replicates 164295b1736fb5fc244abf0a2e57774d938a7262

S: 30098db4933f13b02ef2a30a5070617f0ae58fd4 127.0.0.1:7006

   replicates 0ee3bde15b2caf32df19ef85d874c228be8d9342

Can 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 cluster

Waiting 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 164295b1736fb5fc244abf0a2e57774d938a7262

M: 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 692301fa80af9870bb258c34b553590fbced72ad

S: 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 yourpasswd
192.168.3.3:7001> 

输入测试 set a 1
OK
有时会出现
(error) MOVED 15495 127.0.0.1:7003
这并不是说我们配置有误,而是redis算法中,将我们的键值对计算之后,存放到了7003节点的对应slots中

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

猜你喜欢

转载自blog.csdn.net/Magic_Engine/article/details/78880605