Redis集群搭建笔记

发表时间:2019-12-21 12:10:22点击:512

第一步:安装并编译redis

把安装包放在服务器中,比如放到根目录

Redis集群搭建笔记

切换到 /usr/local 目录下,解压安装包

Redis集群搭建笔记

解压后在目录中会看到解压的redis文件夹

Redis集群搭建笔记

接下来编译安装:make && make install

Redis集群搭建笔记

如果发生报错:

Redis集群搭建笔记

可能是GCC没有安装或版本不对,安装一下

yum install gcc

如果GCC也安装失败,可能是错误的缓存源导致,没有配置/etc/resolv.conf,解决方法:编辑resolv.conf文件,添加:nameserver 8.8.8.8 ,然后保存退出即可。

Redis集群搭建笔记

然后执行命令

yum clean all 和yum makecache

Redis集群搭建笔记

然后等待命令执行完。

Redis集群搭建笔记

再次尝试安装GCC,中途需要输入y确认

Redis集群搭建笔记

然后GCC就安装成功了。

OK,我们回到 /usr/local/redis-4.0.11 目录继续编译安装redis

Redis集群搭建笔记

如果这时又出现如下错误:

Redis集群搭建笔记

原因是没有安装jemalloc内存分配器,需要安装jemalloc

执行命令make MALLOC=libc && make install

Redis集群搭建笔记

Ok,命令执行成功!redis安装成功。

要安装redis集群需要提前安装好ruby组件

yum install ruby

再用 gem 这个命令来安装 redis接口 gem是ruby的一个工具包.

gem install redis

如果这里执行失败了

Redis集群搭建笔记

原因,ruby版本小于了2.2.2。查了资料发现是Centos默认支持ruby到2.0.0, 可是gem 安装redis需要最低是2.2.2

解决办法是 先安装rvm,再把ruby版本提升:

1.安装curl (有此组件请忽略)

sudo yum install curl

2.安装rvm

curl -L get.rvm.io | bash -s stable

到下面这个目录去解压和安装tgz文件,还是使用tar –zxvf命令,然后进入解压出来的文件夹中 执行 ./install 命令即可。

/usr/local/rvm/archives

然后执行命令

source /usr/local/rvm/archives/rvm-1.29.4/scripts/rvm

(如果找不到这个rvm文件,可以搜索出来)

Redis集群搭建笔记

3.查看rvm库中已知的ruby版本

rvm list known

Redis集群搭建笔记

我们发现有2.2.2以上的版本,安装比这个高的就行

4.先删除不能用的2.0.0版本

rvm remove 2.0.0

5.安装一个ruby版本

rvm install 2.3.3

Redis集群搭建笔记

6.选择使用这个版本

rvm use 2.3.3

Redis集群搭建笔记

以上步骤受到虚拟机本身的影响,可能由于其他复杂原因导致无法安装,这个时候可以手动安装:直接下载 https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.3.tar.gz, 手动解压后,进入解压目录,运行 ./configure 命令安装,执行编译命令

make&&make install

Redis集群搭建笔记

等待安装,可能要几分钟…….结束后执行命令 ruby –v 可查看版本信息

Redis集群搭建笔记

7.再次尝试安装

gem install redis,正常情况下会这样

Redis集群搭建笔记

但是万一报错了,失败了,就搜索gem,到目录下去执行

Redis集群搭建笔记

安装成功!到这里我们才完成第一步。

第二步:创建redis节点

首先在第一台机器上的 /usr/local/redis-4.0.11目录下创建 redis-cluster 目录。然后在 redis-cluster 目录下,创建名为7000、7001、7002的目录

Redis集群搭建笔记

把redis-4.0.1目录下的redis.conf 配置文件复制到这3个目录中,分别修改这三个配置文件

Redis集群搭建笔记

主要修改一下几点:

Bind: 默认ip为127.0.0.1,需要改为其他节点机器可访问的ip,否则创建集群时无法访问对应的端口,无法创建集群;确认和修改端口port:7000

Redis集群搭建笔记

daemonize 的值为 yes (表示redis后台运行);pidfile /var/run/redis_7000.pid ;让pidfile文件与端口对应起来

Redis集群搭建笔记

appendonly 的值为 yes (表示aof日志开启,有需要就开启,它会每次写操作都记录一条日志)

Redis集群搭建笔记

cluster-enabled 的值为 yes (表示开启集群,把注释#去掉);cluster-config-file nodes_7000.conf (集群的配置,配置文件首次启动自动生成 7000,7001,7002);还可以自定义设置一下超时时间

Redis集群搭建笔记

第三步:部署其他服务器

这里部署多台服务器的集群。需要在每台服务器上都装上redis,每台服务器都按照第一步和第二步来操作,然后继续下面的步骤。这里以两台服务器为例:

第一台节点设置为7000 , 7001 , 7002;第二台节点设置为 7003 , 7004 , 7005

第四步:启动节点

在两台服务器上依次执行命令 (第一台机器上执行 3个节点)

第一台机器上执行 3个节点

for((i=0;i<=2;i++)); do /usr/local/redis-4.0.3/src/redis-server /usr/local/redis-4.0.1/redis-cluster/700$i/redis.conf; done

第二台机器上执行 3个节点

for((i=3;i<=5;i++)); do /usr/local/redis-4.0.3/src/redis-server /usr/local/redis-4.0.1/redis-cluster/700$i/redis.conf; done

如果遇到redis-server命令不存在,可能是redis没有编译成功,这个时候去src目录下执行 make install,但是我这里又遇到一个问题

Redis集群搭建笔记

Install无效,要执行make test,但是又报错了,只有按照提示来安装tcl8.5。安装过程不再赘述,用wget或者yum,看哪个好使,解压后进入目录,./configure然后make install即可

安装完tcl后再回到redis-4.0.3/src目录下,执行启动节点的命令。单个依次执行或者for循环执行都行。

Redis集群搭建笔记

然后检查各 Redis 各个节点启动情况,查看监听端口,看redis是否启动成功

$ ps -ef | grep redis

Redis集群搭建笔记

$ netstat -tnlp | grep redis

Redis集群搭建笔记

第五步:串连集群

前面已经准备好了搭建集群的redis节点,接下来我们要把这些节点都串连起来搭建集群。使用官方提供一个工具:redis-trib.rb。前面我们已经安装的ruby,就是为了使用这个工具而安装的,否则无法使用。现在在第一台服务器上执行这个命令。

/usr/local/redis-4.0.11/src/redis-trib.rb create --replicas 1 172.16.16.13:7000 172.16.16.13:7001 172.16.16.13:7002 172.16.16.26:7003 172.16.16.26:7004 172.16.16.26:7005 (注意:--replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)。防火墙一定要开放监听的端口,否则会创建失败。)

Redis集群搭建笔记

执行上面的命令后,会自动配置节点关系,如图所示:将两台服务器的六个节点放到一起分配的,将172.16.16.13服务器的7000和7001、172.16.16.26的7003节点作为master主节点,其余三个座位从节点,然后会问你是否接受这样的主从关系,输入yes后会自动配置好,显示OK!这样,我们就搭建好了集群

第六步:内存和参数设置

设置虚拟机内存,否则启动redis客户端的时候会报错,需要设置内核参数overcommit_memory ,它是一种内存分配策略:可选值:0、1、2。

0表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程;1表示内核允许分配所有的物理内存,而不管当前的内存状态如何;2 表示内核允许分配超过所有物理内存和交换空间总和的内存。我们的虚拟机如果默认是0,就改为1

Redis集群搭建笔记

执行命令:echo 1 > /proc/sys/vm/overcommit_memory

如果使用的是透明大页,可能导致redis延迟和内存使用问题,需要执行命令修复echo never > /sys/kernel/mm/transparent_hugepage/enabled

还要修改TCP  backlog设置值为511,因为 /proc/sys/net/core/somaxconn这个设置的是更小的128;echo 511 > /proc/sys/net/core/somaxconn

第七步:测试集群

搭建完集群后我们需要测试集群是否能够正常使用。先启动redis,命令:redis-server &

Redis集群搭建笔记

然后查看进程 ps -ef | grep redis

选择一个集群节点登录,比如7001redis-cli  -h  172.16.16.13  -p  7001 –c(后面如果不带上-c会报错(error) MOVED),输入CLUSTER info 可以查看集群信息

Redis集群搭建笔记

输入CLUSTER nodes可以查看节点信息

Redis集群搭建笔记

测一下插入数据,redis是KEY-VALUE键值对形式存储数据。比如我们插入test1的内容为 OK,输入set test1 OK

Redis集群搭建笔记

这个时候会发现节点跳到了7000下面去了,证明节点之间是相通的,然后根据KEY取出我们刚才插入的VALUE值OK,输入 get test1

Redis集群搭建笔记

打印出了我们要的OK,到此,redis集群搭建基本完成!接下来是Java开发人员写代码对接redis

*原创文章,转载请注明出处