阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Redis Cluster集群部署搭建详解

131次阅读
没有评论

共计 7082 个字符,预计需要花费 18 分钟才能阅读完成。

在 Oracle 的路上走了许多年,换换感觉,尝试一下新的知识,也是一个不错的感觉。Redis,一个超轻量化的内存数据库,只做一小块数据库功能实现,却非常优秀的一个产品。今天,就分享一下安装 Redis 集群的过程。

搭建 redis 集群,建议至少需要准备 3 台服务器,共搭建 6 个节点,3 个 master,3 个 slave,并且要求 3 个 master 节点不能全部跑到同一台服务器上,保证节点安全,3 台服务器的配置相同,使用 redistest 账号搭建,对应的端口是 7000/7001/7002 端口

我的集群分配如下,每个节点运行两个端口。第一列做主库,第二列做备库

192.8.8.136:7000  192.8.8.136:7001 
192.8.8.137:7001  192.8.8.137:7002
192.8.8.138:7002  192.8.8.138:7000

1、使用已经编译完成的安装报安装(就使用文档末尾连接的安装包即可),解压并放到 /home/redistest 目录下,修改对应的 redis.conf 文件,并复制出 6 份,每个节点两个 redis 目录
[redistest]$ ll
total 13284

drwxr-xr-x 2 redistest users 4096 Aug 9 06:44 7000
drwxr-xr-x 2 redistest users 4096 Aug 9 06:44 7001
drwxr-xr-x 2 redistest users 4096 Aug 9 06:44 7002
-rwxr-xr-x 1 redistest users 5708657 Aug 22 2016 redis-cli
-rwxr-xr-x 1 redistest users 7817132 Aug 22 2016 redis-server
-rwxr-xr-x 1 redistest users 60578 Aug 9 06:21 redis-trib.rb

2、此时有 3 个执行文件,redis-server/redis-cli/redis-trib.rb

3、创建 7000 文件夹,并将 redis.conf 拷贝到 7000 文件目录下,注意修改对应的几个关键配置项(主要就是改端口号)

daemonize yes // redis 后台运行
pidfile /var/run/redis_7000.pid // pid 文件,运行多个实例时,需要指定不同的 pid 文件
port 7000 // 监听端口,运行多个实例时,需要指定不同的断奶口
tcp-backlog 511
tcp-keepalive 0
loglevel notice // 日志等级
logfile ./redis.log // 日志文件位置
databases 16 // 可用数据库数
appendonly yes // redis 会把所接收到的每一次写操作请求都追加到 appendonly.aof 文件中,当 redis 重新启动时,会从该文件恢复出之前的状态。
appendfilename “appendonly.aof” // AOF 文件名称
appendfsync everysec // 表示对写操作进行累积,每秒同步一次
no-appendfsync-on-rewrite yes // AOF 自动重写
auto-aof-rewrite-percentage 80-100 // 重写百分比
auto-aof-rewrite-min-size 64mb //

注:完整配置,请参考软件包中的 redis.conf 文件
 
4、拷贝 7000 文件夹,粘贴出新文件夹 7001/7002, 分别将 7001/7002 文件夹中的 redis.conf 文件中的 7000 替换成为 7001/7002。

5、切换到 root 用户,使用 yum 安装 ruby,yum -y install ruby rubygems,并执行 gem install redis,这样便完成 ruby 安装,可以使用 redis-trib.rb 搭建集群
注:redis-trib.rb 是基于 ruby 开发的,所以必须要安装 ruby 环境。

yum 安装很方便,但是有的风场是无法连接外网的,也就无法使用 yum。软件包中已经包含 ruby rubygems 的软件包,直接安装即可。

ruby 的下载路径:
https://rubygems.org/gems/redis

然后通过下面命令本地安装 ruby

yum -y localinstall ruby rubygems
gem install redis

6、另外两台服务器做同样的配置操作,开启该机器的 2 个 redis 节点,当完成 3 台机器的 redis 节点搭建后,可以启动 redis,并使用 ps 查看 redis 运行情况情况

7、开启 redis 服务
进入 7000 目录,启动 redis

cd 7000
../redis-server redis.conf
cd ..
cd 7001
../redis-server redis.conf

[redistest@ip-172-18-98-136 redis]$ ps -ef|grep redis
redistest  3864    1  0 13:02 ?        00:00:00 ../redis-server *:7000 [cluster]
redistest  3869    1  0 13:02 ?        00:00:00 ../redis-server *:7001 [cluster]
redistest  3888  3778  0 13:05 pts/3    00:00:00 grep redis

注意:由于 redis.conf 文件使用的都是相对路径,并且生成的一些文件,如 aof 文件是不能覆盖重复的,因此标准的开启 redis-server 的操作是,进入到 7000/7001/7002 等目录中执行,../redis-server redis.conf,这样各个实例生成的文件就在各自的目录下,互不干扰;当然如果修改 redis.conf 的配置文件目录,则可以实现在不同的目录下执行 redis-server,这个可以灵活掌握和运用

8、redis 节点搭建起来后,需要完成 redis cluster 集群搭建,搭建集群过程中,需要保证 6 个 redis 实例都是运行状态。
Redis 是根据 IP 和 Port 的顺序,确定 master 和 slave 的,所以要排好序,再执行。
输出如下

[redistest@ip-172-18-98-136 redis]$ ./redis-trib.rb create –replicas 1 192.8.8.136:7000 192.8.8.137:7001 192.8.8.138:7002 192.8.8.137:7002 192.8.8.136:7001  192.8.8.138:7000
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes…
Using 3 masters:
192.8.8.138:7002
192.8.8.137:7001
192.8.8.136:7000
Adding replica 192.8.8.137:7002 to 192.8.8.138:7002
Adding replica 192.8.8.138:7000 to 192.8.8.137:7001
Adding replica 192.8.8.136:7001 to 192.8.8.136:7000
M: 6780f0fadd82825d04e524fd81fa710403e7152e 192.8.8.136:7000
  slots:10923-16383 (5461 slots) master
M: b00521fd8b0fae93d9e56fa6afe505ec9574c399 192.8.8.137:7001
  slots:5461-10922 (5462 slots) master
M: 6f9c383ec47461c2a86265f5db506e10397605d8 192.8.8.138:7002
  slots:0-5460 (5461 slots) master
S: fc510e5cdcc78a42ef871251736d365db5311c7f 192.8.8.137:7002
  replicates 6f9c383ec47461c2a86265f5db506e10397605d8
S: 6e4ae3851e018c08ba5cec96f113815db1931b4d 192.8.8.136:7001
  replicates 6780f0fadd82825d04e524fd81fa710403e7152e
S: 5b39cd3bd706d30b5470089f71bd29738b306d3b 192.8.8.138:7000
  replicates b00521fd8b0fae93d9e56fa6afe505ec9574c399
Can I set the above configuration? (type ‘yes’ to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join…..
>>> Performing Cluster Check (using node 192.8.8.136:7000)
M: 6780f0fadd82825d04e524fd81fa710403e7152e 192.8.8.136:7000
  slots:10923-16383 (5461 slots) master
M: b00521fd8b0fae93d9e56fa6afe505ec9574c399 192.8.8.137:7001
  slots:5461-10922 (5462 slots) master
M: 6f9c383ec47461c2a86265f5db506e10397605d8 192.8.8.138:7002
  slots:0-5460 (5461 slots) master
M: fc510e5cdcc78a42ef871251736d365db5311c7f 192.8.8.137:7002
  slots: (0 slots) master
  replicates 6f9c383ec47461c2a86265f5db506e10397605d8
M: 6e4ae3851e018c08ba5cec96f113815db1931b4d 192.8.8.136:7001
  slots: (0 slots) master
  replicates 6780f0fadd82825d04e524fd81fa710403e7152e
M: 5b39cd3bd706d30b5470089f71bd29738b306d3b 192.8.8.138:7000
  slots: (0 slots) master
  replicates b00521fd8b0fae93d9e56fa6afe505ec9574c399
[OK] All nodes agree about slots configuration.
>>> Check for open slots…
>>> Check slots coverage…
[OK] All 16384 slots covered.

其中 Master 的节点是:192.8.8.136:7000/192.8.8.137:7001/192.8.8.138:7002 分布在不同的服务器上,该集群的搭建的实现了负载均衡,至此 redis 集群的搭建过程基本完毕;
 
9、检查集群状态

[redistest@ip-172-18-98-136 redis]$ ./redis-trib.rb check 192.8.8.136:7000
>>> Performing Cluster Check (using node 192.8.8.136:7000)
M: 6780f0fadd82825d04e524fd81fa710403e7152e 192.8.8.136:7000
  slots:10923-16383 (5461 slots) master
  1 additional replica(s)
M: 6f9c383ec47461c2a86265f5db506e10397605d8 192.8.8.138:7002
  slots:0-5460 (5461 slots) master
  1 additional replica(s)
S: 6e4ae3851e018c08ba5cec96f113815db1931b4d 192.8.8.136:7001
  slots: (0 slots) slave
  replicates 6780f0fadd82825d04e524fd81fa710403e7152e
S: fc510e5cdcc78a42ef871251736d365db5311c7f 192.8.8.137:7002
  slots: (0 slots) slave
  replicates 6f9c383ec47461c2a86265f5db506e10397605d8
M: b00521fd8b0fae93d9e56fa6afe505ec9574c399 192.8.8.137:7001
  slots:5461-10922 (5462 slots) master
  1 additional replica(s)
S: 5b39cd3bd706d30b5470089f71bd29738b306d3b 192.8.8.138:7000
  slots: (0 slots) slave
  replicates b00521fd8b0fae93d9e56fa6afe505ec9574c399
[OK] All nodes agree about slots configuration.
>>> Check for open slots…
>>> Check slots coverage…
[OK] All 16384 slots covered.
[redistest@ip-172-18-98-136 redis]$ ./redis-trib.rb info 192.8.8.136:7000
192.8.8.136:7000 (6780f0fa…) -> 0 keys | 5461 slots | 1 slaves.
192.8.8.138:7002 (6f9c383e…) -> 0 keys | 5461 slots | 1 slaves.
192.8.8.137:7001 (b00521fd…) -> 0 keys | 5462 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

10、检查集群信息

./redis-trib.rb info 192.8.8.136:7000

11、如果在执行./redis-trib.rb create –replicas 过程中,长时间没有完成,或者遇到其他错误。如果需要重新执行配置集群的话。
需要关闭 redis 实例,删除 7000/7001/7002 目录下,除了 redis.conf 文件之外的全部文件,再启动 redis 实例,并再次执行./redis-trib.rb create 即可。

12、连接数据库,查询数据

[root@localhost src]# redis-cli -c -p 7000
127.0.0.1:7000> cluster meet 127.0.0.1 7000
OK

至此,redis 集群已经大家完成,下面我们需要完成 redis 随着操作系统启动,减少后续维护的成本。

13、编辑文件 /home/redistest/startAll.sh,注意,要写全路径

/home/redistest/redis/redis-server /home/redistest/redis/7000/redis.conf
/home/redistest/redis/redis-server /home/redistest/redis/7001/redis.conf

命令行,加入 /etc/rc.local 文件夹下,需要以 redistest 用户启动 redis

su – redistest -c /home/redistest/startAll.sh

相关资料可从以下信息得到下载:

点击这个 http://www.linuxidc.com/Linux/2013-12/93755.htm 链接 关注 Linux 公社官方微信,关注后回复数字151185。即可得到网友的分享密码。

如果取消关注 Linux 公社公众号,即使再次关注,也将无法提供本服务!

链接:https://pan.baidu.com/s/1qZg2Hcg 密码:获得见上面的方法,地址失效请在下面留言。

—————————————— 分割线 ——————————————

全部下���见

FTP 地址:ftp://ftp1.linuxidc.com

用户名:ftp1.linuxidc.com

密码:www.linuxidc.com

在 2018 年 LinuxIDC.com/ 3 月 /Redis Cluster 集群部署搭建详解 /

下载方法见 http://www.linuxidc.com/Linux/2013-10/91140.htm

—————————————— 分割线 —————————————— 

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计7082字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中