Redis集群环境搭建

xiaoxiao2021-02-28  67

Redis简介

        Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。官网链接:https://redis.io 或 http://redis.cn (redis的特性、使用烦请百度)

Redis集群搭建前提

请确认至少有两台+主机(如果硬件不够,可以试用虚拟机);能够 常用Linux命令本文介绍在两台服务器中搭建redis 3主3从集群环境,3个master,每个master对应一个slave

第一步:Redis下载

      下载地址:http://redis.cn/download.html,我选择的版本是redis-3.2.3(如果版本不一致可能存在差异)。

      下载下来压缩包为redis-3.2.3.tar.gz。请使用tar -xzvf redis-3.2.3.tar.gz解压至/opt目录

第二步:Redis安装

#cd /opt/redis-3.2.3#make && make install#cd utils

#./install_server.sh

默认文件地址:

Port

6379

Config file

/etc/redis/6379.conf

Log file

/var/log/redis_6379.log

Data dir

/var/lib/redis/6379

Executable

/usr/local/bin/redis-server

Cli Executable

/usr/local/bin/redis-cli

第三步:修改防火墙配置

#systemctl stop firewalld.service          #停止firewall#systemctl disable firewalld.service     #禁止firewall开机启动

第四步:创建redis节点

#cd /etc/redis#cp /opt/redis-3.2.3/redis.conf 7001.conf#vi 7001.conf

对应修改以下key-value值:

key value 备注 bind10.100.160.132 protected-modeno daemonizeyesredis后台运行pidfile/var/run/redis_7001.pidpidfile文件port7001端口cluster-enabledyes开启集群cluster-config-filenodes_7001.conf集群的配置,配置文件首次启动自动生成cluster-node-timeout5000请求超时appendonlyyesaof日志开启,有需要就开启,每次写操作都会记录一条日志masterauthpassword设置密码requirepasspassword 

拷贝两个文件并修改:#cp 7001.conf 7002.conf#sed -i "s/7001/7002/g" 7002.conf

#cp 7001.conf 7003.conf#sed -i "s/7001/7003/g" 7003.conf

第五步:启动redis

        #redis-cli shutdown

        #redis-server /etc/redis/6379.conf

        #redis-server /etc/redis/7001.conf &

        #redis-server /etc/redis/7002.conf &

        #redis-server /etc/redis/7003.conf &

        启动完成后,查看是否启动成功:#ps -ef | grep redis

        

第六步:按以上步骤配置第二台服务器redis环境

第七步:创建集群

退回至第一台服务器,新建三个master节点#./opt/redis-3.2.3/src/redis-trib.rb create 10.100.160.132:7001 10.100.160.132:7003 10.100.160.133:7005分别给三个master添加slave节点(注意master-id为以上创建的三个master节点ID)#./opt/redis-3.2.3/src/redis-trib.rb add-node --slave --master-id faf56c35103d83e93ddf242ec43440f291727e3d 10.100.160.132:7002 10.100.160.132:7001#./opt/redis-3.2.3/src/redis-trib.rb add-node --slave --master-id c32440c9e7eddf80170b2bb0355e8a3dffdd6448 10.100.160.133:7004 10.100.160.132:7003#./opt/redis-3.2.3/src/redis-trib.rb add-node --slave --master-id 0f9f7341a5b9fd03de3959ed88e888a0561d8647 10.100.160.133:7006 10.100.160.133:7005其中: --slave 表示需要添加的节点为slave类型,--master-id faf56c35103d83e93ddf242ec43440f291727e3d 为master的id,然后第一个节点为要添加的slave节点,第二个节点为master节点成功之后,查看各节点情况:#cd /opt/redis-3.2.3/src/#./redis-trib.rb check 10.100.160.132:7001        

      以上以手动完成redis集群环境创建,以下介绍自动创建方式(不推荐)

    #./opt/redis-3.2.3/src/redis-trib.rb create --replicas 1 10.100.160.132:7001 10.100.160.132:7002 10.100.160.132:7003 0.100.160.133:7004 0.100.160.133:7005 0.100.160.133:7006

      --replicas  1  表示 自动为每一个master节点分配一个slave节点    上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)

      注:系统自动分配时,可能并不符合我们的分配意愿,推荐手动分配

配置中遇到的问题及解答:

1、创建集群节点提示:

             /usr/bin/env: ruby: No such file or directory

     原因:执行的ruby的脚本,需要ruby的环境

     解决:yum install ruby

2、创建集群节点单提示:

             /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)

             from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require'

             from ./src/redis-trib.rb:25:in `<main>'

     原因:ruby缺少redis接口,需要安装(下载地址:https://rubygems.org/downloads/redis-3.2.2.gem)

     解决:下载完成后安装,gem install redis-3.2.2.gem

3、创建集群节点单提示:

              Waiting for the cluster to join....................................

      各个节点的配置文件中,bind一定要配置为本机的ip地址,否则其他机器 telnet ip port 不通,集群也就不能成功

      如果第一次构建集群不成功,再次使用redis-trib.rb时会出现类似err slot 0 is already busy (redis::commanderror)的报错

      这时需要逐个登录上面命令中涉及到的节点,清空因为上次不成功留下的数据

      例如:清空节点10.100.160.132:7001 信息,在10.100.160.132上

            #redis-cli -c -h 10.100.160.132 -p 7001

            进入后输入:

      FLUSHALL CLUSTER RESET SOFT exit

 

            删除配置文件中配置的

            cluster-config-file  nodes_7001.conf

            如果是6379节点nodes_6379.conf 在/var/lib/redis/6379/下,把这个目录下的文件都删掉即可

            每个节点清空后关闭节点:

            #ps -ef | grep redis

     root     16486     1  0 19:06 ?        00:00:01 redis-server 192.168.1.1:7002 [cluster] root     16490     1  0 19:06 ?        00:00:00 redis-server 192.168.1.1:7001 [cluster] root     16494     1  0 19:06 ?        00:00:00 redis-server 192.168.1.1:7000 [cluster] root     16498     1  0 19:06 ?        00:00:01 redis-server 192.168.1.1:6379 [cluster]

            #kill -9 16486 16490 16494 16498

           之后启动节点后,再运行redis-trib.rb命令创建集群即可

转载请注明原文地址: https://www.6miu.com/read-2625904.html

最新回复(0)