Redis集群搭建和使用

来源:互联网 发布:企业海关数据查询 编辑:程序博客网 时间:2024/06/04 19:13

注:本文按照原文作者的方法进行操作,安装目录,redis和ruby版本都一致,测试构建集群成功。并对原文进行简单修改,增加些许内容
安装环境与版本

*用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master、3 salve 环境。
* redis 采用 redis-3.2.4 版本。
*两台虚拟机都是CentOS7,ip分别为10.10.255.118和10.10.255.136

安装过程

1.下载并解压

cd /root/softwarewget http://download.redis.io/releases/redis-3.2.4.tar.gztar -zxvf redis-3.2.4.tar.gz 

2.编译安装

cd redis-3.2.4make && make install

3.将 redis-trib.rb 复制到 /usr/local/bin 目录下

cd srccp redis-trib.rb /usr/local/bin/ 

4.创建 Redis 节点

首先在 10.10.255.118 机器上 /root/software/redis-3.2.4 目录下创建 redis_cluster 目录;

mkdir redis_cluster 

在 redis_cluster 目录下,创建名为7000、7001、7002的目录
直接分别进入7000,7001,7002,通过vim编辑器新建redis.conf,填入内容。示例如下:

cd 7000vi redis.conf

填入内容:

port 7000bind 10.10.255.118daemonize yespidfile /var/run/redis_7000.pidcluster-enabled yescluster-config-file nodes_7000.confcluster-node-timeout 15000appendonly yes

最后 :wq保存
其他文件夹同样方法修改,要记住里面的port等内容要同步修改。

填入内容每一行的含义如下:

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

接着在另外一台机器上(10.10.255.136)操作重复以上步骤,只是把目录改为7003、7004、7005,对应的配置文件也按照这个规则修改(ip记得修改)即可

5.启动各个节点

第一台机器上执行cd /usr/local/bin./redis-server /root/software/redis-3.2.4/redis_cluster/7000/redis.conf./redis-server /root/software/redis-3.2.4/redis_cluster/7001/redis.conf./redis-server /root/software/redis-3.2.4/redis_cluster/7002/redis.conf另外一台机器上执行cd /usr/local/bin./redis-server /root/software/redis-3.2.4/redis_cluster/7003/redis.conf./redis-server /root/software/redis-3.2.4/redis_cluster/7004/redis.conf./redis-server /root/software/redis-3.2.4/redis_cluster/7005/redis.conf

6.检查 redis 启动情况
其中一台机器:

ps -ef | grep redisroot      3025     1  0 622 ?       00:00:58 ./redis-server 10.10.255.118:7000 [cluster]root      3031     1  0 622 ?       00:00:57 ./redis-server 10.10.255.118:7002 [cluster]root      3061     1  0 622 ?       00:00:56 ./redis-server 10.10.255.118:7001 [cluster]root     16101 15005  0 10:23 pts/0    00:00:00 grep --color=auto redisnetstat -tnlp | grep redistcp        0      0 10.10.255.118:7001      0.0.0.0:*               LISTEN      3061/./redis-server tcp        0      0 10.10.255.118:7002      0.0.0.0:*               LISTEN      3031/./redis-server tcp        0      0 10.10.255.118:17000     0.0.0.0:*               LISTEN      3025/./redis-server tcp        0      0 10.10.255.118:17001     0.0.0.0:*               LISTEN      3061/./redis-server tcp        0      0 10.10.255.118:17002     0.0.0.0:*               LISTEN      3031/./redis-server tcp        0      0 10.10.255.118:7000      0.0.0.0:*               LISTEN      3025/./redis-server 

另一台机器:

ps -ef | grep redisroot      3171     1  0 622 ?       00:00:58 ./redis-server 10.10.255.136:7003 [cluster]root      3175     1  0 622 ?       00:00:57 ./redis-server 10.10.255.136:7004 [cluster]root      3179     1  0 622 ?       00:01:00 ./redis-server 10.10.255.136:7005 [cluster]root     16074 16018  0 10:28 pts/0    00:00:00 grep --color=auto redisnetstat -tnlp | grep redis tcp        0      0 10.10.255.136:7003      0.0.0.0:*               LISTEN      3171/./redis-server tcp        0      0 10.10.255.136:7004      0.0.0.0:*               LISTEN      3175/./redis-server tcp        0      0 10.10.255.136:7005      0.0.0.0:*               LISTEN      3179/./redis-server tcp        0      0 10.10.255.136:17003     0.0.0.0:*               LISTEN      3171/./redis-server tcp        0      0 10.10.255.136:17004     0.0.0.0:*               LISTEN      3175/./redis-server tcp        0      0 10.10.255.136:17005     0.0.0.0:*               LISTEN      3179/./redis-server

7.创建集群
关闭两台机器的防火墙
然后安装ruby

yum -y install ruby ruby-devel rubygems rpm-buildgem install redis 

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

./redis-trib.rb  create  --replicas  1  10.10.255.118:7000 10.10.255.118:7001  10.10.255.118:7002 10.10.255.136:7003  10.10.255.136:7004  10.10.255.136:7005

然后会出现一长串,下面有一句:
Can I set the above configureation?(type 'yes' to accept):

输入 yes 即可

8.集群验证
在第一台机器上连接集群的7002端口的节点,在另外一台连接7005节点,连接方式为:

进入bin目录

./redis-cli -h 10.10.255.118 -c -p 7002

加参数 -C 可连接到集群,因为上面 redis.conf 将 bind 改为了ip地址,所以 -h 参数不可以省略。

在7005节点上执行命令:

10.10.255.136:7005> set dog wangwangwang

在另一台机器的7000节点上执行命令:

10.10.255.118:7000> get dog-> Redirected to slot [254] located at 10.10.255.136:7003"wangwangwang"10.10.255.136:7003> 

以上说明集群正常

9.redis集群设置密码
*如果是使用redis-trib.rb工具构建集群,集群构建完成前不要配置密码,集群构建完毕再通过config set + config rewrite命令逐个机器设置密码
*如果对集群设置密码,那么requirepass和masterauth都需要设置,否则发生主从切换时,就会遇到授权问题,可以模拟并观察日志
*各个节点的密码都必须一致,否则Redirected就会失败

    config set masterauth wang     config set requirepass wang      config rewrite  

在config rewrite这一步的时候会报错:(error) NOAUTH Authentication required.这里输入刚才设置的密码就行了,命令为:auth wang,修改成功后,redis.conf被修改为
这里写图片描述
以后进行操作将需要输入密码。

10.redis可视化工具
下载地址:redis可视化工具

文章转载地址:Redis集群搭建与简单使用