设为首页 收藏本站
查看: 700|回复: 0

[经验分享] Redis Cluster集群部署搭建

[复制链接]

尚未签到

发表于 2018-11-3 11:44:25 | 显示全部楼层 |阅读模式
  在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  软件包过大,无法在blog中上传,已经上传到51cto下载中心,请到下载中心下载。
  http://down.51cto.com/data/2334650



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630210-1-1.html 上篇帖子: OpenResty Redis 安装部署测试SET GET功能 下篇帖子: Redis常用命令(一) 字符串键、散列键
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表