redis3.0搭建分布式集群

redis高版本使用ruby实现了集群,所以需要ruby环境,安装ruby环境和redis的gem接口后,就可以使用redis的redis-trib.rb脚本创建集群。

先列一下大的步骤。

1.修改配置文件,启动多个redis实例。

2.安装ruby、rubygems、redis ruby接口。

安装gem 需要ruby的版本在 1.8.7 以上,默认的centos5 上都是1.8.5 版本,所以首先你的升级你的ruby

3.gem 安装redis ruby 接口

4.redis-trib.rb脚本创建集群

——————————————————————————————————————————

本人使用两台桥接的虚拟机进行了分布式集群的搭建,系统为centos5。

具体操作过程:

1.修改配置文件,启动多个redis实例。

下载redis3.0版本https://download.csdn.net/download/shy_snow/85152933

注意这里是redis3版本,新的redis5的集群方式和redis3已经不同了。redis5的安装看这里redis5集群安装并设置密码_shy_snow的博客-CSDN博客_redis 集群模式设置密码

解压后make编译安装

tar zxvf redis-3.0.7.tar.gz
mv redis-3.0.7 redis
cd redis
sudo make && make install

创建单独目录,我是mkdir /usr/local/cluster ,再在其下创建目录 7000、7001、7002、7003

将redis.conf分别拷贝到这几个目录下面,并分别修改redis.conf 中的端口号port和目录名一致。

#后台启动,守护进程
daemonize yes
#定义自己的pid文件
/var/run/redis_7000.pid
#定义端口号,各实例不同
port 7000 

#绑定自己所在机器的ip
bind 135.192.26.15  127.0.0.1
#启用集群
cluster-enabled yes
# 7000 7001 ... 集群自动创建的文件文件名不要相同防止覆盖
cluster-config-file nodes-7000.conf

启动4个实例

cd /usr/local/cluster

cd 7000

redis-server redis.conf

cd ../7001

redis-server redis.conf

如上把7002 7003也启动起来

然后在另一台虚拟机下创建 9000 9001 两个目录也按上面的redis-server redis.conf方法分别启动。

ps -ef|grep redis 看下是否都启动起来了

[root@localhost ~]# ps -ef|grep redis

root     10957     1  0 00:15 ?        00:00:01 redis-server *:7000 [cluster]

root     10961     1  0 00:15 ?        00:00:01 redis-server *:7001 [cluster]

root     10965     1  0 00:15 ?        00:00:01 redis-server *:7002 [cluster]

root     10982     1  0 00:15 ?        00:00:01 redis-server *:7003 [cluster]

2.安装ruby、rubygems、redis ruby接口。

yum install ruby

yum install rubygems

gem install redis

理想情况下上面三行就搞定了,但是我的ruby版本太低,需要升级ruby。

安装gem 需要ruby的版本在 1.8.7 以上,默认的centos5 上都是1.8.5 版本:

所以需要升级zlib,升级ruby

先升级zlib

yum install -y gcc zlib zlib-devel

yum install ruby 

查看下ruby的版本

ruby -v

rpm -ivh http://yum.puppetlabs.com/el/5/products/x86_64/puppetlabs-release-5-6.noarch.rpm

yum install ruby ruby-devel rubygems rpm-build

rpm -ivh http://dl.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm

vi /etc/yum.repos.d/epel.repo  修改 enabled=1 

yum install rubygems 

3.gem 安装redis ruby 接口,我是先下载下来放到本地安装的。

wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.1.gem

sudo gem install -l ./redis-3.2.1.gem

4.redis-trib.rb脚本创建集群

cd /usr/local/redis3.0.5/

# --replicas 1代表每个主节点有一个从节点,前面的是主节点,从节点是随机的

src/redis-trib.rb create --replicas 1 192.168.129.103:7000 192.168.129.103:7001 192.168.129.103:7002 192.168.129.103:7003 192.168.129.107:9000 192.168.129.107:9001

[root@localhost src]# ./redis-trib.rb create --replicas 1 192.168.129.103:7000 192.168.129.103:7001 192.168.129.103:7002 192.168.129.103:7003 192.168.129.107:9000 192.168.129.107:9001

>>> Creating cluster

Connecting to node 192.168.129.103:7000: OK

Connecting to node 192.168.129.103:7001: OK

Connecting to node 192.168.129.103:7002: OK

Connecting to node 192.168.129.103:7003: OK

Connecting to node 192.168.129.107:9000: OK

Connecting to node 192.168.129.107:9001: OK

>>> Performing hash slots allocation on 6 nodes...

集群创建完成,check一下看看:

[root@localhost src]# ./redis-trib.rb check 192.168.129.103:7000

Connecting to node 192.168.129.103:7000: OK

Connecting to node 192.168.129.103:7003: OK

Connecting to node 192.168.129.103:7001: OK

Connecting to node 192.168.129.107:9000: OK

Connecting to node 192.168.129.103:7002: OK

Connecting to node 192.168.129.107:9001: OK

>>> Performing Cluster Check (using node 192.168.129.103:7000)

M: 5f0adb50d0dd1aa69d34ec66b09413d984d124a1 192.168.129.103:7000

   slots:5461-10922 (5462 slots) master

   1 additional replica(s)

S: 4326d921c90559c9b26d84c19b151b8be43ee711 192.168.129.103:7003

   slots: (0 slots) slave

   replicates 25e7505b6647bc56781a6f8cf9addcae196d000c

S: b17b58c85c2a70ab781f35edc900d3031c7623b1 192.168.129.103:7001

   slots: (0 slots) slave

   replicates cc319d119402df317df41bc60b38cd8bb80e78bf

M: cc319d119402df317df41bc60b38cd8bb80e78bf 192.168.129.107:9000

   slots:0-5460 (5461 slots) master

   1 additional replica(s)

S: 966450aef1072b222b876c046f9a78ab7837fcd8 192.168.129.103:7002

   slots: (0 slots) slave

   replicates 5f0adb50d0dd1aa69d34ec66b09413d984d124a1

M: 25e7505b6647bc56781a6f8cf9addcae196d000c 192.168.129.107:9001

   slots:10923-16383 (5461 slots) master

   1 additional replica(s)

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

[root@localhost src]# 

没问题,再客户端连接上去操作下,连接集群需要加-c参数

[root@localhost src]# redis-cli -c -p 7000

127.0.0.1:7000> set key v

-> Redirected to slot [12539] located at 192.168.129.107:9001

OK

192.168.129.107:9001> set key5 v5

-> Redirected to slot [9057] located at 192.168.129.103:7000

OK

192.168.129.103:7000> 

如果想修改集群,可以使用add-node,迁移数据槽使用reshard,暂不详细描述了。

 参考资料:

1.百度文库里的《redis3.0.2 分布式集群安装详细步骤》

 2.centos 安装 redis3.0.0 集群

http://blog.csdn.net/lifeiaidajia/article/details/45370377

3.ruby升级不堪回首的往事

http://www.tuicool.com/articles/yauaM3

4.安装 ruby gems

http://storysky.blog.51cto.com/628458/1155353/

5./docs/manual/scaling/

_________________

可能遇到的问题

  • gcc未安装
    • 把网络搞定了,然后   在终端里yum install gcc*就自动安装了
    • 下载离线安装文件进行安装
    • 如果在内网则可以将安装好的系统做成镜像,然后离线yum
  • 默认编译器不是gcc
    • 修改默认编译器为gcc
    • 查看默认编译器
      • echo $CC
  • zmalloc.h:51:31: error: jemalloc/jemalloc.h: No such file or directory
    • 安装失败的残留文件
    • make distclean。清理一下,然后再make。
  • 异常
    • zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
      • make MALLOC=libc
    • server.c:5170:31: error: ‘struct redisServer’
      • 安装gcc套装
        • yum install cpp
        • yum install binutils
        • yum install glibc
        • yum install glibc-kernheaders
        • yum install glibc-common
        • yum install glibc-devel
        • yum install gcc
        • yum install make
      • 升级gcc
        • yum -y install centos-release-scl
        • yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
        • scl enable devtoolset-9 bash
  • 建立集群时Waiting for the cluster to join一直等待解决办法:
    要将所有集群中的redis.conf中的bind由 bind 127.0.0.1 修改为  bind 192.168.8.16 或者bind 192.168.8.16 127.0.0.1, 各节点连上去flushall然后删除各个节点的redis的rdb文件和nodes.conf文件,重启redis节点重新用redis-trib.rb创建集群。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值