bco 发表于 2018-11-4 12:27:54

redis环境搭建

  因为工作环境中有redis,所以对redis进行了学习,当然首先就是从搭建环境开始,下面是我对于搭建redis环境的记录。
  系统是SuSE 11 sp2,
  软件环境如下所示:
  linux-svnfile:/home/apps/redis # ls
  redis-3.0.0.gem   ruby-1.9.2-p290.tar.gzzlib-1.2.7.tar.gz
  redis-3.0.0.tar.gzrubygems-2.4.6.tgz
  redis.conf          zlib-1.2.6.tar.gz
  安装基础环境:
  linux-svnfile:/home/apps/redis # tar -zxf zlib-1.2.6.tar.gz -C /usr/local/src
  linux-svnfile:/usr/local/src/zlib-1.2.6 # ./configure --prefix=/usr/local/zlib
  linux-svnfile:/usr/local/src/zlib-1.2.6 # make && make install
  linux-svnfile:/home/apps/redis # tar -zxf ruby-1.9.2-p290.tar.gz -C /usr/local/src
  linux-svnfile:/usr/local/src/ruby-1.9.2-p290 # ./configure --prefix=/usr/local/ruby
  linux-svnfile:/usr/local/src/ruby-1.9.2-p290 # make && make install
  linux-svnfile:/usr/local/ruby # ln -s /usr/local/ruby/bin/ruby /usr/local/bin
  linux-svnfile:/home/apps/redis # tar xf rubygems-2.4.6.tgz -C /usr/local/src
  linux-svnfile:/usr/local/src # mv rubygems-2.4.6 ../gem
  linux-svnfile:/usr/local/gem # ruby setup.rb
  linux-svnfile:/usr/local/gem # cp bin/gem /usr/local/bin/
  linux-svnfile:/home/apps/redis # gem install -l redis-3.0.0.gem
  Successfully installed redis-3.0.0
  Installing ri documentation for redis-3.0.0
  Done installing documentation for redis after 0 seconds
  1 gem installed
  linux-svnfile:/home/apps/redis # tar -zxf redis-3.0.0.tar.gz -C /usr/local/src
  linux-svnfile:/usr/local/src # mv redis-3.0.0 ../redis
  linux-svnfile:/usr/local/redis # make
  至此基础环境搭建完成
  下面进行集群的搭建
  linux-svnfile:/usr/local/redis # cp src/redis-server /usr/local/bin/
  linux-svnfile:/usr/local/redis # cp src/redis-cli /usr/local/bin/
  linux-svnfile:/usr/local/redis # cp src/redis-trib.rb /usr/local/bin
  linux-svnfile:/usr/local/redis # mkdir -p /usr/local/cluster/{7000..7005}
  linux-svnfile:/usr/local/redis # vi redis.conf
  daemonize yes
  port 7000
  cluster-enabled yes
  cluster-config-file nodes.conf
  cluster-node-timeout 5000
  appendonly yes
  linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7000
  linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7001
  linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7002
  linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7003
  linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7004
  linux-svnfile:/usr/local/redis # cp redis.conf ../cluster/7005
  这里需要注意的是文件名对应文件里端口的配置,例如7001文件下的port参数需要改为7001,其他一样做修改。
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7000/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7001/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7002/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7003/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7004/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7005/redis.conf
  linux-svnfile:/usr/local/redis # ps -ef | grep redis
  root   15590   10 18:52 ?      00:00:00 redis-server *:7000
  linux-svnfile:/usr/local/redis # redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
  >>> Creating cluster
  Connecting to node 127.0.0.1:7000: OK
  Connecting to node 127.0.0.1:7001: Sorry, can't connect to node 127.0.0.1:7001
  You have new mail in /var/mail/root
  linux-svnfile:/usr/local/cluster/7000 # redis-server redis.conf
  linux-svnfile:/usr/local/cluster/7000 # cd ../7001
  linux-svnfile:/usr/local/cluster/7001 # redis-server redis.conf
  linux-svnfile:/usr/local/cluster/7001 # cd ../7002
  linux-svnfile:/usr/local/cluster/7002 # redis-server redis.conf
  linux-svnfile:/usr/local/cluster/7002 # cd ../7003
  linux-svnfile:/usr/local/cluster/7003 # redis-server redis.conf
  linux-svnfile:/usr/local/cluster/7003 # cd ../7004
  linux-svnfile:/usr/local/cluster/7004 # redis-server redis.conf
  linux-svnfile:/usr/local/cluster/7004 # cd ../7005
  linux-svnfile:/usr/local/cluster/7005 # redis-server redis.conf
  linux-svnfile:/usr/local/cluster/7005 # ps -ef | grep redis
  root   17575   10 20:05 ?      00:00:00 redis-server *:7000
  root   17590   10 20:06 ?      00:00:00 redis-server *:7001
  root   17604   10 20:06 ?      00:00:00 redis-server *:7002
  root   17612   10 20:06 ?      00:00:00 redis-server *:7003
  root   17616   10 20:06 ?      00:00:00 redis-server *:7004
  root   17624   10 20:06 ?      00:00:00 redis-server *:7005
  像是上面在启动服务时需要注意切换到相应的配置文件的目录下,不然相应端口的服务无法启动,例如我之前在/usr/local/redis目录下启动后只有7000对应的服务启动了。
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7000/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7001/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7002/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7003/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7004/redis.conf
  linux-svnfile:/usr/local/redis # redis-server ../cluster/7005/redis.conf
  linux-svnfile:/usr/local/redis # ps -ef | grep redis
  root   15144 190640 18:37 pts/0    00:00:00 vi redis.conf
  root   15590   10 18:52 ?      00:00:00 redis-server *:7000
  root   15616 194430 18:52 pts/1    00:00:00 grep redis


  linux-svnfile:/usr/local/cluster #redis-cli -p 7000
  127.0.0.1:7000>


  删除slave节点


  删除master节点
  linux-svnfile:/usr/local/redis # redis-trib.rb reshard 127.0.0.1:7001
  How many slots do you want to move (from 1 to 16384)? 5461

  What is the receiving node>
  Please enter all the source node>  Type 'all' to use all the nodes as source nodes for the hash slots.

  Type 'done' once you entered all the source nodes>  Source node #1: 6fe9561e605b7ee85e67a2557f7fb641f482afb4
  Source node #2:done
  #Do you want to proceed with the proposed reshard plan (yes/no)? yes
  说明:
  5461表示要删除master所有的slot数量
  What is the receiving node ID是指将7000的slot迁移的节点7001的node-id
  Source node #1是指要删除的master的node-id
  下面可以看到7000的slot为0,而7001多了4561

  在删除master节点出现如下面所示的错误,是因为删除master节点之前没有删除master节点的slave节点。

  上面是在单台机器上做的集群,下面展示两台机器上做集群,其实也很简单。
  参考之前的环境编译源码到另一台机器
  在两台机器上编辑配置文件
  /usr/local/redis # vi redis.conf
  daemonize yes
  port 7000
  cluster-enabled yes
  cluster-config-file nodes.conf
  cluster-node-timeout 5000
  appendonly yes
  cluster-config-file nodes-7001.conf
  分别创建目录和文件
  linux-svnfile:/usr/local/redis # mkdir -p/usr/local/cluster/{7001..7003}
  localhost:/usr/local/redis # mkdir -p/usr/local/cluster/{8001..8003}
  linux-svnfile:/usr/local/redis # cpredis.conf ../cluster/7001
  linux-svnfile:/usr/local/redis # cpredis.conf ../cluster/7002
  linux-svnfile:/usr/local/redis # cpredis.conf ../cluster/7003
  localhost:/usr/local/redis # cp redis.conf../cluster/8001
  localhost:/usr/local/redis # cp redis.conf../cluster/8002
  localhost:/usr/local/redis # cp redis.conf../cluster/8003
  修改对应目录的配置文件其中port 和cluster-config-file分别对应各自的目录名,可使用sed命令做修改
  sed -i "s/7001/7002/g"
  启动服务






页: [1]
查看完整版本: redis环境搭建