基于centos6.8minimal系统环境----纯编译安装redis cluster

由于minimal版本的基础软包是具备,但lib包大多都缺。所以需要编译加载lib相关包。在此次编译安装中,需要涉及到openssl zlib的lib包。如果用yum安装也行;yum install openssl-devel zlib-devel。本文主要记录编译安装,我们开始吧。

安装前确认gcc-c++是否安装

[root@localhost ~] #yum install gcc-c++ -y

上传源码包。版本自己选择,均可网上下载

openssl-1.0.1t.tar.gz redis-3.2.0.tar.gz ruby-2.3.1.tar.gz zlib-1.2.8.tar.gz

解压包:

[root@localhost ~]# tar -xzf openssl-1.0.1t.tar.gz
[root@localhost ~]# tar -xzf zlib-1.2.8.tar.gz
[root@localhost ~]# tar -xzf ruby-2.3.1.tar.gz
[root@localhost ~]# tar -xzf redis-3.2.0.tar.gz

编译安装openssl

[root@localhost ~]# cd openssl-1.0.1t

[root@localhost openssl-1.0.1t]# ./config --prefix=/usr/local/openssl shared

[root@localhost openssl-1.0.1t]# make

[root@localhost openssl-1.0.1t]# make install

编译安装zlib

[root@localhost openssl-1.0.1t]# cd ../zlib-1.2.8

[root@localhost zlib-1.2.8]# ./configure --prefix=/usr/local/zlib

[root@localhost zlib-1.2.8]# make && make install

编译安装ruby

[root@localhost zlib-1.2.8]# cd ../ruby-2.3.1

[root@localhost ruby-2.3.1]# ./configure --prefix=/usr/local/ruby

[root@localhost ruby-2.3.1]# make && make install

处理环境变量PATH

[root@localhost ruby-2.3.1]# vim /etc/profile

PATH=$PATH:/usr/local/ruby/bin

[root@localhost ruby-2.3.1]# source /etc/profile

增加ruby的openssl\zlib模块。如果不扩展安装这两个模块会在执行gem install redis时报类式错,如下:

[root@localhost ruby-2.3.1]# gem install redis
ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass


添加ruby的openssl zlib模块

[root@localhost ruby-2.3.1]# cd ext/openssl/
[root@localhost openssl]# pwd
/root/ruby-2.3.1/ext/openssl
[root@localhost openssl]# ruby extconf.rb --with-openssl-dir=/usr/local/openssl

在执行make时报错,需要修改Makefile文件,报错如下:

[root@localhost openssl]# make
make: *** No rule to make target `/include/ruby.h',needed by `ossl_x509store.o'. Stop.

[root@localhost openssl]# vim Makefile

top_srcdir = ../..

将上一条内容插入 Makefile 文件前几行就行。再次执行make

[root@localhost openssl]# make

[root@localhost openssl]# make install
/usr/bin/install -c -m 0755 openssl.so /usr/local/ruby/lib/ruby/site_ruby/2.3.0/x86_64-linux
installing default openssl libraries


[root@localhost openssl]# cd ../zlib

[root@localhost zlib]# ruby extconf.rb --with-zlib-dir=/usr/local/zlib

[root@localhost zlib]# make && make install
linking shared-object zlib.so
/usr/bin/install -c -m 0755 zlib.so /usr/local/ruby/lib/ruby/site_ruby/2.3.0/x86_64-linux


OK..ruby相关编译安装完成。

修改gem更新源

[root@localhost ~]# gem sources -l
*** CURRENT SOURCES ***

https://rubygems.org/


由于国内种种原因,好多更新源只能用国人自已的。所以得改一改。

http://gems.ruby-china.org

https://ruby.taobao.org/

由于这里使用淘宝的源。会报一个ssl证书无效,参考:http://blog.csdn.net/beyondlpf/article/details/51275051,百度一个说是腾讯的源。不需要ssl..

[root@localhost ~]# gem sources -a http://gems.ruby-china.org/ -r https://rubygems.org/

在这里等一分钟左右,会报如下信息,表示替换成功。

http://gems.ruby-china.org/ added to sources
https://rubygems.org/ removed from sources

OK。。。整个ruby前期环境搞完了,下面开始搞redis了。just go...

[root@localhost ~]# cd redis-3.2.0


在以往的安装中(非root用户安装)。一般都是直接make && make install 。。或者按网上的说的 make --prefix=/xxxx这个方法我试过,感觉没有对。后边对[root@localhost redis-3.2.0]# vim src/Makefile这个文件查看发现对于prefix的位置是定了的。PREFIX?=/usr/local

我们需要自定义位置。修改 src/Makefile

[root@localhost redis-3.2.0]# vim src/Makefile

PREFIX?=/usr/local/redis

[root@localhost redis-3.2.0]# make && make install

在大多数的网上文档中都说要安装tcl。其实不执行make test 是不需要安装tcl的。

再次修改环境变量PATH

[root@localhost ~]# vim /etc/profile

PATH=$PATH:/usr/local/ruby/bin:/usr/local/redis/bin

[root@localhost ~]# source /etc/profile

配置redis

[root@localhost ~]# cd /usr/local/redis/
[root@localhost redis]# ls
bin
[root@localhost redis]# pwd
/usr/local/redis
[root@localhost redis]# mkdir conf log

[root@localhost redis]# cd conf/

[root@localhost conf]# mkdir 7001 7002 7003 7004 7005 7006

[root@localhost conf]# cd 7001

[root@localhost 7001]# vim redis.conf

bind 127.0.0.1
protected-mode yes
port 7001
tcp-backlog 511
timeout 0
tcp-keepalive 0
daemonize yes
supervised no
pidfile /usr/local/redis/log/7001_redis.pid
loglevel notice
logfile "/usr/local/redis/log/7001.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay yes
slave-priority 100
appendonly yes
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-migration-barrier 1
cluster-require-full-coverage yes
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes

按官网的相关文档。做一个集群只有对应的cluster那几个参数足够了,其实参数作为调优相关,以上是百度的,只作参考。

将此配置文件复制到7002...7006里,并修改对应的端口号

[root@localhost 7001]# cp redis.conf ../7002/
[root@localhost 7001]# cp redis.conf ../7003/
[root@localhost 7001]# cp redis.conf ../7004/
[root@localhost 7001]# cp redis.conf ../7005/
[root@localhost 7001]# cp redis.conf ../7006/
[root@localhost 7001]# vim ../7002/redis.conf
[root@localhost 7001]# vim ../7003/redis.conf
[root@localhost 7001]# vim ../7004/redis.conf
[root@localhost 7001]# vim ../7005/redis.conf
[root@localhost 7001]# vim ../7006/redis.conf

启动redis

[root@localhost 7001]# redis-server /usr/local/redis/conf/7001/redis.conf
[root@localhost 7001]# cd ../7002
[root@localhost 7002]# redis-server /usr/local/redis/conf/7002/redis.conf
[root@localhost 7002]# cd ../7003
[root@localhost 7003]# redis-server /usr/local/redis/conf/7003/redis.conf
[root@localhost 7003]# cd ../7004
[root@localhost 7004]# redis-server /usr/local/redis/conf/7004/redis.conf
[root@localhost 7004]# cd ../7005
[root@localhost 7005]# redis-server /usr/local/redis/conf/7005/redis.conf
[root@localhost 7005]# cd ../7006
[root@localhost 7006]# redis-server /usr/local/redis/conf/7006/redis.conf

查看端口情况

[root@localhost 7006]# netstat -ntpl
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:7005 0.0.0.0:* LISTEN 32770/redis-server
tcp 0 0 127.0.0.1:7006 0.0.0.0:* LISTEN 32774/redis-server
tcp 0 0 127.0.0.1:17001 0.0.0.0:* LISTEN 32741/redis-server
tcp 0 0 127.0.0.1:17002 0.0.0.0:* LISTEN 32758/redis-server
tcp 0 0 127.0.0.1:17003 0.0.0.0:* LISTEN 32762/redis-server
tcp 0 0 127.0.0.1:17004 0.0.0.0:* LISTEN 32766/redis-server
tcp 0 0 127.0.0.1:17005 0.0.0.0:* LISTEN 32770/redis-server
tcp 0 0 127.0.0.1:17006 0.0.0.0:* LISTEN 32774/redis-server
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1261/sshd
tcp 0 0 127.0.0.1:7001 0.0.0.0:* LISTEN 32741/redis-server
tcp 0 0 127.0.0.1:7002 0.0.0.0:* LISTEN 32758/redis-server
tcp 0 0 127.0.0.1:7003 0.0.0.0:* LISTEN 32762/redis-server
tcp 0 0 127.0.0.1:7004 0.0.0.0:* LISTEN 32766/redis-server
tcp 0 0 :::22 :::* LISTEN 1261/sshd
[root@localhost 7006]#


创建集群

ruby安装redis集群插件

[root@localhost ~]# gem install redis

将redis源码包里的 redis-trib.rb 复制到 /usr/local/redis/bin/

[root@localhost ~]# cp /root/redis-3.2.0/src/redis-trib.rb /usr/local/redis/bin/

[root@localhost ~]# redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006

>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
127.0.0.1:7001
127.0.0.1:7002
127.0.0.1:7003
Adding replica 127.0.0.1:7004 to 127.0.0.1:7001
Adding replica 127.0.0.1:7005 to 127.0.0.1:7002
Adding replica 127.0.0.1:7006 to 127.0.0.1:7003
M: 291f04f678dd9606cae6368b566e0f6e73e9d27c 127.0.0.1:7001
slots:0-5460 (5461 slots) master
M: 37be4be6b9ce5a8e7beaf0ab655305b445124e75 127.0.0.1:7002
slots:5461-10922 (5462 slots) master
M: 877151589fda8b09612ec8d5608897e83cb2872d 127.0.0.1:7003
slots:10923-16383 (5461 slots) master
S: 31871de5c884cef4e9ea8049c1301ae417400d1f 127.0.0.1:7004
replicates 291f04f678dd9606cae6368b566e0f6e73e9d27c
S: 3de40d5c74fca6d4b27d2cb0a4d94df64efbdb60 127.0.0.1:7005
replicates 37be4be6b9ce5a8e7beaf0ab655305b445124e75
S: fd072e7bbcd631f52ad81cb984a4eda5ceeaf00a 127.0.0.1:7006
replicates 877151589fda8b09612ec8d5608897e83cb2872d
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join....
>>> Performing Cluster Check (using node 127.0.0.1:7001)
M: 291f04f678dd9606cae6368b566e0f6e73e9d27c 127.0.0.1:7001
slots:0-5460 (5461 slots) master
M: 37be4be6b9ce5a8e7beaf0ab655305b445124e75 127.0.0.1:7002
slots:5461-10922 (5462 slots) master
M: 877151589fda8b09612ec8d5608897e83cb2872d 127.0.0.1:7003
slots:10923-16383 (5461 slots) master
M: 31871de5c884cef4e9ea8049c1301ae417400d1f 127.0.0.1:7004
slots: (0 slots) master
replicates 291f04f678dd9606cae6368b566e0f6e73e9d27c
M: 3de40d5c74fca6d4b27d2cb0a4d94df64efbdb60 127.0.0.1:7005
slots: (0 slots) master
replicates 37be4be6b9ce5a8e7beaf0ab655305b445124e75
M: fd072e7bbcd631f52ad81cb984a4eda5ceeaf00a 127.0.0.1:7006
slots: (0 slots) master
replicates 877151589fda8b09612ec8d5608897e83cb2872d
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

查看核对集群功能

[root@localhost ~]# redis-trib.rb info 127.0.0.1:7001
127.0.0.1:7001 (291f04f6...) -> 0 keys | 5461 slots | 1 slaves.
127.0.0.1:7002 (37be4be6...) -> 0 keys | 5462 slots | 1 slaves.
127.0.0.1:7003 (87715158...) -> 0 keys | 5461 slots | 1 slaves.
[OK] 0 keys in 3 masters.
0.00 keys per slot on average.

[root@localhost ~]# cd /usr/local/redis/conf/7001/
[root@localhost 7001]# ls
appendonly.aof dump.rdb nodes.conf redis.conf
[root@localhost 7001]# cat nodes.conf
fd072e7bbcd631f52ad81cb984a4eda5ceeaf00a 127.0.0.1:7006 slave 877151589fda8b09612ec8d5608897e83cb2872d 0 1465829294197 6 connected
31871de5c884cef4e9ea8049c1301ae417400d1f 127.0.0.1:7004 slave 291f04f678dd9606cae6368b566e0f6e73e9d27c 0 1465829291171 4 connected
37be4be6b9ce5a8e7beaf0ab655305b445124e75 127.0.0.1:7002 master - 0 1465829293191 2 connected 5461-10922
877151589fda8b09612ec8d5608897e83cb2872d 127.0.0.1:7003 master - 0 1465829296220 3 connected 10923-16383
291f04f678dd9606cae6368b566e0f6e73e9d27c 127.0.0.1:7001 myself,master - 0 0 1 connected 0-5460
3de40d5c74fca6d4b27d2cb0a4d94df64efbdb60 127.0.0.1:7005 slave 37be4be6b9ce5a8e7beaf0ab655305b445124e75 0 1465829295208 5 connected
vars currentEpoch 6 lastVoteEpoch 0

[root@localhost ~]# redis-cli -c -h 127.0.0.1 -p 7001

OK....整个集群部署完成了。。

踩过的坑。。

本来想在配置文件里搞一个加密的。。结果导致

[root@localhost 7001]# redis-trib.rb create --replicas 1 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 >>> Creating cluster [ERR] Sorry,can't connect to node 127.0.0.1:7001

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native