Linux上面搭建redis集群服务

最近项目组要搭建redis集群,顺手就在服务器上搭建了,中途也遇到了一些问题,不过最后也都解决了,本文作为笔记记录。

本文用单台虚拟机模拟6个节点,创建出3 master、3 salve 环境。说明:https://redis.io/上的最新版本是3.2.8,考虑到新版本可能有坑,所以下载3.2.7版本。

1、下载解压

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

2、安装

cd redis-3.2.7
make
make install

3、将启动集群的文件redis-trib.rb 拷贝到本地 /usr/local/bin 目录下

cd /redis-3.2.7/src
cp redis-trib.rb /usr/local/bin/

4、创建服务节点,在服务器上(这里以本地127.0.0.1为例),创建集群的文件夹redis_cluster

mkdir redis_cluster 

将解压的redis-3.2.7拷贝打牌rediscuter中重新命名为redis_7000

cp -R /redis-3.2.7  /redis_cluster
mv redis-3.2.7  redis_7000

修改/redis_cluster/redis_7000中的redis.conf文件

port  7000                                        //端口7000,7002,7003 
bind 本机ip 127.0.0.1                                       //默认ip为127.0.0.1 需要改为其他节点机器可访问的ip 否则创建集群时无法访问对应的端口,无法创建集群
daemonize    yes                          //redis后台运行
pidfile  /var/run/redis_7000.pid          //pidfile文件对应7000,7001,7002
cluster-enabled  yes                           //开启集群 把注释#去掉
cluster-config-file  nodes_7000.conf   //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout  15000                //请求超时 默认15秒,可自行设置
appendonly  yes                           //aof日志开启 有需要就开启,它会每次写操作都记录一条日志 

然后将redis_7000复制5分放入/redis_cluster中命名分别为redis_7001、redis_7002、redis_7003、redis_7004、redis_7005;
然后分别修改其目录下的redis.conf文件中的端口和ip。

5、启动各节点,进入redis_7000目录下,启动如下

redis-server redis.conf
然后依次启动redis_7001、redis_7002、redis_7003、redis_7004、redis_7005。

6、查看情况

ps -ef | grep redis

root     24559 24517  0 16:37 pts/0    00:00:00 grep redis
root     31987     1  0 11:40 ?        00:01:44 redis-server 127.0.0.1:7000 [cluster]
root     32002     1  0 11:40 ?        00:02:40 redis-server 127.0.0.1:7001 [cluster]
root     32006     1  0 11:40 ?        00:01:11 redis-server 127.0.0.1:7002 [cluster]
root     32015     1  0 11:40 ?        00:00:28 redis-server 127.0.0.1:7003 [cluster]
root     32027     1  0 11:40 ?        00:00:28 redis-server 127.0.0.1:7005 [cluster]
root     32136     1  0 11:43 ?        00:00:28 redis-server 127.0.0.1:7004 [cluster]
netstat -tnlp | grep redis

tcp        0      0 127.0.0.1:17000         0.0.0.0:*                   LISTEN      31987/redis-server
tcp        0      0 127.0.0.1:17001         0.0.0.0:*                   LISTEN      32002/redis-server
tcp        0      0 127.0.0.1:17002         0.0.0.0:*                   LISTEN      32006/redis-server
tcp        0      0 127.0.0.1:17003         0.0.0.0:*                   LISTEN      32015/redis-server
tcp        0      0 127.0.0.1:17004         0.0.0.0:*                   LISTEN      32136/redis-server
tcp        0      0 127.0.0.1:17005         0.0.0.0:*                   LISTEN      32027/redis-server
tcp        0      0 127.0.0.1:7000          0.0.0.0:*                   LISTEN      31987/redis-server
tcp        0      0 127.0.0.1:7001          0.0.0.0:*                   LISTEN      32002/redis-server
tcp        0      0 127.0.0.1:7002          0.0.0.0:*                   LISTEN      32006/redis-server
tcp        0      0 127.0.0.1:7003          0.0.0.0:*                   LISTEN      32015/redis-server
tcp        0      0 127.0.0.1:7004          0.0.0.0:*                   LISTEN      32136/redis-server
tcp        0      0 127.0.0.1:7005          0.0.0.0:*                   LISTEN      32027/redis-server

7、创建集群

Redis 官方提供了 redis-trib.rb 这个工具,就在解压目录的 src 目录中,第三步中已将它复制到 /usr/local/bin 目录中,可以直接在命令行中使用了。使用下面这个命令即可完成安装。

redis-trib.rb  create  --replicas  1  127.0.0.1:7000 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

中途如果错误内容:/usr/bin/env: ruby: No such file or directory,则需要安装 ruby。这里推荐使用yum install ruby安装,安装命令如下:

yum install ruby

yum -y install ruby ruby-devel rubygems rpm-build

gem install redis

8、验证

通过命令进行访问redis集群: redis-cli -h 127.0.0.1 -c -p 7002 ,加参数 -C 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。

[root@vm bin]# redis-cli -h 127.0.0.1 -c -p 7002
127.0.0.1:7002> set happy day
-> Redirected to slot [2936] located at 127.0.0.1:7000
OK
127.0.0.1:7000>
[root@vm bin]# redis-cli -h 127.0.0.1 -c -p 7001
127.0.0.1:7001> get happy
-> Redirected to slot [2936] located at 127.0.0.1:7000
"day"
127.0.0.1:7000>

你可能感兴趣的:(redis)