资讯专栏INFORMATION COLUMN

Redis部署踩坑事记

IT那活儿 / 3549人阅读
Redis部署踩坑事记
项目实施需要在Centos7.5上部署Redis集群(不是docker版),系统最小化安装后,发现许多Redis依赖环境都不符合要求,特此记录踩坑过程。


1.正常的Redis集群部署流程


环境要求(每台需要gcc环境):

yum install -y gcc

环境要求(集群初始化节点即可)ruby2.2以上,gemredis模块

yum install -y zlibzlib-devel openssl openssl-devel

然后每台机器分别解压源码包进行编译安装

tar -zxvfredis-4.0.14.tar.gz -C /data/

cd/data/redis-4.0.14/

make && makeinstall


最后在集群初始化节点(通常为1节点)创建集群:

创建新集群命令:

进入bin目录create集群

选项--replicas1:意味着我们希望每个创建的主服务器都有一个从节点

./redis-trib.rbcreate --replicas 1 172.16.10.15:7000 172.16.10.15:7001172.16.10.16:7000 172.16.10.16:7001 172.16.10.17:7000172.16.10.17:7001


2.集群踩坑详解

新建集群时,在所有节点单实例部署完成后,在1节点安装集群依赖的gem环境报错遇到以下两种情况


报错情况1:

/usr/local/ruby/bin/geminstall redis-4.1.0.gem

ERROR:Loading command: install (LoadError)

cannotload such file -- zlib

ERROR:While executing gem ... (NoMethodError)

undefinedmethod `invoke_with_build_args for nil:NilClas


该报错解决办法:

yum -y installzlib-devel

进入ruby源码文件夹,安装ruby自身提供的zlib包:

cdruby-2.4.4/ext/zlib/

/usr/local/ruby/bin/rubyextconf.rb

make &&makeinstall


编译报错

make:*** No rule to make target `/include/ruby.h, needed by `zlib.o.Stop.


解决办法:

编辑ext/zlib/Makefile文件

找到#zlib.o:$(top_srcdir)/include/ruby.h换成zlib.o:../../include/ruby.h

#zlib.o:$(top_srcdir)/include/ruby.h

zlib.o:../../include/ruby.h


报错情况2:

/usr/local/ruby/bin/geminstall redis-4.1.0.gem

ERROR:While executing gem ... (Gem::Exception)

Unableto require openssl, install OpenSSL and rebuild ruby (preferred) oruse non-HTTPS sources


解决办法:

进入ruby源码文件夹,安装ruby自身提供的openssl包:

cdruby-2.4.4/ext/openssl

# 找到各个组件的路径

/usr/local/ruby/bin/rubyextconf.rb --with-openssl-include=/usr/include/openssl/--with-openssl-lib=/usr/lib64/openssl/

make && makeinstal


编译报错

make:*** No rule to make target `/thread_native.h, needed by `ossl.o.Stop.

打开Makefile文件:增加top_srcdir= /opt/software/ruby-2.4.4路径

topdir =/usr/local/ruby/include/ruby-2.4.0

top_srcdir =/opt/software/ruby-2.4.4

hdrdir = $(topdir)

arch_hdrdir =/usr/local/ruby/include/ruby-2.4.0/x86_64-linux


以上两种在集群初始化时安装依赖环境ruby,gem等遇到过,当然这些环境和redis版本也有着重要对应关系(上述部署的是redis4.1版本),以上记录仅供参考,特此贴下部署文档如下,如有不当,请指正。


3.Redis集群部署文档


.redis集群配置

环境要求(每台):

yum install -y gcc


解压安装包,到解压后的目录进行安装

tar -zxvf redis-4.0.14.tar.gz -/data/

cd /data/redis-4.0.14/

make && make install


提示以下信息,表示安装成功

Hint: Its a good idea to run make test ;)


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

cd src && make install

make[1]: Entering directory `/data/redis-4.0.14/src

    CC Makefile.dep

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

make[1]: Entering directory `/data/redis-4.0.14/src


Hint: Its a good idea to run make test ;)


    INSTALL install

    INSTALL install

    INSTALL install

    INSTALL install

    INSTALL install

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


安装成功后,再解压的目录创建一个以端口号的目录

mkdir 7000

mkdir 7000{data,log}

cd 7000


cat >>redis.conf<<EOF

#redis.config

port 7000

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 5000

appendonly yes

daemonize yes

bind 172.16.10.16

pidfile  /data/redis-4.0.14/7000/redis_7000.pid

dir  /data/redis-4.0.14/7000/data

logfile /data/redis-4.0.14/7000/log/redis_7000.log

EOF


配置好目录和配置文件后 复制为其他端口号的目录

cd /data/redis-4.0.14/

cp -7000 7001


修改端口号为7001,直接替换(记得修改bind的IP为服务器本机IP)

vim 7001/redis.conf

:%s/7000/7001/g


然后注册为系统服务方便启动维护

cd /data/redis-4.0.14/utils/

./install_server.sh

################################################################################################

[root@domp03 utils]# ./install_server.sh 

Welcome to the redis service installer

This script will help you easily set up a running redis server


Please select the redis port for this instance: [63797000

Please select the redis config file name [/etc/redis/7000.conf] /data/redis-4.0.14/7000/redis.conf

Please select the redis log file name [/var/log/redis_7000.log] /data/redis-4.0.14/7000/log/redis_7000.log

Please select the data directory for this instance [/var/lib/redis/7000/data/redis-4.0.14/7000/data

Please select the redis executable path [/usr/local/bin/redis-server] 

Selected config:

Port           : 7000

Config file    : /data/redis-4.0.14/7000/redis.conf

Log file       : /data/redis-4.0.14/7000/log/redis_7000.log

Data dir       : /data/redis-4.0.14/7000/data

Executable     : /usr/local/bin/redis-server

Cli Executable : /usr/local/bin/redis-cli

Is this ok? Then press ENTER to go on or Ctrl-C to abort.(确定配置回车即可)

Copied /tmp/7000.conf => /etc/init.d/redis_7000

Installing service...

Successfully added to chkconfig!

Successfully added to runlevels 345!

Starting Redis server...

Installation successful

#####################################################################################


检测单实例安装情况

[root@domp03 7001]# systemctl restart redis_7000

[root@domp03 7001]# systemctl restart redis_7001

[root@domp03 7001]# ps -ef|grep redis

root      5081     1  0 16:35 ?        00:00:00 /usr/local/bin/redis-server 172.16.10.17:7000 [cluster]

root      5093     1  0 16:35 ?        00:00:00 /usr/local/bin/redis-server 172.16.10.17:7001 [cluster]

root      5098  1484  0 16:35 pts/1    00:00:00 grep --color=auto redis


集群配置(一台上做即可)

环境要求ruby2.2以上,gem redis模块

yum install -y zlib zlib-devel openssl openssl-devel


1.先解压ruby.gz包

tar -zxvf ruby-2.5.7.tar.gz -/usr/local/

cd /usr/local/ruby-2.5.7/

./configure && make && make install 


检测安装后的版本

/usr/local/ruby-2.5.7/ruby -v

/usr/local/ruby-2.5.7/gem -


2.集成zlib库到ruby环境

cd /usr/local/ruby-2.5.7/ext/zlib

/usr/local/ruby-2.5.7/ruby extconf.rb 


修改Makefile文件中的zlib.o

zlib.o: $(top_srcdir)/include/ruby.h,将$(top_srcdir)修改为../..如下:

zlib.o: ../../include/ruby.h

make && make install 


3.集成openssl库到ruby环境

cd /usr/local/ruby-2.5.7/ext/openssl

/usr/local/ruby-2.5.7/ruby extconf.rb


修改Makefile文件,修改或新增

top_srcdir=../..

make && make install 


4.安装gem redis模块

gem install /soft/redis-4.0.1.gem


5.配置redis集群

/data/redis-4.0.14/src


创建新集群命令:命令create,选项--replicas 1意味着我们希望每个创建的主服务器都有一个从服

./redis-trib.rb create --replicas 1 172.16.10.15:7000 172.16.10.15:7001 172.16.10.16:7000 172.16.10.16:7001 172.16.10.17:7000 172.16.10.17:7001


###############################################################

>>> Performing Cluster Check (using node 172.16.10.15:7000)

M: 8986394ba0b1dbe1111c86456a64bd4772b8b49c 172.16.10.15:7000

   slots:0-5460 (5461 slots) master

   1 additional replica(s)

M: 3c43b0063c47b6946a2908a2f7104b76763b39c9 172.16.10.17:7000

   slots:10923-16383 (5461 slots) master

   1 additional replica(s)

M: a60599db59814392385a1d047bd4f0b529eb1b31 172.16.10.16:7000

   slots:5461-10922 (5462 slots) master

   1 additional replica(s)

S: b7899e092d0affa3e0ca1d4a367eea3af98f986b 172.16.10.17:7001

   slots: (0 slots) slave

   replicates a60599db59814392385a1d047bd4f0b529eb1b31

S: f8f577ceca57142e83e1da6886eda590b8fb1e86 172.16.10.15:7001

   slots: (0 slots) slave

   replicates 3c43b0063c47b6946a2908a2f7104b76763b39c9

S: 8156d4655e6598f651af923e0cb0fd2bfcb53b82 172.16.10.16:7001

   slots: (0 slots) slave

   replicates 8986394ba0b1dbe1111c86456a64bd4772b8b49c

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All 16384 slots covered.

#################################################################

出现这个表示配置正常


集群节点状态查看

redis-cli -172.16.10.15 -p 7000 cluster nodes


文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/130078.html

相关文章

  • 2021年8月国产数据库大事记

    摘要:本文整理了年月国产数据库大事件和重要产品发布消息。柏睿数据库加速安全卡面向全球重磅发布。月日,在全球数字经济大会成果发布会上,中国移动北京分公司与国产数据库领域新锐企业柏睿数据签署战略合作协议。本次大赛主要面向全国爱好数据库的高校学生。 本文整理了2021年8月国产数据库大事件和重要产品发布消息。目录8月国产数据库大事记TOP108月国产数据库大事记时间线产品/版本发布兼容认证8月排行榜新增...

    Scorpion 评论0 收藏0
  • TiKV 成功晋级 CNCF 孵化项目

    摘要:今天,,云原生计算基金会技术监督委员会宣布已经投票决议通过,正式将从沙箱项目晋级至孵化项目。晋级为孵化项目之后,将与其他项目一道,成为与其技术利益一致的中立的基金会的一部分,享有基金会为其提供的治理市场和社区推广等权益。 今天,CNCF(Cloud Native Computing Foundation,云原生计算基金会)技术监督委员会(TOC)宣布已经投票决议通过,正式将 TiKV...

    张率功 评论0 收藏0
  • nextjs踩坑

    摘要:踩坑几乎一整年没咋写文章,主要是懒,加上工作也挺忙。遇到一些坑,也有一些收获这里记录一下。个人习惯使用启动服务。总结说了上面那么多,其实官方文档里都有相关例子,就当我的个人踩坑记录吧。 Next.js踩坑 几乎一整年没咋写文章,主要是懒,加上工作也挺忙。但是想趁着年底发一篇,希望明年更勤奋一点。其实不是没东西写,就是想深入一个东西还是很困难的,要查各种资料,最终还是懒就是了。 next...

    JayChen 评论0 收藏0
  • 2021年10月国产数据库大事记

    摘要:月日消息,近日,中国信息通信研究院大数据产品能力评测数据库方向的测评结果陆续出炉。月日消息,国家工业信息安全发展研究中心发布电信行业数据库产品第一期测评结果,前三名分别是阿里云数据库柏睿数据企业级交易型数据库信创版云和恩墨企业级数据库。 .markdown-body{word-break:break-word;line-height:1.75;font-weight:400;font-si...

    elva 评论0 收藏0
  • 我的服务器迁移踩坑经验分享

    摘要:去年年底因为使用了云存储和其他方面的原因,计划的将服务器缩减一个机柜出来。云服务的回源服务器的配置中间漏了一台,后期给补上了。监控迁移完毕之后,除了常规的业务代码,还需要注意图片资源的回源是否正常服务器压力是否正常检查日志是否出现错误。 去年年底因为使用了云存储和其他方面的原因,计划的将服务器缩减一个机柜出来。这样今年每月机房的费用可以减少1万左右。前前后后抽空在弄这个任务,现做个笔记...

    Developer 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<