前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CentOS7下安装Redis-4.0.11版本分片集群

CentOS7下安装Redis-4.0.11版本分片集群

作者头像
用户5766185
发布2019-07-08 14:54:41
8270
发布2019-07-08 14:54:41
举报
文章被收录于专栏:运维架构之路

一、 环境的准备

3台Liuux7以上的服务器,关闭selinux,关闭防火墙

IP配置:主从节点的端口是在配置的时候自动分配的

注意:redis分片集群最少需要六个节点,如果机器不够配置2台服务器,每台3个节点

私网IP

主节点端口

从节点端口

192.168.1.3

:52113

:52177

192.168.1.1

:52113

:52177

192.168.1.7

:52113

:52177

二、 单机节点的安装搭建(3台服务器都需要完成)

1、 下载redis安装包

地址:http://download.redis.io/releases/redis-4.0.11.tar.gz

或 wget http://download.redis.io/releases/redis-4.0.11.tar.gz

2、 上传压缩包到root的家目录下

如果是在linux里直接wget 就不用上传了

3、 解压redis压缩包

代码语言:javascript
复制
    tar xf redis-4.0.11.tar.gz
    cd redis-4.0.11
    make
    make install

至此,redis的单机节点就搭建完成了。3台需要都完成上面的安装

三、 多实例的配置,3台服务器都需要完成

1、 在/opt/下创建两个目录

代码语言:javascript
复制
    cd /opt
    mkdir -p 6379 6380

2、 精简化配置文件

代码语言:javascript
复制
  cp redis.conf redis.conf.default
  grep -Ev "^$|#" /root/redis-4.0.11/redis.conf.default > redis.conf

3、 把redis的配置文件拷贝那两个目录下

代码语言:javascript
复制
  cp /root/redis-4.0.11/redis.conf /opt/6379
  cp /root/redis-4.0.11/redis.conf /opt/6380

4、修改配置文件(红色是需要修改和增加的)

52113端口配置文件的:

代码语言:javascript
复制
           [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 30
            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
            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

52177端口配置文件的:

代码语言:javascript
复制
           [root@iZ64571ujz2wi0Z 6379]# vim redis.conf
            bind 0.0.0.0
            protected-mode yes
            port 52177
            cluster-enabled yes
            cluster-config-file nodes.conf
            cluster-node-timeout 5000
            tcp-backlog 511
            timeout 30
            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
            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

全部配置完成后,就要开始搭建集群了。

四、 集群的搭建

1、 安装ruby插件(3台服务器都装)

代码语言:javascript
复制
yum install ruby rubygems -y

修改ruby源地址

代码语言:javascript
复制
gem sources--add https://gems.ruby-china.com/ --remove https://rubygems.org/

2、 ruby 版本过低问题解决

a.如果没有安装curl的要先安装curl

代码语言:javascript
复制
    sudo yum install curl

b.安装rvm(直接输入以下命令即可)

代码语言:javascript
复制
    gpg2 --keyserver hkp://keys.gnupg.net --recv-keys D39DC0E3
    curl -L get.rvm.io | bash -s stable
    source /usr/local/rvm/scripts/rvm

c.安装ruby新版本

代码语言:javascript
复制
  rvm install 2.3.3

d、默认使用新版本

代码语言:javascript
复制
 rvm use 2.3.3 --default

e、卸载旧版本

代码语言:javascript
复制
    rvm remove 2.0.0

f、再次查看ruby版本

代码语言:javascript
复制
    ruby -v

3、 gem install redis -v 4.0.1

完成后,启动所有的实例(3台服务器都启动)

代码语言:javascript
复制
    redis-server /opt/6379/redis.conf
    redis-server /opt/6380/redis.conf

4、加入到开机自启动中

代码语言:javascript
复制
echo "
redis-server /opt/6379/redis.conf
redis-server /opt/6380/redis.conf" >> /etc/rc.local

五、 创建集群

代码语言:javascript
复制
~/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

六、 测试

代码语言:javascript
复制
redis-cli –h 192.168.1.1 -c –p 52113
Set foo bar
get foo

重新分片

代码语言:javascript
复制
~/redis-4.0.11/src/redis-trib.rb reshard 192.168.1.1:52113

七、集群管理

集群状态

代码语言:javascript
复制
   redis-cli -p 52113 cluster nodes 可查看整个集群的状态
   redis-cli -p 52113 cluster nodes|grep master 查看主节点状态

增加新的节点

代码语言:javascript
复制
~/redis-4.0.11/src/redis-trib.rb add-node 192.168.1.1:6381 192.168.1.1:52113

变成某实例的从

进入这个节点

代码语言:javascript
复制
    redis-cli  192.168.1.1:6381
    redis  192.168.1.1:6381> cluster replicate

删除一个节点

代码语言:javascript
复制
~/redis-4.0.11/src/redis-trib.rb ip:port ‘<node-id>’

删除master节点之前首先要使用reshard移除master的全部slot,然后再删除当前节点。

密码设置需要在集群搭建完成后手工添加 每一个节点都要添加,密码必须一样

八、redis集群密码设置

方式一:进入各个实例进行设置:

代码语言:javascript
复制
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 52113,./redis-cli -c -p 52177…..命令给各节点设置上密码。

注意:各个节点密码都必须一致,否则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没找到密码配置。

设置密码之后如果需要使用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

代码语言:javascript
复制
class Client
    DEFAULTS = {
      :url => lambda { ENV["REDIS_URL"] },
      :scheme => "redis",
      :host => "127.0.0.1",
      :port => 52113,
      :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访问,否则,在写入键值的时候可能会报错)

代码语言:javascript
复制
./redis-cli -c -p 52113 -h 192.168.1.1 -a passwd123
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维架构之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 八、redis集群密码设置
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档