设为首页 收藏本站
查看: 951|回复: 0

[经验分享] Redis 3.0原生集群部署

[复制链接]

尚未签到

发表于 2018-11-2 13:08:13 | 显示全部楼层 |阅读模式
  下载Redis 3.x:前往下面地址选择合适的版本下载
  Redis下载
wget http://download.redis.io/releases/redis-3.2.0.tar.gz  安装Redis 3.x
tar -xvzf redis-3.2.0.tar.gz  
cd redis-3.2.0
  
yum -y install gcc gcc-c++
  
make
  
make PREFIX=/usr/local/redis install
  启动6个Redis节点(实际生产环境中最好使用不同机器)
  创建目录
mkdir /usr/local/{redis_7001,redis_7002,redis_7003,redis_7004,redis_7005,redis_7006}  
cp redis.conf /usr/local/redis_7001
  修改配置文件:/usr/local/redis_7001/redis.conf
# 打开后台运行  
daemonize yes
  
# 指定PID文件
  
pidfile /var/run/redis_7001.pid
  
# 指定监听端口
  
port 7000
  
# 修改监听地址
  
bind 0.0.0.0
  
# 开启集群
  
cluster-enabled yes
  
# 指定集群配置文件
  
cluster-config-file nodes.conf
  
# 指定集群节点超时时间
  
cluster-node-timeout 5000
  将修改好的redis.conf复制到其它创建的目录,只需要修改PID文件名和监听端口即可
  分别启动6个节点
# 必须切换到配置文件所有目录执行  
cd /usr/local/redis_7001/
  
/usr/local/redis/bin/redis-server redis.conf
  
export PATH=$PATH:/usr/local/redis/bin
  将6个Redis节点组成集群
  在其中一个节点安装ruby,默认rpm包安装版本过低,需要>=2.2.2的版本
  ruby下载
# 安装ruby  
tar -xvzf ruby-2.3.7.tar.gz
  
cd ruby-2.3.7
  
./configure --prefix=/usr/local/ruby
  
make
  
make install
  
export PATH=$PATH:/usr/local/ruby/bin
  
# 安装zlib扩展,在ruby源码包目录下执行以下命令
  
cd ext/zlib/
  
ruby extconf.rb
  
make
  
make install
  
# 安装openssl扩展,在ruby源码包目录下执行以下命令
  
cd ext/openssl/
  
yum -y install openssl-devel
  
ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib
  
ln -s /usr/local/src/ruby-2.3.7/include /
  
make
  
make install
  在安装了ruby的节点上面执行以下命令,注意IP:PORT一定不要使用127.0.0.1:PORT,一定得使用客户端可以访问的IP地址
# 需要输入yes确认  
/usr/local/src/redis-3.2.0/src/redis-trib.rb create --replicas 1 172.16.10.10:7001 172.16.10.10:7002 172.16.10.10:7003 172.16.10.10:7004 172.16.10.10:7005 172.16.10.10:7006
  连接集群
# 在任意节点执行,可连接至任何一个节点  
redis-cli -c -h 172.16.10.10 -p 7001
  集群管理
  查看集群状态
redis-cli -h 172.16.10.10 -p 7001 cluster nodes  
# 或者
  
/usr/local/src/redis-3.2.0/src/redis-trib.rb check 172.16.10.10:7001
  删除节点
  删除一个节点,最后面跟节点的ID,可以通过查看集群状态获取某个节点的ID,但是在移除主节点的时候需要确保主节点为空,如果不是空的需要将这个节点的数据重新分片到其它主节点,被移除的主节点将作为一个从节点存在
/usr/local/src/redis-3.2.0/src/redis-trib.rb del-node 172.16.10.10:7001 1110cc10ec93ba7bfd409af0a5ade884ac361551  新增主节点
  新增加主节点,172.16.10.10:7007代表新的节点,172.16.10.10:7001代表集群中任何一节点,新增加的节点默认为master节点,但没有分配哈希槽 ,这时候还无法正常工作,只需要使用redis-trib.rb程序移动一些哈希槽到新节点,这时候就可以正常工作了
/usr/local/src/redis-3.2.0/src/redis-trib.rb add-node 172.16.10.10:7007 172.16.10.10:7001  新增加从节点
  方法1:新增一个从节点,172.16.10.10:7007代表新的节点,172.16.10.10:7001代表集群中任何一节点,这时候新增加的从节点为任意一个主节点的从
/usr/local/src/redis-3.2.0/src/redis-trib.rb add-node --slave 172.16.10.10:7007 172.16.10.10:7001  方法2:新增一个从节点并指定主节点为1110cc10ec93ba7bfd409af0a5ade884ac361551,172.16.10.10:7007代表新的节点
/usr/local/src/redis-3.2.0/src/redis-trib.rb add-node --slave --master-id 1110cc10ec93ba7bfd409af0a5ade884ac361551 172.16.10.10:7007 172.16.10.10:7001  方法3:
  通过Redis命令行添加,首先需要按新增加一个主节点的命令执行,但不要分配哈希槽,直接进入到新节点的Redis命令行里面执行以下命令
# 以下命令表示将当前节点作为1110cc10ec93ba7bfd409af0a5ade884ac361551的从节点,这种方法也可以改变一个从节点为另外一个主节点的从节点  
172.16.10.10:7007> cluster replicate 1110cc10ec93ba7bfd409af0a5ade884ac361551
  集群测试
  正常情况下集群中只要有一半的节点存活那么集群都可以正常提供工作,测试可以尝试宕掉集群中任意三台机器再对数据进行读写操作看下是否正常,并使用命令观察集群状态变化
  扩展知识
  集群环境中配置Redis访问需要密码认证
  在集群所有节点的配置文件中增加以下内容
# 访问Redis的密码,需要将pssword改为自己的密码  
requirepass password
  
# 集群之间通讯的密码,因为配置了的访问密码,所以这里的密码和requirepass的密码一样
  
masterauth password
  修改好后重启所有节点,这时候再使用前面的查看集群状态时无法查看,因为需要认证
  redis-cli查看方法如下:
# -a后面跟密码  
redis-cli -h 172.16.10.10 -p 7001 -a password cluster nodes
  redis-trib.rb查看方法如下:
  修改 /usr/local/ruby/lib/ruby/gems/2.3.0/gems/redis-4.0.1/lib/redis/client.rb,修改完成后再执行原来的命令查看
# 将password后面的值改为配置的密码,注意加双引号  
    DEFAULTS = {
  
      :url => lambda { ENV["REDIS_URL"] },
  
      :scheme => "redis",
  
      :host => "127.0.0.1",
  
      :port => 6379,
  
      :path => nil,
  
      :timeout => 5.0,
  
      :password => nil,
  
      :db => 0,
  
      :driver => nil,
  
      :id => nil,
  
      :tcp_keepalive => 0,
  
      :reconnect_attempts => 1,
  
      :inherit_socket => false
  
    }
  如何进入redis命令行
# 指定-a选项并跟上密码  
redis-cli -c -h 172.16.10.10 -p 7001 -a password
  Redis集群教程
  Redis集群规范



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-629877-1-1.html 上篇帖子: Redis培训简介 下篇帖子: Docker运行Redis
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表