redis4 cluster 集群HA安装部署

本文详细介绍了在CentOS上从零开始搭建Redis集群的过程,包括安装gcc编译环境、下载并编译Redis源码、配置后台启动、创建多个Redis实例及配置集群。通过此教程,读者可以了解Redis集群的基本原理和搭建步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

因为公司用的是redis4,所以这里记录4.0.14(redis4的最后一个版本)。

1.Redis是c开发的,因此安装redis需要c语言的编译环境,即需要安装gcc。

[root@centos125 ~]# gcc -v
-bash: gcc: command not found

说明gcc没有安装,安装命令:

yum -y install gcc gcc-c++

下载wget、下载redis安装包、解压、进入目录:

yum -y install wget
wget http://download.redis.io/releases/redis-4.0.14.tar.gz
tar zxvf redis-4.0.14.tar.gz
cd redis-4.0.14
ls
00-RELEASENOTES  BUGS  CONTRIBUTING  COPYING  deps  INSTALL  Makefile  MANIFESTO  README.md  redis.conf  runtest  runtest-cluster  runtest-sentinel  sentinel.conf  src  tests  utils

或者本地下载后通过winscp传输到linux服务器,这样就不需要安装wget,本地下载地址:http://download.redis.io/releases/redis-4.0.14.tar.gz

2.编译、安装。

make命令使用Makefile编译src目录下的源码:

[root@centos125 redis-4.0.14]# make

若最后有报错:

compilation terminated.
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/usr/local/tmp/redis-4.0.10/src'
make: *** [install] Error 2

原因是 jemalloc 重载了Linux下的 ANSIC 的 malloc 和 free 函数。解决办法:

[root@centos125 redis-4.0.14]# make MALLOC=libc

最后看到:


Hint: It's a good idea to run 'make test' ;)

make[1]: Leaving directory `/root/redis-4.0.14/src'

说明源码编译完成,其实至此已经可以执行redis的二进制命令,运行redis服务了,但为方便运行命令,将编译源码后得到的redis命令安装到指定目录:

[root@centos125 redis-4.0.14]# make install PREFIX=/usr/local/redis-cluster/redis01

查看安装结果:

[root@centos125 redis-4.0.14]# cd /usr/local/redis-cluster/redis01/
[root@centos125 redis01]# ls
bin
[root@centos125 redis01]# cd bin
[root@centos125 bin]# ls
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server

3. 前端启动。

[root@centos125 bin]# ./redis-server 

前端启动的话,如果客户端关闭,redis服务也会停掉,所以需要改成后台启动redis。

4. 后台启动。

注意:因为刚才使用了前端启动,所以需要先删除刚才启动生成的配置文件,否则,后面创建集群可能会出现问题。

[root@centos125 bin]# rm -f dump.rdb
[root@centos125 bin]# rm -f nodes.conf

4.1 将redis解压文件夹下的redis.conf复制到bin目录下:

[root@centos125 bin]# cp /root/redis-4.0.14/redis.conf /usr/local/redis-cluster/redis01/bin/
[root@centos125 bin]# ls
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis.conf  redis-sentinel  redis-server

4.2  修改配置文件:

[root@centos125 bin]# vi redis.conf

需要修改的地方有3处:

4.2.1 daemonize no --> daemonize yes,将启动方式修改为后台启动。(/dae然后回车,vi下的搜索模式)

4.2.2 cluster-enabled yes 的注释放开,集群模式支持开启。

4.2.3 port 6379 --> port 7001,默认端口号修改。

5. 启动6个redis-server。

5.1 copy5份redis01文件夹:

[root@centos125 redis-cluster]# cp -r redis01/ redis02
[root@centos125 redis-cluster]# cp -r redis01/ redis03
[root@centos125 redis-cluster]# cp -r redis01/ redis04
[root@centos125 redis-cluster]# cp -r redis01/ redis05
[root@centos125 redis-cluster]# cp -r redis01/ redis06
[root@centos125 redis-cluster]# ls
redis01  redis02  redis03  redis04  redis05  redis06

5.2 修改另外5份文件夹的redis.conf的port 7001:
 

[root@centos125 redis-cluster]# vi redis02/bin/redis.conf 
[root@centos125 redis-cluster]# vi redis03/bin/redis.conf  
[root@centos125 redis-cluster]# vi redis04/bin/redis.conf  
[root@centos125 redis-cluster]# vi redis05/bin/redis.conf  
[root@centos125 redis-cluster]# vi redis06/bin/redis.conf  

分别修改为:port 7002,port 7003,port 7004,port 7005,port 7006。

5.3 分别启动6个redis-server:

[root@centos125 bin]# ./redis-server redis.conf 
5018:C 06 Jun 16:32:39.062 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
5018:C 06 Jun 16:32:39.062 # Redis version=4.0.14, bits=64, commit=00000000, modified=0, pid=5018, just started
5018:C 06 Jun 16:32:39.062 # Configuration loaded
[root@centos125 bin]# cd ../../redis02/bin/
[root@centos125 bin]#  ./redis-server redis.conf
[root@centos125 bin]# cd ../../redis03/bin/
[root@centos125 bin]#  ./redis-server redis.conf
[root@centos125 bin]# cd ../../redis04/bin/
[root@centos125 bin]#  ./redis-server redis.conf
[root@centos125 bin]# cd ../../redis05/bin/
[root@centos125 bin]#  ./redis-server redis.conf
[root@centos125 bin]# cd ../../redis06/bin/
[root@centos125 bin]#  ./redis-server redis.conf

最终6个redis-server启动成功。

[root@centos125 bin]# ps aux | grep redis
root      930247  0.1  0.0 147364  2744 ?        Ssl  16:19   0:00 ./redis-server 127.0.0.1:7001 [cluster]
root      935276  0.1  0.0 147364  2736 ?        Ssl  16:19   0:00 ./redis-server 127.0.0.1:7002 [cluster]
root      936827  0.1  0.0 147364  2752 ?        Ssl  16:20   0:00 ./redis-server 127.0.0.1:7003 [cluster]
root      939465  0.1  0.0 147364  2752 ?        Ssl  16:20   0:00 ./redis-server 127.0.0.1:7004 [cluster]
root      941766  0.0  0.0 147364  2740 ?        Ssl  16:20   0:00 ./redis-server 127.0.0.1:7005 [cluster]
root      944422  0.0  0.0 147364  2748 ?        Ssl  16:20   0:00 ./redis-server 127.0.0.1:7006 [cluster]
root      945477  0.0  0.0 112708   980 pts/0    S+   16:20   0:00 grep --color=auto redis

至此,启动6个redis节点结束。

6. 创建redis集群。

6.1 要搭建集群的话,需要使用一个工具(脚本文件redis-trib.rb),这个工具在redis解压文件的src下。因为这个工具是一个ruby脚本文件,所以这个工具的运行需要ruby的运行环境:

[root@centos125 redis-4.0.14]# yum -y install ruby rubygems

再安装redis的gem包(若失败可换成本地下载好后传到linux服务器,要注意redis.gem包版本需要和redis的版本一致):

[root@centos125 redis-4.0.14]# gem install redis
Fetching: redis-4.1.2.gem (100%)
ERROR:  Error installing redis:
        redis requires Ruby version >= 2.3.0.
[root@centos125 redis-4.0.14]# ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]

报错解决的参考:

CenterOS7——报错redis requires Ruby version -= 2.2.2

https://blog.youkuaiyun.com/jabony/article/details/79977140

curl -L get.rvm.io | bash -s stable 失败时,执行额外的命令:

      curl -sSL https://rvm.io/mpapis.asc | gpg2 --import -
      curl -sSL https://rvm.io/pkuczynski.asc | gpg2 --import -

6.2 搭建集群:

copy脚本、创建集群(3主3从):

[root@centos125 redis-cluster]# cp /root/redis-4.0.14/src/redis-trib.rb .
[root@centos125 redis-cluster]# ./redis-trib.rb create --replicas 1 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 127.0.0.1:7006

最后有以下日志说明创建集群成功:

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

常用命令:

集群健康检测:
./redis-trib.rb check 127.0.0.1:7001

redis-cli客户端登录后常用命令:
查看集群节点信息
cluster nodes
查看当前集群信息
cluster info

 

[root@centos125 redis-cluster]# cd redis01/bin/
[root@centos125 bin]# ./redis-cli -c -p 7001
127.0.0.1:7001> cluster nodes
20d3e411c9729ab5501668a99098138edbcaf82c 127.0.0.1:7002@17002 master - 0 1560155956207 2 connected 5461-10922
0aa8014a9f0cb90f9bf9a77e29df462e1acc447a 127.0.0.1:7003@17003 master - 0 1560155955204 3 connected 10923-16383
af9ec87ee2f6bec0ce791b43a13d1784d9773017 127.0.0.1:7004@17004 slave 0aa8014a9f0cb90f9bf9a77e29df462e1acc447a 0 1560155953197 4 connected
bec0dc2ae04ea8d2120e66f72c67134236b0c5dc 127.0.0.1:7006@17006 slave 20d3e411c9729ab5501668a99098138edbcaf82c 0 1560155955000 6 connected
06ee0333aeac6b0f4cf3161c0e9750c72d8a9def 127.0.0.1:7001@17001 myself,master - 0 1560155954000 1 connected 0-5460
aee308c2d15feda5550d5ceba13d1305d3edb941 127.0.0.1:7005@17005 slave 06ee0333aeac6b0f4cf3161c0e9750c72d8a9def 0 1560155955000 5 connected
127.0.0.1:7001> cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
cluster_current_epoch:6
cluster_my_epoch:1
cluster_stats_messages_ping_sent:872
cluster_stats_messages_pong_sent:772
cluster_stats_messages_sent:1644
cluster_stats_messages_ping_received:767
cluster_stats_messages_pong_received:872
cluster_stats_messages_meet_received:5
cluster_stats_messages_received:1644

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值