redis3.2安装和集群

cd /usr/local/src
yum install -y gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel

tar -zxvf redis-3.2.6.tar.gz
cd redis-3.2.6
make
make PREFIX=/usr/local/redis install
cp /usr/local/src/redis-3.2.6/redis.conf /usr/local/redis/
cp /usr/local/redis/bin/redis-server /usr/local/bin/
cp /usr/local/redis/bin/redis-cli /usr/local/bin/

cp /usr/local/src/redis-3.2.1/redis.conf /usr/local/redis/
cp /usr/local/redis/bin/redis-server /usr/local/bin/
cp /usr/local/redis/bin/redis-cli /usr/local/bin/

vim /usr/local/redis/redis.conf

daemonize yes #后台启动方式
requirepass test123 #正式环境改用复杂的密码
bind 0.0.0.0 #代码和Linux中的redis客户端都可以使用,如果是127则只能本机访问

以进程启动redis-server并指定conf
./redis-server /usr/local/redis/redis.conf

redis错误
cc: ../deps/hiredis/libhiredis.a: 没有那个文件或目录
cc: ../deps/lua/src/liblua.a: 没有那个文件或目录
cc: ../deps/jemalloc/lib/libjemalloc.a: 没有那个文件或目录-->
# cd deps/
# make hiredis lua jemalloc
# cd redis- 2.8 . 21
# make





集群配置
centos1:192.168.3.5    test-1
centos2:192.168.3.6     test-3

centos1
mkdir 7000 7001 7002
cp /usr/local/redis/redis.conf /usr/loca/redis/7000
cp /usr/local/redis/redis.conf /usr/loca/redis/7001
cp /usr/local/redis/redis.conf /usr/loca/redis/7002

分别修改三个配置文件
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
port 7000 //端口7000,7002,7003
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
bind 192.168.215.130 //这里要绑定机器的IP
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes

centos2
mkdir 7000 7001 7002
cp /usr/local/redis/redis.conf /usr/loca/redis/7000
cp /usr/local/redis/redis.conf /usr/loca/redis/7001
cp /usr/local/redis/redis.conf /usr/loca/redis/7002

分别修改三个配置文件
daemonize yes //redis后台运行
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
port 7000 //端口7000,7002,7003
cluster-enabled yes //开启集群 把注释#去掉
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
bind 192.168.215.130 //这里要绑定机器的IP
cluster-node-timeout 5000 //请求超时 设置5秒够了
appendonly yes

启动centos1上的redis
redis-server /usr/local/redis/7000/redis.conf
redis-server /usr/local/redis/7001/redis.conf
redis-server /usr/local/redis/7002/redis.conf

启动centos2的redis
redis-server /usr/local/redis/7000/redis.conf
redis-server /usr/local/redis/7001/redis.conf
redis-server /usr/local/redis/7002/redis.conf

启动完成之后查看redis端口是否起来

官方提供一个 redis-trib.rb(/usr/local/redis-3.2.1/src/redis-trib.rb) 进行集群工具
需要安装依赖
yum安装的默认版本为1.8.0,这里编译安装
cd /usr/loca/src
./configure
make
make install

cp /usr/local/bin/ruby /usr/bin/
cp /usr/local/bin/gem /usr/bin/
ruby -v
gem -v

gem install redis
运行redis-trib.rb查看信息
/usr/local/redis/src/redis-trib.rb

启动集群
在centos1上执行
/usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.3.5:7000 192.168.3.5:7001 192.168.3.5:7002 192.168.3.6:7000 192.168.3.6:7001 192.168.3.6:7002
--replicas 1 表示 自动为每一个master节点分配一个slave节点 上面有6个节点,程序会按照一定规则生成 3个master(主)3个slave(从)

防火墙一定要开放监听的端口,否则会创建失败。
运行中,提示Can I set the above configuration? (type 'yes' to accept): yes //输入yes
Waiting for the cluster to join..........Sending Cluster Meet Message to join the Cluster.

需要在centos2上也开启replicas
/usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.3.5:7000 192.168.3.5:7001 192.168.3.5:7002 192.168.3.6:7000 192.168.3.6:7001 192.168.3.6:7002


最后查看启动日志,然后用redis-trib.rb check 检查节点是否正常
/usr/local/redis/src/redis-trib.rb check 192.168.3.6:7001



测试数据
1)get 和 set数据
redis-cli -c -h 192.168.3.5 -p 7000
进入命令窗口,直接 set name haha
192.168.3.5:7000> set name haha
OK
在另外一台服务器上, redis-cli -c -h 192.168.3.6 -p 7001
192.168.3.6:7001> get name
“haha”
直接根据hash匹配切换到相应的slot的节点上。
还是要说明一下,redis集群有16383个slot组成,通过分片分布到多个节点上,读写都发生在master节点。
2)假设测试
果断先把192.168.3.5服务Down掉,(192.168.1.238有1个Master, 2个Slave) , 跑回192.168.3.5, 查看一下 发生了什么事,192.168.3.5的3个节点全部都是Master,其他几个Server2的不见了
测试一下,依然没有问题,集群依然能继续工作。

原因: redis集群 通过选举方式进行容错,保证一台Server挂了还能跑,这个选举是全部集群超过半数以上的Master发现其他Master挂了后,会将其他对应的Slave节点升级成Master.
疑问: 要是挂的是192.168.3.6怎么办? 哥试了,cluster is down!! 没办法,超过半数挂了那救不了了,整个集群就无法工作了。 要是有三台Server,每台两Master,切记对应的主从节点
不要放在一台Server,别问我为什么自己用脑子想想看,互相交叉配置主从,挂哪台也没事,你要说同时两台crash了,呵呵哒......



添加一个新主(master)节点
redis-trib.rb  add-node  192.168.3.5: 7000  192.168.3.5: 7001
注意7006是新增的节点,而7000是已存在的节点(可为master或slave)。如果需要将7006变成某master的slave节点,注意使用redis-cli -c登录到slave(从)上,执行命令:
redis-cli -c -h 192.168.3.5 -p 7000
cluster  replicate  78b00ffb2f109a92a36e58844530c631d2c75d55



添加一个新从(slave)节点
/usr/loca/redis/src/redis-trib.rb add-node -- slave  192.168.3.5:7000 192.168.3.5: 7001


上面方法没有指定7006的master,而是随机指定。下面方法可以明确指定为哪个master的slave:
./redis-trib.rb add-node --slave --master-id 3c3a0c74aae0b56170ccb03a76b60cfe7dc1912e 192.168.3.5:7000 192.168.3.5:7001


从集群中删除一个节点:
./redis-trib.rb  del-node  127.0.0.1:7000 <node-id>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值