1. 程式人生 > >centos6.x redis-cluster集群離線安裝

centos6.x redis-cluster集群離線安裝

addition 允許 tps out ted 版本過低 ins lis .gz

一、環境準備:

系統OS: CentOS6.8
集群環境:三臺主機9個節點
軟件版本:redis-4.0.11.tar.gz

redis cluster節點信息:
redis01
172.16.8.13:7000
172.16.8.13:7001
172.16.8.13:7002
redis02
172.16.8.14:7003
172.16.8.14:7004
172.16.8.14:7005
redis03
172.16.8.15:7006
172.16.8.15:7007
172.16.8.15:7008

二、redis安裝及配置
安裝所需的包
#yum install -y gcc g++ make gcc-c++ kernel-devel automake autoconf libtool make wget tcl vim ruby rubygems unzip

yum -y install zlib zlib-devel openssl openssl-devel gcc gcc-c++

百度雲 鏈接:https://pan.baidu.com/s/1L9KdpWieYlr5K1qPRMuK_w 密碼:t8ru
離線安裝ruby
下載ruby-2.4.4並上傳至服務器
https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.1.tar.gz
把包放到改目錄下
tar -xvf ruby-2.4.4.tar.gz?
cd ruby-2.4.4
./configure --prefix=/usr/local/ruby
echo $?
make && make install

echo "PATH=$PATH:/usr/local/ruby/bin" >> /etc/profile
source /etc/profile
which ruby
/usr/bin/ruby
rm -rf /usr/bin/ruby
ln -s /usr/local/ruby/bin/ruby /usr/bin/ruby

[root@localhost ruby-2.4.4]# ruby -v
ruby 2.4.4p296 (2018-03-28 revision 63013) [x86_64-linux]

離線安裝rubygems
下載rubygems-2.7.6.tgz並上傳至服務器
https://rubygems.org/rubygems/rubygems-2.7.6.tgz

tar -xvf rubygems-2.7.6.tgz
chown -R root.root rubygems-2.7.6
mv rubygems-2.7.6 /usr/local/
cd /usr/local/rubygems-2.7.6/
ruby setup.rb?
echo "PATH=$PATH:/usr/local/rubygems-2.7.6" >> /etc/profile
source /etc/profile
查看當前版本

[root@localhost tools]# gem -v
2.7.6
-------------------------------------------------------------------------------------------------------------------

離線配置rubygems的redisapi
下載redis的gem並上傳至服務器
https://rubygems.org/downloads/redis-3.3.0.gem
下載新的版本
https://rubygems.org/downloads/redis-4.0.2.gem

gem install -l redis-3.3.0.gem

[root@localhost tools]# gem list redis

*** LOCAL GEMS ***

redis (3.3.0)
如果安裝是舊的版本
卸載
gem uninstal redis

安裝

gem install -l redis-4.0.2.gem
[root@localhost tools]# gem list redis

*** LOCAL GEMS ***

redis (4.0.2)

離線安裝tcl

下載tcl8並上傳至服務器
https://sourceforge.net/projects/tcl/files/Tcl/8.6.0/
unzip tcl868-src.zip?
cd tcl8.6.8/unix/
./configure --prefix=/usr/local/tcl
echo $?
make
echo $?
make install
echo $?
make install-private-headers
ln -v -sf tclsh8.6 /usr/local/tcl/bin/tclsh
chmod -v 755 /usr/local/tcl/lib/libtcl8.6.so
echo "PATH=$PATH:/usr/local/tcl/bin" >> /etc/profile
source /etc/profile

創建用戶

useradd qasuser
echo devops | passwd --stdin qasuser

下載redis安裝包
http://download.redis.io/releases/redis-4.0.11.tar.gz

安裝及配置

tar -xvf redis-4.0.11.tar.gz -C /app
chown -R qasuser.qasuser /app/redis-4.0.11
cd /app/redis-4.0.11
------------------------------------------------------------------------------------------------------------
如果因為上次編譯失敗,有殘留的文件,做法如下:
[qasuser@localhost redis-4.0.11]$make distclean
------------------------------------------------------------------------------------------------------------
[qasuser@localhost redis-4.0.11]$ make

查看是否編譯是否成功

[qasuser@localhost redis-4.0.11]$ echo $?
0

節點1上執行(172.16.8.13)

su - qasuser
mkdir /app/redis-4.0.11/redis-cluster
cd /app/redis-4.0.11/redis-cluster
mkdir {7000,7001,7002}

cat <<EOF>./7000/redis.conf
port 7000
bind 172.16.8.13
daemonize yes
pidfile /var/run/redis_7000.pid
cluster-enabled yes
cluster-config-file nodes_7000.conf
cluster-node-timeout 10100
appendonly yes
EOF

cat <<EOF>./7001/redis.conf
port 7001
bind 172.16.8.13
daemonize yes
pidfile /var/run/redis_7001.pid
cluster-enabled yes
cluster-config-file nodes_7001.conf
cluster-node-timeout 10100
appendonly yes
EOF

cat <<EOF>./7002/redis.conf
port 7002
bind 172.16.8.13
daemonize yes
pidfile /var/run/redis_7002.pid
cluster-enabled yes
cluster-config-file nodes_7002.conf
cluster-node-timeout 10100
appendonly yes
EOF
for((i=0;i<=2;i++)); do /app/redis-4.0.11/src/redis-server /app/redis-4.0.11/redis-cluster/700$i/redis.conf; done

qasuser@localhost redis-cluster]$ ps -ef | grep redis-server
qasuser ? ?9742 ? ? ?1 ?0 Sep04 ? ? ? ? ?00:02:51 /app/redis-4.0.11/src/redis-server 172.16.8.13:7000 [cluster] ? ? ? ? ? ? ? ? ? ??
qasuser ? ?9747 ? ? ?1 ?0 Sep04 ? ? ? ? ?00:02:51 /app/redis-4.0.11/src/redis-server 172.16.8.13:7001 [cluster] ? ? ? ? ? ? ? ? ? ??
qasuser ? ?9749 ? ? ?1 ?0 Sep04 ? ? ? ? ?00:02:51 /app/redis-4.0.11/src/redis-server 172.16.8.13:7002 [cluster] ? ? ? ? ? ? ? ? ? ??
qasuser ?104976 104464 ?0 13:54 pts/1 ? ?00:00:00 grep redis-server

節點2上執行(172.16.8.14)

su - qasuser
mkdir /app/redis-4.0.11/redis-cluster
cd /app/redis-4.0.11/redis-cluster
mkdir {7003,7004,7005}

cat <<EOF>./7003/redis.conf
port 7003
bind 172.16.8.14
daemonize yes
pidfile /var/run/redis_7003.pid
cluster-enabled yes
cluster-config-file nodes_7003.conf
cluster-node-timeout 10100
appendonly yes
EOF

cat <<EOF>./7004/redis.conf
port 7004
bind 172.16.8.14
daemonize yes
pidfile /var/run/redis_7004.pid
cluster-enabled yes
cluster-config-file nodes_7004.conf
cluster-node-timeout 10100
appendonly yes
EOF

cat <<EOF>./7005/redis.conf
port 7005
bind 172.16.8.14
daemonize yes
pidfile /var/run/redis_7005.pid
cluster-enabled yes
cluster-config-file nodes_7005.conf
cluster-node-timeout 10100
appendonly yes
EOF
for((i=3;i<=5;i++)); do /app/redis-4.0.11/src/redis-server /app/redis-4.0.11/redis-cluster/700$i/redis.conf; done

[qasuser@localhost redis-cluster]$ ps -ef | grep redis-server
qasuser ? 48130 ? ? ?1 ?0 11:20 ? ? ? ? ?00:00:18 /app/redis-4.0.11/src/redis-server 172.16.8.14:7003 [cluster] ? ? ? ? ? ? ? ? ? ??
qasuser ? 48132 ? ? ?1 ?0 11:20 ? ? ? ? ?00:00:18 /app/redis-4.0.11/src/redis-server 172.16.8.14:7004 [cluster] ? ? ? ? ? ? ? ? ? ??
qasuser ? 48134 ? ? ?1 ?0 11:20 ? ? ? ? ?00:00:18 /app/redis-4.0.11/src/redis-server 172.16.8.14:7005 [cluster] ? ? ? ? ? ? ? ? ? ??
qasuser ? 48768 ?48593 ?0 13:56 pts/0 ? ?00:00:00 grep redis-server

節點3上執行(172.16.8.15)

su - qasuser
mkdir /app/redis-4.0.11/redis-cluster
cd /app/redis-4.0.11/redis-cluster
mkdir {7006,7007,7008}
cat <<EOF>./7006/redis.conf
port 7006
bind 172.16.8.15
daemonize yes
pidfile /var/run/redis_7006.pid
cluster-enabled yes
cluster-config-file nodes_7006.conf
cluster-node-timeout 10100
appendonly yes
EOF

cat <<EOF>./7007/redis.conf
port 7007
bind 172.16.8.15
daemonize yes
pidfile /var/run/redis_7007.pid
cluster-enabled yes
cluster-config-file nodes_7007.conf
cluster-node-timeout 10100
appendonly yes
EOF

cat <<EOF>./7008/redis.conf
port 7008
bind 172.16.8.15
daemonize yes
pidfile /var/run/redis_7008.pid
cluster-enabled yes
cluster-config-file nodes_7008.conf
cluster-node-timeout 10100
appendonly yes
EOF
for((i=6;i<=8;i++)); do /app/redis-4.0.11/src/redis-server /app/redis-4.0.11/redis-cluster/700$i/redis.conf; done

[qasuser@localhost redis-cluster]$ ps -ef | grep redis-server
qasuser ? 48101 ? ? ?1 ?0 11:24 ? ? ? ? ?00:00:18 /app/redis-4.0.11/src/redis-server 172.16.8.15:7006 [cluster] ? ? ? ? ? ? ? ? ? ??
qasuser ? 48103 ? ? ?1 ?0 11:24 ? ? ? ? ?00:00:18 /app/redis-4.0.11/src/redis-server 172.16.8.15:7007 [cluster] ? ? ? ? ? ? ? ? ? ??
qasuser ? 48105 ? ? ?1 ?0 11:24 ? ? ? ? ?00:00:18 /app/redis-4.0.11/src/redis-server 172.16.8.15:7008 [cluster] ? ? ? ? ? ? ? ? ? ??
qasuser ? 48548 ?48361 ?0 13:57 pts/0 ? ?00:00:00 grep redis-server

redis.conf的配置說明:
port 7000 ? ? ? ? ? ? ? ? ? ? ? ? ? ?配置集群的端口,分別第一組7000、7001、7002,第一組7003、7004、7005,第一組7006、7007、7008
bind 本機的IP ? ? ? ? ? ? ? ? ? ? ? ?這裏的默認配置是127.0.0.1改為內網ip。
daemonsize yes ? ? ? ? ? ? ? ? ? ? ? 允許redis在後臺運行
pidfile ?/var/run/redis_7000.pid ? ? 改成和端口一致
cluster-enabled ?yes ? ? ? ? ? ? ? ? 開啟集群 把註釋去掉
cluster-config-file node_7000.conf ? 集群的配置,和端口一致
cluster-node-timeout ?15000 ? ? ? ? ?請求超時,默認為15秒
appendonly ?yes ? ? ? ? ? ? ? ? ? ? ?aof日誌開啟,有需要就開啟,每一次寫操作都會記錄一條日誌。

創建集群


/app/redis-4.0.11/src/redis-trib.rb create --replicas 1 172.16.8.13:7000 172.16.8.13:7001 172.16.8.13:7002 172.16.8.14:7003 172.16.8.14:7004 172.16.8.14:7005 172.16.8.15:7006 172.16.8.15:7007 172.16.8.15:7008

[qasuser@localhost redis-cluster]$ /app/redis-4.0.11/src/redis-trib.rb create --replicas 1 172.16.8.13:7000 172.16.8.13:7001 172.16.8.13:7002 172.16.8.14:7003 172.16.8.14:7004 172.16.8.14:7005 172.16.8.15:7006 172.16.8.15:7007 172.16.8.15:7008
>>> Creating cluster
/usr/local/ruby/lib/ruby/gems/2.4.0/gems/redis-3.3.0/lib/redis/client.rb:459: warning: constant ::Fixnum is deprecated
>>> Performing hash slots allocation on 9 nodes...
Using 4 masters:
172.16.8.13:7000
172.16.8.14:7003
172.16.8.15:7006
172.16.8.13:7001
Adding replica 172.16.8.15:7007 to 172.16.8.13:7000
Adding replica 172.16.8.13:7002 to 172.16.8.14:7003
Adding replica 172.16.8.14:7005 to 172.16.8.15:7006
Adding replica 172.16.8.15:7008 to 172.16.8.13:7001
Adding replica 172.16.8.14:7004 to 172.16.8.13:7000
M: 6a4175a51250ed6a88b6caaf1667d055c6f226cd 172.16.8.13:7000
? ?slots:0-4095 (4096 slots) master
M: 3eeeb535acd80c239a09797cad611cb51ef76845 172.16.8.13:7001
? ?slots:12288-16383 (4096 slots) master
S: a63a2751d14ff5ba19bdb2ace3eab3a2617f0b87 172.16.8.13:7002
? ?replicates ecd312c581df995c352c67fc89f8a72993109df4
M: ecd312c581df995c352c67fc89f8a72993109df4 172.16.8.14:7003
? ?slots:4096-8191 (4096 slots) master
S: b7e4c7cf7da64114967a8a69acaa3aa4f809173f 172.16.8.14:7004
? ?replicates 6a4175a51250ed6a88b6caaf1667d055c6f226cd
S: 9a5700fd232689579cb48f810162ed0a27c28948 172.16.8.14:7005
? ?replicates 3f9239d43ad592947c7c842de7cce1814ab159d5
M: 3f9239d43ad592947c7c842de7cce1814ab159d5 172.16.8.15:7006
? ?slots:8192-12287 (4096 slots) master
S: a5ec006d814acce1bf18b77a767291f407fbb7fe 172.16.8.15:7007
? ?replicates 6a4175a51250ed6a88b6caaf1667d055c6f226cd
S: 95016481a4df1c9fbbc3c34e1e434627b266d144 172.16.8.15:7008
? ?replicates 3eeeb535acd80c239a09797cad611cb51ef76845
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 172.16.8.13:7000)
M: 6a4175a51250ed6a88b6caaf1667d055c6f226cd 172.16.8.13:7000
? ?slots:0-4095 (4096 slots) master
? ?2 additional replica(s)
M: 3f9239d43ad592947c7c842de7cce1814ab159d5 172.16.8.15:7006
? ?slots:8192-12287 (4096 slots) master
? ?1 additional replica(s)
S: a63a2751d14ff5ba19bdb2ace3eab3a2617f0b87 172.16.8.13:7002
? ?slots: (0 slots) slave
? ?replicates ecd312c581df995c352c67fc89f8a72993109df4
M: 3eeeb535acd80c239a09797cad611cb51ef76845 172.16.8.13:7001
? ?slots:12288-16383 (4096 slots) master
? ?1 additional replica(s)
S: 95016481a4df1c9fbbc3c34e1e434627b266d144 172.16.8.15:7008
? ?slots: (0 slots) slave
? ?replicates 3eeeb535acd80c239a09797cad611cb51ef76845
S: 9a5700fd232689579cb48f810162ed0a27c28948 172.16.8.14:7005
? ?slots: (0 slots) slave
? ?replicates 3f9239d43ad592947c7c842de7cce1814ab159d5
S: b7e4c7cf7da64114967a8a69acaa3aa4f809173f 172.16.8.14:7004
? ?slots: (0 slots) slave
? ?replicates 6a4175a51250ed6a88b6caaf1667d055c6f226cd
M: ecd312c581df995c352c67fc89f8a72993109df4 172.16.8.14:7003
? ?slots:4096-8191 (4096 slots) master
? ?1 additional replica(s)
S: a5ec006d814acce1bf18b77a767291f407fbb7fe 172.16.8.15:7007
? ?slots: (0 slots) slave
? ?replicates 6a4175a51250ed6a88b6caaf1667d055c6f226cd
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

集群驗證

/app/redis-4.0.11/src/redis-cli -h 172.16.8.13 -c -p 7000
[qasuser@localhost ~]$ /app/redis-4.0.11/src/redis-cli -h 172.16.8.13 -c -p 7000
172.16.8.14:7003> set name qas?
OK
172.16.8.14:7003> get name
"qas"

/app/redis-4.0.11/src/redis-cli -h 172.16.8.14 -c -p 7004
[qasuser@localhost redis-cluster]$ /app/redis-4.0.11/src/redis-cli -h 172.16.8.14 -c -p 7004
172.16.8.14:7004> get name
-> Redirected to slot [5798] located at 172.16.8.14:7003
"qas"
/app/redis-4.0.11/src/redis-cli -h 172.16.8.15 -c -p 7008

[qasuser@localhost redis-cluster]$ /app/redis-4.0.11/src/redis-cli -h 172.16.8.15 -c -p 7008
172.16.8.15:7008> get name
-> Redirected to slot [5798] located at 172.16.8.14:7003
"qas"
----------------------------------------------------------------------------------------------------------------------------
/app/redis-4.0.11/src/redis-trib.rb check 172.16.8.13:7000
[qasuser@localhost ~]$ /app/redis-4.0.11/src/redis-trib.rb check 172.16.8.13:7000
/usr/local/ruby/lib/ruby/gems/2.4.0/gems/redis-3.3.0/lib/redis/client.rb:459: warning: constant ::Fixnum is deprecated
>>> Performing Cluster Check (using node 172.16.8.13:7000)
M: 6a4175a51250ed6a88b6caaf1667d055c6f226cd 172.16.8.13:7000
? ?slots:0-4095 (4096 slots) master
? ?2 additional replica(s)
M: 3f9239d43ad592947c7c842de7cce1814ab159d5 172.16.8.15:7006
? ?slots:8192-12287 (4096 slots) master
? ?1 additional replica(s)
S: a63a2751d14ff5ba19bdb2ace3eab3a2617f0b87 172.16.8.13:7002
? ?slots: (0 slots) slave
? ?replicates ecd312c581df995c352c67fc89f8a72993109df4
M: 3eeeb535acd80c239a09797cad611cb51ef76845 172.16.8.13:7001
? ?slots:12288-16383 (4096 slots) master
? ?1 additional replica(s)
S: 95016481a4df1c9fbbc3c34e1e434627b266d144 172.16.8.15:7008
? ?slots: (0 slots) slave
? ?replicates 3eeeb535acd80c239a09797cad611cb51ef76845
S: 9a5700fd232689579cb48f810162ed0a27c28948 172.16.8.14:7005
? ?slots: (0 slots) slave
? ?replicates 3f9239d43ad592947c7c842de7cce1814ab159d5
S: b7e4c7cf7da64114967a8a69acaa3aa4f809173f 172.16.8.14:7004
? ?slots: (0 slots) slave
? ?replicates 6a4175a51250ed6a88b6caaf1667d055c6f226cd
M: ecd312c581df995c352c67fc89f8a72993109df4 172.16.8.14:7003
? ?slots:4096-8191 (4096 slots) master
? ?1 additional replica(s)
S: a5ec006d814acce1bf18b77a767291f407fbb7fe 172.16.8.15:7007
? ?slots: (0 slots) slave
? ?replicates 6a4175a51250ed6a88b6caaf1667d055c6f226cd
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

列出集群節點

/app/redis-4.0.11/src/redis-cli -h 172.16.8.13 -c -p 7000
[qasuser@localhost ~]$ /app/redis-4.0.11/src/redis-cli -h 172.16.8.13 -c -p 7000
172.16.8.13:7000> cluster nodes
3f9239d43ad592947c7c842de7cce1814ab159d5 172.16.8.15:7006@17006 master - 0 1536205999000 7 connected 8192-12287
a63a2751d14ff5ba19bdb2ace3eab3a2617f0b87 172.16.8.13:7002@17002 slave ecd312c581df995c352c67fc89f8a72993109df4 0 1536205998105 4 connected
3eeeb535acd80c239a09797cad611cb51ef76845 172.16.8.13:7001@17001 master - 0 1536205999000 2 connected 12288-16383
95016481a4df1c9fbbc3c34e1e434627b266d144 172.16.8.15:7008@17008 slave 3eeeb535acd80c239a09797cad611cb51ef76845 0 1536205999000 9 connected
9a5700fd232689579cb48f810162ed0a27c28948 172.16.8.14:7005@17005 slave 3f9239d43ad592947c7c842de7cce1814ab159d5 0 1536206000136 7 connected
6a4175a51250ed6a88b6caaf1667d055c6f226cd 172.16.8.13:7000@17000 myself,master - 0 1536205997000 1 connected 0-4095
b7e4c7cf7da64114967a8a69acaa3aa4f809173f 172.16.8.14:7004@17004 slave 6a4175a51250ed6a88b6caaf1667d055c6f226cd 0 1536205999121 5 connected
ecd312c581df995c352c67fc89f8a72993109df4 172.16.8.14:7003@17003 master - 0 1536205997000 4 connected 4096-8191
a5ec006d814acce1bf18b77a767291f407fbb7fe 172.16.8.15:7007@17007 slave 6a4175a51250ed6a88b6caaf1667d055c6f226cd 0 1536206001139 8 connected

集群信息

172.16.8.13:7000> ?cluster info
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_pfail:0
cluster_slots_fail:0
cluster_known_nodes:9
cluster_size:4
cluster_current_epoch:9
cluster_my_epoch:1
cluster_stats_messages_ping_sent:1443
cluster_stats_messages_pong_sent:1494
cluster_stats_messages_sent:2937
cluster_stats_messages_ping_received:1486
cluster_stats_messages_pong_received:1443
cluster_stats_messages_meet_received:8
cluster_stats_messages_received:2937

關閉集群
推薦做法:

[qasuser@localhost redis-cluster]$ pkill redis
[qasuser@localhost redis-cluster]$ pkill redis
[qasuser@localhost redis-cluster]$ pkill redis

??
或者循環節點逐個關閉

[qasuser@localhost redis-cluster]$ for((i=0;i<=2;i++)); do /app/redis-4.0.11/src/redis-cli -c -h 172.16.8.13 -p 700$i shutdown; done
[qasuser@localhost redis-cluster]$ for((i=3;i<=5;i++)); do /app/redis-4.0.11/src/redis-cli -c -h 172.16.8.14 -p 700$i shutdown; done
[qasuser@localhost redis-cluster]$ for((i=6;i<=8;i++)); do /app/redis-4.0.11/src/redis-cli -c -h 172.16.8.15 -p 700$i shutdown; done

問題解決:

/usr/local/ruby/lib/ruby/gems/2.4.0/gems/redis-3.3.0/lib/redis/client.rb:459: warning: constant ::Fixnum is deprecated
是因為 版本過低導致 ?gem 升級redis-4.0.2.gem
步驟如下:
gem uninstal redis
gem install -l redis-4.0.2.gem

centos6.x redis-cluster集群離線安裝