Centos6 搭建redis集群(优化版,亲测通过)

一、安装redis

0(重要)、centos6自带ruby为2.2.2以下,需要卸载掉

       安装开发工具

       1、命令:yum groupinstall "Development tools"

        清理已安装过的

       2、命令:yum erase ruby ruby-libs ruby-mode ruby-rdoc ruby-irb ruby-ri ruby-docs

 

1、安装gcc环境

yum install gcc-c++

 

2、下载源码包并解压

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

 

3、安装ruby2.4.1并编译(一定要安装大于2.2.2的ruby,要不然redis在make的时候会报错)

wget http://ftp.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz
tar -zxvf ruby-2.4.1.tar.gz
cd ruby-2.4.1
mkdir -p /usr/local/ruby
./configure --prefix=/usr/local/ruby
make && make install
ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby

 

4、安装

make
make install PREFIX=/usr/local/redis
cp redis.conf /usr/local/redis/bin/redis.conf
chmod /usr/local/redis/bin/redis.conf

 

5、启动redis(此为单机测试,只为搭建集群可跳过)

./redis-server redis.conf

 

6、验证(此为单机测试,只为搭建集群可跳过)

[root@host-172-16-80-177 bin]# ./redis-cli -p 6379
127.0.0.1:6379> get
(error) ERR wrong number of arguments for 'get' command
127.0.0.1:6379> set aa hzb
OK
127.0.0.1:6379> get aa
"hzb"

 

二、搭建redis集群(集群模式)

1、在/usr/local/下面创建redis-cluster目录

mkdir -p /usr/local/redis-cluster

2、复制/usr/local/redis/bin目录到redis-cluster里面并重命名为redis1

cd /usr/local
cp -r redis/bin redis-cluster/redis1
 

3、将redis1在同目录复制3份分别起名redis2,redis3,redis4,redis5,redis6(必须6个节点以上才能创建集群)

[root@host-172-16-80-177 redis-cluster]# pwd
/usr/local/redis-cluster
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis2
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis3
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis4
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis5
[root@host-172-16-80-177 redis-cluster]# cp -r redis1 redis6

分别修改为redis-7001.conf,redis-7002.conf 后面依次到redis-7006.conf(最好下载到本地后修改后再上传)

以redis-7001为例:

 

daemonize yes 
bind 192.168.65.130          #(外部可访问IP)
Port 7001
logfile "./redis-7001.log"
databases 1
protected-mode no
pidfile /var/run/redis_7001.pid
cluster-enabled yes

 

4、将redis-trib.rb复到制redis-cluster目录里面

[root@host-172-16-80-177 redis-cluster]# cp /root/redis-3.2.4/src/redis-trib.rb .
[root@host-172-16-80-177 redis-cluster]# ll
total 76
drwxr-xr-x 2 root root  4096 Oct 19 22:37 redis1
drwxr-xr-x 2 root root  4096 Oct 19 22:48 redis2
drwxr-xr-x 2 root root  4096 Oct 19 22:49 redis3
drwxr-xr-x 2 root root  4096 Oct 19 22:49 redis4
drwxr-xr-x 2 root root  4096 Oct 19 22:49 redis5
drwxr-xr-x 2 root root  4096 Oct 19 22:49 redis6
-rwxr-xr-x 1 root root 60852 Oct 19 22:52 redis-trib.rb

 

5、安装gem

 yum install rubygems -y

6、安装ruby的redis包

gem install redis

上面这一步可能会出现:

ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass

解决办法是:

  1. 进入ruby源码文件夹
  1. 安装ruby自身提供的zlib包
#cd ext/zlib
#ruby ./extconf.rb
#make
#make install
  1. 进入ruby源码文件夹
  1. 安装ruby自身提供的openssl包
#cd ext/openssl
#ruby ./extconf.rb
#make
#make install

如果执行make的时候报错:make: *** No rule to make target ,

错误原因:makefile里面的文件依赖关系有问题,导致头文件找不到。

解决办法:打开编译相关模块的makefile文件,找到.o文件的依赖关系,找到.h文件的路径,查看是否出错并改正。

原因分析:这种情况有时候是因为工程所在的目录改变,例如原来在C盘,现在移到了D盘,而makefile里面的.h文件路径没有改变

 

以上问题解决后再执行:

[root@host-172-16-80-177 include]# gem install redis
Fetching: redis-4.0.1.gem (100%)
Successfully installed redis-4.0.1
Parsing documentation for redis-4.0.1
Installing ri documentation for redis-4.0.1
Done installing documentation for redis after 1 seconds
1 gem installed

 

表示ruby的redis依赖包安装成功。

7、分别进入redis1,redis2,redis3,redis4,redis5,redis6里面执行(一定要遵循:分别进入

./redis-server redis-7001.conf
......

将6个节点启动

 

[root@host-172-16-80-177 redis4]# ps -ef|grep redis
root      3167     1  0 02:49 ?        00:00:00 ./redis-server 127.0.0.1:7001 [cluster]
root      3176     1  0 02:50 ?        00:00:00 ./redis-server 127.0.0.1:7002 [cluster]
root      3187     1  0 02:51 ?        00:00:00 ./redis-server 127.0.0.1:7003 [cluster]
root      3191     1  0 02:52 ?        00:00:00 ./redis-server 127.0.0.1:7004 [cluster]
root      3191     1  0 02:52 ?        00:00:00 ./redis-server 127.0.0.1:7005 [cluster]
root      3191     1  0 02:52 ?        00:00:00 ./redis-server 127.0.0.1:7006 [cluster]
root      3195  1852  0 02:52 pts/0    00:00:00 grep redis

 

8、用redis-trib.rb构建集群

cd /usr/local/redis-cluster/

[root@host-172-16-80-177 redis-cluster]# ./redis-trib.rb create --replicas 1 192.168.65.130:7001 
192.168.65.130:7002 192.168.65.130:7003 192.168.65.130:7004 192.168.65.130:7005 192.168.65.130:7006

 

 9、验证集群是否成功

[root@host-172-16-80-177 redis2]# ./redis-cli -h 192.168.65.130 -c -p 7002
192.168.65.130:7002> set hello helloword
-> Redirected to slot [866] located at 172.16.80.177:7001
OK
172.16.80.177:7006> get hello
-> Redirected to slot [866] located at 172.16.80.177:7001
"helloword"

 

备注:

密码设置:修改所有Redis集群中的redis-700X.conf文件加入: 
在:【port 700X】下一行加入下面两行
masterauth passwd123 
requirepass passwd123 

 

设置密码之后如果需要使用redis-trib.rb的各种命令 
如:./redis-trib.rb check 127.0.0.1:7000,则会报错ERR] Sorry, can’t connect to node 127.0.0.1:7000 
解决办法:vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb,然后修改passord

class Client
    DEFAULTS = {
      :url => lambda { ENV["REDIS_URL"] },
      :scheme => "redis",
      :host => "127.0.0.1",
      :port => 6379,
      :path => nil,
      :timeout => 5.0,
      :password => "passwd123",
      :db => 0,
      :driver => nil,
      :id => nil,
      :tcp_keepalive => 0,
      :reconnect_attempts => 1,
      :inherit_socket => false
    }

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学编程的司马光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值