SUSE 11 SP4 搭建Redis3.2.9搭建Redis Cluster高可用集群Ruby cannot load such file -- zlib和openssl(LoadError)解决

Redis-3.2.9 部署方案

Redis3.2.9搭建Redis Cluster高可用集群

  • 一、先源码安装redis3.2.9

1、编译安装redis

[root@gaia tarpackage]# wget http://download.redis.io/releases/redis-3.2.9.tar.gz

[root@gaia tarpackage]# tar -zxvf redis-3.2.9.tar.gz  -C /opt/

[root@gaia tarpackage]# cd /opt/redis-3.2.9/

[root@gaia redis-3.2.9]# make

[root@gaia redis-3.2.9]# make install

[root@gaia redis-3.2.9]# make test

在执行 make test 时报错:You need tcl 8.5 or newer in order to run the Redis test

解决:yum install tcl -y

2、配置redis

[root@gaia redis-3.2.9]# ./src/redis-server    # 启动redis-server

# 另起一个窗口

[root@gaia redis-3.2.9]# ./src/redis-cli -h 127.0.0.1 -p 6379

127.0.0.1:6379> set name tgm

OK

127.0.0.1:6379> get name

"tgm"

127.0.0.1:6379>

# 返回原来窗口,为多实例redis配置启动环境

[root@gaia opt]# mkdir -pv /opt/redis-cluter/{7000,7001,7002,7003,7004,7005}

mkdir: created directory ‘/opt/redis-cluter’

mkdir: created directory ‘/opt/redis-cluter/7000’

mkdir: created directory ‘/opt/redis-cluter/7001’

mkdir: created directory ‘/opt/redis-cluter/7002’

mkdir: created directory ‘/opt/redis-cluter/7003’

mkdir: created directory ‘/opt/redis-cluter/7004’

mkdir: created directory ‘/opt/redis-cluter/7005’

[root@gaia opt]# cp redis-3.2.9/src/{redis-server,redis-sentinel} /opt/redis-cluter/7000

[root@gaia opt]# cp redis-3.2.9/src/{redis-server,redis-sentinel} /opt/redis-cluter/7001

[root@gaia opt]# cp redis-3.2.9/src/{redis-server,redis-sentinel} /opt/redis-cluter/7002

[root@gaia opt]# cp redis-3.2.9/src/{redis-server,redis-sentinel} /opt/redis-cluter/7003

[root@gaia opt]# cp redis-3.2.9/src/{redis-server,redis-sentinel} /opt/redis-cluter/7004

[root@gaia opt]# cp redis-3.2.9/src/{redis-server,redis-sentinel} /opt/redis-cluter/7005

[root@gaia opt]# cp redis-3.2.9/{redis.conf,sentinel.conf} /opt/redis-cluter/7000

[root@gaia opt]# cp redis-3.2.9/{redis.conf,sentinel.conf} /opt/redis-cluter/7001

[root@gaia opt]# cp redis-3.2.9/{redis.conf,sentinel.conf} /opt/redis-cluter/7002

[root@gaia opt]# cp redis-3.2.9/{redis.conf,sentinel.conf} /opt/redis-cluter/7003

[root@gaia opt]# cp redis-3.2.9/{redis.conf,sentinel.conf} /opt/redis-cluter/7004

[root@gaia opt]# cp redis-3.2.9/{redis.conf,sentinel.conf} /opt/redis-cluter/7005

6 directories, 24 files

# 创建数据、pid、日志存放路径

[root@gaia opt]# mkdir -pv redis-cluter/7000/{data,pidfile,logfile}

[root@gaia opt]# mkdir -pv redis-cluter/7001/{data,pidfile,logfile}

[root@gaia opt]# mkdir -pv redis-cluter/7002/{data,pidfile,logfile}

[root@gaia opt]# mkdir -pv redis-cluter/7003/{data,pidfile,logfile}

[root@gaia opt]# mkdir -pv redis-cluter/7004/{data,pidfile,logfile}

[root@gaia opt]# mkdir -pv redis-cluter/7005/{data,pidfile,logfile}

# 修改配置文件

[root@gaia opt]# cd redis-cluter/7000/

[root@gaia 7000]# > redis.conf

[root@gaia 7000]# vim redis.conf                    # 添加以以下内容

bind 192.168.120.4

port 7000

daemonize yes

appendonly yes

protected-mode no

cluster-enabled yes

cluster-config-file nodes.conf

cluster-node-timeout 15000

pidfile "/opt/redis-cluter/7000/pidfile/redis.pid"

logfile "/opt/redis-cluter/7000/logfile/redis.log"

dir "/opt/redis-cluter/7000/data"

# 把7000目录下的redis.conf文件复制到7001~7005修改port、pidfile、logfile、dir执行相应的端口号即可

# 启动,需分别进入7000、7001、7002、7003、7004、7005目录下执行

[root@gaia 7000]# ./redis-server redis.conf

[root@gaia 7001]# ./redis-server redis.conf

[root@gaia 7002]# ./redis-server redis.conf

[root@gaia 7003]# ./redis-server redis.conf

[root@gaia 7004]# ./redis-server redis.conf

[root@gaia 7005]# ./redis-server redis.conf

注意:一定要进入各自目录7000~7005启动 Redis 实例,因为自动生成的 node.conf 等文件将存在命令执行的目录中

二、创建redis集群

1、建 Redis 集群,使用 Redis 主目录中 src/redis-trib.rb 程序,此程序使用 Ruby 编写,因此需要安装 Ruby 运行环境。

tar -zxvf ruby-2.4.3

cd ruby-2.4.3

./configure –prefix=/usr/local/ruby-2.4.3

Make

Make install

更改ruby环境变量使其生效

Vi /etc/profile

export PATH=/usr/local/ruby-2.4.3/bin:$PATH

source /etc/profile

2、安装redis接口:gem install redis -v 3.3.0 (这一步可能会出现:Ruby源码安装 cannot load such file -- zlib (LoadError) 和 cannot load such file -- openssl (LoadError) 及 gem No rule to make target `/include/ruby.h', needed by`zlib.o'. Stop. 解决办法往后面看)如果没出现请忽略

# [root@localhost src]# gem install redis --version 3.0.0

# # 由于源的原因,可能下载失败,就手动下载下来安装

[root@localhost src]# gem install /usr/local/src/redis-3.2.1.gem

Successfully installed redis-3.2.1

Parsing documentation for redis-3.2.1

Installing ri documentation for redis-3.2.1

Done installing documentation for redis after 0 seconds

WARNING:  Unable to pull data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://rubygems.org/specs.4.8.gz)

1 gem installed

可以看到这时ruby redis接口已经安装成功了;

————————————————

原文链接:https://blog.youkuaiyun.com/huang930528/article/details/51027915

3、使用 Redis 主目录中 src/redis-trib.rb 程序

[root@gaia redis-3.2.9]# ./src/redis-trib.rb create --replicas 1 192.168.120.4:7000 192.168.120.4:7001 192.168.120.4:7002 192.168.120.4:7003 192.168.120.4:7004 192.168.120.4:7005

输入“yes”,开始创建集群

创建成功后,查看所有节点:redis-cli -h 192.168.120.4 -p 7000 cluster nodes

  • 三、关于zlib报错、openssl解决办法

1、关于zlib报错 (未安装zlib时)下载安装zlib

1.1 cannot load such file -- zlib 问题解决

原因

缺少zlib函式库

缺少ruby-zlib

解决

(未安装zlib时)下载安装zlib

我是使用源码安装,由是默认安装到/usr/local/lib,我选择使用root用户操作

安装版本zlib-1.2.11

下载软件包 wget http://www.zlib.net/zlib-1.2.11.tar.gz

解压缩软件包 tar -zxvf zlib-1.2.11.tar.gz

进入zlib源码目录 cd zlib-1.2.11/

配置 ./configure

make make

检查 make check

安装 make install

查看是否成功(目录中存在libz.a) find /usr/local/lib -name libz.a

更改环境变量

vi /etc/ld.so.conf

/usr/local/zlib/lib  #zlib安装路径

Ldconfig -v生效

ld.so.conf //使zlib生效(这里顺序是先ruby后zalib在openssl)

原文链接:https://blog.youkuaiyun.com/qq_42000661/article/details/109028922

1.2安装ruby-zlib

Ruby源码提供了该源码,直接找到对应目录安装

cd /root/ruby-2.6.5/ext/zlib

ruby ./extconf.rb

如果报错 checking for zlib.h... no 或 checking for deflateReset() in -lzlib... no

则 ruby ./extconf.rb --with-zlib-dir =/usr/local/zlib    # /usr/local/zlib是zlib安装的路径

make

如果报错 make: *** No rule to make target /include/ruby.h', needed byzlib.o'. Stop.

根据日志得知 zlib.o: $(top_srcdir)/include/ruby.h 去查看源码的确不存在变量值的话

在Makefile文档第一行,设置变量top_srcdir的路径

(我采用)用绝对/相对路径替换$(top_srcdir)

建议先备份Makefile

vim Makefile

: %s/$(top_srcdir)/..\/../g

:wq

如果上一步make报错,在修改后再次make

make install

2、源码安装openssl-1.0.2k.tar.gz

cd openssl

./config -fPIC --prefix=/usr/local/openssl enable-shared

./config –t

Make

Makeinstall

openssl的配置文件必须要配置-fPIC参数,如果没有该参数下面的安装中会出现问题!

安装完成,可以检测一下是否安装成功:

[root@localhost openssl-1.0.1s]# openssl version

openssl version没有生效 需要配置环境变量

ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

ln -s /usr/local/openssl/include/openssl/ /usr/include/openssl

vi /etc/ld.so.conf

/usr/local    #openssl路径

ld.so.conf  -v    //使openssl生效

进入ruby源码/home/app/ruby-2.4.3/ext/openssl/目录下

进入ruby源码[/usr/local/src/ruby-2.3.0]目录下的ext/openssl 目录:

[root@localhost openssl-1.0.1s]# cd ../ruby-2.3.0

[root@localhost ruby-2.3.0]# cd ext/openssl

[root@localhost openssl]# ruby extconf.rb

checking for t_open() in -lnsl... no

checking for socket() in -lsocket... no

checking for assert.h... yes

checking for openssl/ssl.h... no

提示没有找到ssl.h, 因为出现了错误:openssl/ssl.h:没有那个文件或目录

[root@localhost openssl]# ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib

checking for t_open() in -lnsl... no

checking for socket() in -lsocket... no

checking for assert.h... yes

checking for openssl/ssl.h... yes

.............................................中间略.............................................

checking for EVP_CTRL_GCM_GET_TAG in openssl/evp.h... yes

creating extconf.h

creating Makefile

成功。

3.接下来并且将ruby 源码目录下的include目录软链接到 / 目录下:
 

[root@localhost openssl]# ln -s /usr/local/src/ruby-2.2.3/include /

有配置-fPIC参数时就继续走下去:

[root@localhost openssl]# make

compiling ossl_pkey_dsa.c

compiling openssl_missing.c

compiling ossl_x509name.c

compiling ossl_pkey_rsa.c

.............................................中间略.............................................

compiling ossl_bn.c

compiling ossl.c

linking shared-object openssl.so

[root@localhost openssl]# make install

/usr/bin/install -c -m 0755 openssl.so /usr/local/ruby/lib/ruby/site_ruby/2.2.0/x86_64-linux

installing default openssl libraries

成功。

回过头来,这时候我们已经把配置集群遇到的各种问题已经解决好了,再次使用gem install 安装 ruby redis 接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值