Redis-liunx 集群搭建部署
一、 环境的准备
3台Liuux7以上的服务器,关闭selinux,关闭防火墙
IP配置:主从节点的端口是在配置的时候自动分配的。
私网IP | 主节点端口 | 从节点端口 |
---|---|---|
192.168.1.3 | :52113 | :52177 |
192.168.1.1 | :52113 | :52177 |
192.168.1.7 | :52113 | :52177 |
二、 单机节点的安装搭建(3台服务器都需要完成)
a) 下载redis安装包
地址:http://download.redis.io/releases/redis-4.0.11.tar.gz
或 wget http://download.redis.io/releases/redis-4.0.11.tar.gz
b) 上传压缩包到root的家目录下
如果是在linux里直接wget 就不用上传了
c) 解压redis压缩包
tar xf redis-4.0.11.tar.gz
cd redis-4.0.11
make
make install
至此,redis的单机节点就搭建完成了。3台需要都完成上面的安装
三、 多实例的配置,3台服务器都需要完成
1、 在/opt/下创建两个目录
cd /opt
mkdir -p 6379 6380
2、精简化配置文件
cp redis.conf redis.conf.default
grep -Ev "^$|#" /root/redis-4.0.11/redis.conf.default > redis.conf
3、把redis的配置文件拷贝那两个目录下
cp /root/redis-4.0.11/redis.conf /opt/6379
cp /root/redis-4.0.11/redis.conf /opt/6380
4、修改配置文件(红色是需要修改和增加的)
6379的:
[root@iZ64571ujz2wi0Z 6379]# vim redis.conf
bind 0.0.0.0
protected-mode yes
port 52113
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/var/log/redis/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/6379
slave-serve-stale-data 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 no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
lua-time-limit 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
6380的
[root@iZ64571ujz2wi0Z 6380]# vim redis.conf
bind 0.0.0.0
protected-mode yes
port 52113
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
supervised no
pidfile /var/run/redis_6380.pid
loglevel notice
logfile "/var/log/redis/redis_6380.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/6380
slave-serve-stale-data 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 no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
lua-time-limit 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
全部配置完成后,就要开始搭建集群了。
四、 集群的搭建
a) 安装ruby插件(3台服务器都装)
yum install ruby rubygems -y
修改ruby源地址
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
b) ruby 版本过低问题解决
1.如果没有安装curl的要先安装curl
sudo yum install curl
2.安装rvm(直接输入以下命令即可)
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
curl -L get.rvm.io | bash -s stable
source /usr/local/rvm/scripts/rvm
3.安装ruby新版本
rvm install 2.3.3
4、默认使用新版本
rvm use 2.3.3 --default
5、卸载旧版本
rvm remove 2.0.0
6、再次查看ruby版本
ruby -v
c) gem install redis -v 4.0.1
完成后,启动所有的实例(3台服务器都启动)
redis-server /opt/6379/redis.conf
redis-server /opt/6380/redis.conf
echo “
redis-server /opt/6379/redis.conf
redis-server /opt/6380/redis.conf” >> /etc/rc.local #加入到开机自启动中
五、 创建集群
~/redis-4.0.11/src/redis-trib.rb create --replicas 1 192.168.1.1:52113 192.168.1.1:52177 192.168.1.3:52113 192.168.1.3:52177 192.168.1.7:52113 192.168.1.7:52177
至此:集群就创建成功了。
六、 测试:redis-cli –h 192.168.1.1 -c –p 52113
Set foo bar
get foo
重新分片
~/redis-4.0.11/src/redis-trib.rb reshard 192.168.1.1:52113
七、集群管理
集群状态
redis-cli -p 52113 cluster nodes 可查看整个集群的状态
redis-cli -p 52113 cluster nodes|grep master 查看主节点状态
增加新的节点
~/redis-4.0.11/src/redis-trib.rb add-node 192.168.1.1:6381 192.168.1.1:6379
变成某实例的从
进入这个节点
redis-cli 192.168.1.1:6381
redis 192.168.1.1:6381> cluster replicate
删除一个节点
~/redis-4.0.11/src/redis-trib.rb ip:port ‘<node-id>’
删除master节点之前首先要使用reshard移除master的全部slot,然后再删除当前节点。
密码设置需要在集群搭建完成后手工添加 每一个节点都要添加,密码必须一样
方式:进入各个实例进行设置:
redis-cli -c -p 52113 -h 192.168.1.1
config set masterauth passwd123
config set requirepass passwd123
auth passwd123
config rewrite
之后分别使用./redis-cli -c -p 7001,./redis-cli -c -p 7002…..命令给各节点设置上密码。
注意:各个节点密码都必须一致,否则Redirected就会失败, 推荐这种方式,这种方式会把密码写入到redis.conf里面去,且不用重启。
用方式二修改密码,./redis-trib.rb check 10.104.111.174:6379执行时可能会报[ERR] Sorry, can't connect to node 10.104.111.174:6379,因为6379的redis.conf没找到密码配置。
2、设置密码之后如果需要使用redis-trib.rb的各种命令 如:./redis-trib.rb check 127.0.0.1:7000,则会报错ERR] Sorry, can’t connect to node 127.0.0.1:7000 解决办法:vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.1/lib/redis/client.rb,然后修改passord
class Client
DEFAULTS = {
:url => lambda { ENV["REDIS_URL"] },
:scheme => "redis",
:host => "127.0.0.1",
:port => 6379,
:path => nil,
:timeout => 5.0,
:password => "passwd123",
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:inherit_socket => false
}
注意:client.rb路径可以通过find命令查找:find / -name 'client.rb'带密码访问集群(在连接集群的时候必须要直接加上-a和-c访问,否则,在写入键值的时候可能会报错)
./redis-cli -c -p 52113 -h 192.168.1.1-a passwd123