注:本文按照原文作者的方法进行操作,安装目录,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/software
wget http://download.redis.io/releases/redis-3.2.4.tar.gz
tar -zxvf redis-3.2.4.tar.gz
2.编译安装
cd redis-3.2.4
make && make install
3.将 redis-trib.rb 复制到 /usr/local/bin 目录下
cd src
cp 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 7000
vi redis.conf
填入内容:
port 7000
bind 10.10.255.118
daemonize yes
pidfile /var/run/redis_7000.pid
cluster-enabled yes
cluster-config-file nodes_7000.conf
cluster-node-timeout 15000
appendonly 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,7002
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-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 redis
root 3025 1 0 6月22 ? 00:00:58 ./redis-server 10.10.255.118:7000 [cluster]
root 3031 1 0 6月22 ? 00:00:57 ./redis-server 10.10.255.118:7002 [cluster]
root 3061 1 0 6月22 ? 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 redis
netstat -tnlp | grep redis
tcp 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 redis
root 3171 1 0 6月22 ? 00:00:58 ./redis-server 10.10.255.136:7003 [cluster]
root 3175 1 0 6月22 ? 00:00:57 ./redis-server 10.10.255.136:7004 [cluster]
root 3179 1 0 6月22 ? 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 redis
netstat -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-build
gem 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集群搭建与简单使用