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 接口