Redis集群安装
1集群机器分布
192.168.1.133 redis1
192.168.1.134 redis2
192.168.1.135 redis3
2 免密登录
ssh-keygen
ssh-copy-id 192.168.1.133
ssh-copy-id 192.168.1.134
ssh-copy-id 192.168.1.135
3 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
4设置yum源
这里添加阿里源
cd /etc/yum.repos.d/
wget https://mirrors.aliyun.com/repo/Centos-7.repo
wget https://mirrors.aliyun.com/repo/epel-7.repo
5修改系统参数
vi /etc/security/limits.conf
* soft nofile 65535
* hard nofile 655350
* soft nproc 65535
* hard nproc 655350
安装依赖
yum install gcc make tcl –y
yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel make bzip2 autoconf automake libtool bison sqlite-devel iconv-devel
6 安装redis
mkdir -p /opt/haizhi/redis
cd /opt/haizhi/redis/
wget http://download.redis.io/releases/redis-4.0.6.tar.gz
tar zxvf redis-4.0.6.tar.gz
cd redis-4.0.6/ #编译安装完成后会生成bin目录
make & make PREFIX=/opt/haizhi/redis install
cp -a /opt/haizhi/redis/redis-4.0.6/src/redis-trib.rb /opt/haizhi/redis/bin/
#上面是复制集群命令 到bin目录
注意:如果make出错 使用make MALLOC=libc
7 创建集群需要的目录和配置
创建3个实例目录
cd /opt/haizhi/redis/
mkdir -p cluster-6379/{conf,data,log,pid}
mkdir -p cluster-6380/{conf,data,log,pid}
mkdir -p cluster-6381/{conf,data,log,pid}
为每个实例创建配置文件(以6379为例)
[root@localhost redis]# cat cluster-6379/conf/redis_6379.conf
bind 0.0.0.0
protected-mode yes
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /opt/haizhi/redis/cluster-6379/conf/redis_6379.pid
loglevel notice
logfile "/opt/haizhi/redis/cluster-6379/log/redis_6379.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir /opt/haizhi/redis/cluster-6379/data
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
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
aof-use-rdb-preamble no
lua-time-limit 5000
cluster-enabled yes
cluster-config-file /opt/haizhi/redis/cluster-6379/conf/nodes-6379.conf
cluster-node-timeout 5000
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
其他实例只需修改6379为6380 6381 即可使用
8 启动各实例
./redis-server /opt/haizhi/redis/cluster-6379/conf/redis_6379.conf
./redis-server /opt/haizhi/redis/cluster-6380/conf/redis_6380.conf
./redis-server /opt/haizhi/redis/cluster-6381/conf/redis_6381.conf
[root@localhost redis]# netstat -lnupt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 17736/./redis-serve
tcp 0 0 0.0.0.0:6380 0.0.0.0:* LISTEN 17741/./redis-serve
tcp 0 0 0.0.0.0:6381 0.0.0.0:* LISTEN 17746/./redis-serve
以上步骤 三个节点都要执行安装操作
安装启动后再选一台机器设置集群
9 设置集群(选一台机器安装)
————————————不联网安装——————————————
9.1上传如下安装包
wget https://rubygems.org/rubygems/rubygems-2.7.8.tgz
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz
wget https://rubygems.global.ssl.fastly.net/gems/redis-3.2.2.gem
[root@test install_redis]# ll
-rw-r--r-- 1 root root 75776 2月 2 2016 redis-3.2.2.gem
-rw-r--r-- 1 root root 1723533 4月 25 2018 redis-4.0.6.tar.gz
-rw-r--r-- 1 root root 15834941 1月 25 2018 ruby-2.5.0.tar.gz
-rw-r--r-- 1 root root 920781 11月 19 11:24 rubygems-2.7.8.tgz
9.2 安装ruby环境
[root@test ]# mkdir /usr/local/ruby
[root@test ]# cd /usr/local/ruby
[root@test ruby]# cp /home/install_redis/ruby-2.5.0.tar.gz .
[root@test ruby]# tar -zxf ruby-2.5.0.tar.gz
[root@test ruby]# cd ruby-2.5.0/
[root@test ruby-2.5.0]# ./configure
[root@test ruby-2.5.0]# make && make install
[root@test ruby]# ruby -v
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
9.3 安装rubygems
[root@test ]# mkdir /usr/local/rubygems
[root@test ]# cd /usr/local/rubygems
[root@test rubygems]#cp /home/install_redis/rubygems-2.7.8.tgz .
[root@test rubygems]#tar zxf rubygems-2.7.8.tgz
[root@test rubygems]#cd rubygems-2.7.8/
[root@test rubygems-2.7.8]#ruby setup.rb
9.4 安装ruby-redis插件
[root@test ]# cd /home/install_redis/
[root@test ]# gem install redis-3.2.2.gem
上面完成后就可以执行第10步创建集群了
————————-联网安装—-———————————————-
redis官方提供了redis-trib.rb工具,但是在使用之前需要安装ruby,以及redis和ruby连接
参考https://blog.csdn.net/woxingwosu0100/article/details/77840528
9.1安装工具依赖环境(前面安装过)
yum install -y gcc-c++ gcc* patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison sqlite-devel iconv-devel
9.2 安装rvm(ruby管理工具)
执行下面语句
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
或者
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
然后
执行 curl -L get.rvm.io | bash -s stable
#如果上面的连接失败,可以尝试:
curl -Lhttps://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer| bash -s stable
执行 source /usr/local/rvm/scripts/rvm
rvm install 2.3.3
[root@server bin]# ruby --version
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-linux]
最后执行 gem install redis 安装
————————————————————————————-
10 创建集群
cd /opt/haizhi/redis/bin
./redis-trib.rb create --replicas 2 192.168.1.133:6379 192.168.1.133:6380 192.168.1.133:6381 192.168.1.134:6379 192.168.1.134:6380 192.168.1.134:6381 192.168.1.135:6379 192.168.1.135:6380 192.168.1.135:6381
[root@server bin]# ./redis-trib.rb create --replicas 2 192.168.1.133:6379 192.168.1.133:6380 192.168.1.133:6381 192.168.1.134:6379 192.168.1.134:6380 192.168.1.134:6381 192.168.1.135:6379 192.168.1.135:6380 192.168.1.135:6381
>>> Creating cluster
>>> Performing hash slots allocation on 9 nodes...
Using 3 masters:
192.168.1.133:6379
192.168.1.134:6379
192.168.1.135:6379
Adding replica 192.168.1.134:6380 to 192.168.1.133:6379
Adding replica 192.168.1.135:6380 to 192.168.1.133:6379
Adding replica 192.168.1.133:6380 to 192.168.1.134:6379
Adding replica 192.168.1.133:6381 to 192.168.1.134:6379
Adding replica 192.168.1.134:6381 to 192.168.1.135:6379
Adding replica 192.168.1.135:6381 to 192.168.1.135:6379
M: 19fd62cb41e794f6478eff3d209d7c9a8587f45e 192.168.1.133:6379
slots:0-5460 (5461 slots) master
S: b5a28ba32c3f96bfad569d1a12fdc84068882bed 192.168.1.133:6380
replicates 4f0f85289ad961682e995b3f9e547b16e3251268
S: 8fef8364429c82e7f5ddf2c6888a98651495a66f 192.168.1.133:6381
replicates 4f0f85289ad961682e995b3f9e547b16e3251268
M: 4f0f85289ad961682e995b3f9e547b16e3251268 192.168.1.134:6379
slots:5461-10922 (5462 slots) master
S: efc9d969a0c86ae8c30b1b1e555523234d9c4d61 192.168.1.134:6380
replicates 19fd62cb41e794f6478eff3d209d7c9a8587f45e
S: 6ad292b2129ed62ec0d49c079f38e4697161da14 192.168.1.134:6381
replicates 8b3e3748a106b2bf0483dc5bfee5f378edc7f933
M: 8b3e3748a106b2bf0483dc5bfee5f378edc7f933 192.168.1.135:6379
slots:10923-16383 (5461 slots) master
S: 06e899228e65b2b6a16fb38968699d853b71c851 192.168.1.135:6380
replicates 19fd62cb41e794f6478eff3d209d7c9a8587f45e
S: 7bf167e33b2060506f0945d0945d4e029ad95606 192.168.1.135:6381
replicates 8b3e3748a106b2bf0483dc5bfee5f378edc7f933
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 192.168.1.133:6379)
M: 19fd62cb41e794f6478eff3d209d7c9a8587f45e 192.168.1.133:6379
slots:0-5460 (5461 slots) master
2 additional replica(s)
S: 6ad292b2129ed62ec0d49c079f38e4697161da14 192.168.1.134:6381
slots: (0 slots) slave
replicates 8b3e3748a106b2bf0483dc5bfee5f378edc7f933
M: 8b3e3748a106b2bf0483dc5bfee5f378edc7f933 192.168.1.135:6379
slots:10923-16383 (5461 slots) master
2 additional replica(s)
S: efc9d969a0c86ae8c30b1b1e555523234d9c4d61 192.168.1.134:6380
slots: (0 slots) slave
replicates 19fd62cb41e794f6478eff3d209d7c9a8587f45e
S: b5a28ba32c3f96bfad569d1a12fdc84068882bed 192.168.1.133:6380
slots: (0 slots) slave
replicates 4f0f85289ad961682e995b3f9e547b16e3251268
S: 7bf167e33b2060506f0945d0945d4e029ad95606 192.168.1.135:6381
slots: (0 slots) slave
replicates 8b3e3748a106b2bf0483dc5bfee5f378edc7f933
M: 4f0f85289ad961682e995b3f9e547b16e3251268 192.168.1.134:6379
slots:5461-10922 (5462 slots) master
2 additional replica(s)
S: 06e899228e65b2b6a16fb38968699d853b71c851 192.168.1.135:6380
slots: (0 slots) slave
replicates 19fd62cb41e794f6478eff3d209d7c9a8587f45e
S: 8fef8364429c82e7f5ddf2c6888a98651495a66f 192.168.1.133:6381
slots: (0 slots) slave
replicates 4f0f85289ad961682e995b3f9e547b16e3251268
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
查看集群
[root@localhost bin]# ./redis-cli -c -p 6379
127.0.0.1:6379> CLUSTER nodes
4f0f85289ad961682e995b3f9e547b16e3251268 192.168.1.134:6379@16379 myself,master - 0 1534227574000 4 connected 5461-10922
7bf167e33b2060506f0945d0945d4e029ad95606 192.168.1.135:6381@16381 slave 8b3e3748a106b2bf0483dc5bfee5f378edc7f933 0 1534227576097 9 connected
efc9d969a0c86ae8c30b1b1e555523234d9c4d61 192.168.1.134:6380@16380 slave 19fd62cb41e794f6478eff3d209d7c9a8587f45e 0 1534227575595 5 connected
6ad292b2129ed62ec0d49c079f38e4697161da14 192.168.1.134:6381@16381 slave 8b3e3748a106b2bf0483dc5bfee5f378edc7f933 0 1534227575094 7 connected
06e899228e65b2b6a16fb38968699d853b71c851 192.168.1.135:6380@16380 slave 19fd62cb41e794f6478eff3d209d7c9a8587f45e 0 1534227575595 8 connected
8b3e3748a106b2bf0483dc5bfee5f378edc7f933 192.168.1.135:6379@16379 master - 0 1534227576000 7 connected 10923-16383
8fef8364429c82e7f5ddf2c6888a98651495a66f 192.168.1.133:6381@16381 slave 4f0f85289ad961682e995b3f9e547b16e3251268 0 1534227575000 4 connected
19fd62cb41e794f6478eff3d209d7c9a8587f45e 192.168.1.133:6379@16379 master - 0 1534227575000 1 connected 0-5460
b5a28ba32c3f96bfad569d1a12fdc84068882bed 192.168.1.133:6380@16380 slave 4f0f85289ad961682e995b3f9e547b16e3251268 0 1534227575595 4 connected
127.0.0.1:6379>
转载于:https://blog.51cto.com/superleedo/2319154