在Vagrant上構建Redis3集群的記錄

建立集群的方法

假设

前提是已经安装了VirtualBox和Vagrant。
在三台Vagrant上进行构建。

游客操作系统:debian 7.2
节点1:192.168.33.71
节点2:192.168.33.72
节点3:192.168.33.73
Redis端口:6379

在Vagrant上的构建方法

请在VagrantFile中按照以下方式进行编写。
请根据您的环境自行调整盒子名称。


config.vm.box = "debian72"

config.vm.define :redis1 do |node|
  node.vm.network :private_network, ip: "192.168.33.71"
end

config.vm.define :redis2 do |node|
  node.vm.network :private_network, ip: "192.168.33.72"
end

config.vm.define :redis3 do |node|
  node.vm.network :private_network, ip: "192.168.33.73"
end

安装方式

使用vagrant ssh或类似的方式登录到客户操作系统,然后运行以下命令安装redis。


wget http://download.s.io/releases/redis-3.0.2.tar.gz
tar xzf redis-3.0.2.tar.gz
cd redis-3.0.2
make

用于分组的设置

在~/redis-3.0.2/src/redis.conf的末尾添加以下设置


### custer setting
cluster-enabled yes
cluster-config-file nodes.conf
cluster-node-timeout 5000
appendonly yes

启动redis服务器


~/redis-3.0.2/src/redis-server redis.conf

确认行动(substitute 动作 with 行动)

如果可以看到”bar”的显示结果,说明运行正常。


~/redis-3.0.2/src/redis-cli
set foo bar
get foo

安装Gem

如果不放进去,启动集群时可能会出错。


sudo gem install redis

./src/redis-trib.rb create 192.168.33.71:6379 192.168.33.72:6379 192.168.33.73:6379

当gem文件缺失时出现错误

如果发生以下错误,您需要使用此命令安装 Redis 用的 gem。


sudo gem install redis

/usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- redis (LoadError)
    from /usr/local/lib/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from ./src/redis-trib.rb:25:in `'
    vagrant@debian-7:~/redis-3.0.2$ cd /usr/local/lib/

启动客户端

使用-c选项启动。
这样,无论从哪个节点启动,都应该能够获取到testkey。


~/redis-3.0.2/src/redis-cli -c
set testkey testvalue

其他

集群需要至少三台机器。

建立 Redis 集群至少需要三个 Redis 节点。如果节点少于三个,在启动集群时会报错。

数据副本

如果按照上述步骤,将不会创建副本(副本数量为0)。如果想要在多个节点上指定副本并保存相同的数据,可以在redis-trib create命令的选项中指定replicas。通过设置副本,即使特定的redis服务器宕机,数据仍有可能存活,但相应地会增加内存使用量,因此设置副本数量需要慎重考虑。

请谢绝。