redis 集群搭建
来源:互联网 发布:当前网络热门话题 编辑:程序博客网 时间:2024/06/05 21:53
环境准备:
1, 六台centos6.2 的虚拟机,ip如下:
- 192.31.22.12
- 192.31.22.13
- 192.31.22.14
- 192.31.22.15
- 192.31.25.14
- 192.31.25.15
2, 安装 ruby-2.4.2
3, 安装 redis-3.2.0
安装过程:
安装ruby依赖:
下载ruby包, 我选择编译安装, 你也可以使用yum安装,命令如下:
yum -y install zlib ruby rubygems
我下载的命令如下:
wget https://cache.ruby-lang.org/pub/ruby/2.4/ruby-2.4.2.tar.gz --no-check-certificate# 下载完成后将其解压tar -zxvf ruby-2.4.2.tar.gz # 移动到指定目录下mv ruby-2.4.2 /usr/localcd /usr/local/ruby-2.4.2# 开始编译./configuremakesudo make install# 完成后安装ruby 的redis库gem install redis
安装redis:
下载redis-3.2.0包
wget http://download.redis.io/releases/redis-3.2.0.tar.gz# 解压tar -zxvf redis-3.2.0.tar.gz # 移动到指定目录mv redis-3.2.0 /usr/localcd /usr/local/redis-3.2.0# 开始编译make# 编译结束后会在src目录下产生服务程序redis-server和客户端程序redis-cli以及集群管理程序redis-trib.rb,我们可以把这三个程序复制到/bin目录中cp src/redis-server /bin cp src/redis-cli /bincp src/redis-trib.rb /bin# 单机模式现在运行redis-server就可以使用redis了, 也可以指定配置文件启动,我们将redis.conf复制到/etc/目录下cp redis.conf /etc/# 指定配置文件启动(暂时不必启动)redis-server /etc/redis.conf
接下来配置redis集群,
vim /etc/redis.conf
修改配置如下:
daemonize yes port 6379 bind 192.31.22.12unixsocket /home/usr/redis/data/redis.sock unixsocketperm 700 timeout 300 loglevel verbose logfile /home/usr/redis/logs/redis.log databases 16 dbfilename dump.rdb dir /home/usr/redis/data/ #aof持久化 appendonly yes appendfilename appendonly.aof appendfsync everysec no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 80-100 auto-aof-rewrite-min-size 64mb lua-time-limit 5000 #集群配置 cluster-enabled yes cluster-config-file /home/usr/redis/data/nodes-6379.conf cluster-node-timeout 5000
配置参数详解:
cluster-enabled:设置为yes
为打开集群模式, 否则启动集群会报如下错误:
[ERR] Node 192.31.22.13:6379 is not configured as a cluster node.
cluster-conf-file:设定了保存节点配置文件的路径,默认值为nodes.conf。节点配置文件无须人为修改,它由Redis集群在启动时创建,并在有需要时自动进行更新。
创建数据目录和日志目录
mkdir /home/usr/redismkdir /home/usr/redis/datamkdir /home/usr/redis/logs
将修改好的redis.conf文件 scp到其他几台机器
scp /etc/redis.cong root@192.31.22.13:/etcscp /etc/redis.cong root@192.31.22.14:/etcscp /etc/redis.cong root@192.31.22.15:/etcscp /etc/redis.cong root@192.31.25.14:/etcscp /etc/redis.cong root@192.31.25.15:/etc
然后将bind 的参数修改为每台机器绑定的ip,在分别创建数据目录和日志目录,做完这些后启动每台机器的redis
redis-server /etc/redis.conf & # 后台运行# 查看进程是否存在ps aux | grep redis# 输出类似如下内容则证明redis已正常启动>> root 16711 0.0 0.0 133548 7728 ? Ssl 11:00 0:02 redis-server 192.31.22.15:6379 [cluster]
确保每台机器redis正常运行后我们就来创建集群, 在创建集群之前请关闭集群中每台机器的防火墙,否则会出现以下错误:
Connecting to node 192.31.25.15:6379: [ERR] Sorry, can't connect to node 192.31.25.15:6379
因此我们要确保每台机器的防火墙是关闭的,(不关闭也可以,但是你要开放6379这个端口号)
[root@andy5 ~]# service iptables stopiptables:清除防火墙规则: [确定]iptables:将链设置为政策 ACCEPT:filter [确定]iptables:正在卸载模块: [确定]
做完这些时我们使用”redis-trib.rb”来创建
[root@andy3 src]# redis-trib.rb create --replicas 1 192.31.22.12:6379 192.31.22.13:6379 192.31.22.14:6379 192.31.22.15:6379 192.31.25.14:6379 192.31.25.15:6379>>> Creating clusterConnecting to node 192.31.22.12:6379: OKConnecting to node 192.31.22.13:6379: OKConnecting to node 192.31.22.14:6379: OKConnecting to node 192.31.22.15:6379: OKConnecting to node 192.31.25.14:6379: OKConnecting to node 192.31.25.15:6379: OK>>> Performing hash slots allocation on 6 nodes...Using 3 masters:192.31.22.12:6379192.31.22.13:6379192.31.22.14:6379Adding replica 192.31.22.15:6379 to 192.31.22.12:6379Adding replica 192.31.25.14:6379 to 192.31.22.13:6379Adding replica 192.31.25.15:6379 to 192.31.22.14:6379M: ae2ca5326340026d061b5fdd210c8dd2de8d928c 192.31.22.12:6379 slots:0-5460 (5461 slots) masterM: c99c7d5ae396746e009cca6c21260eb2845e3689 192.31.22.13:6379 slots:5461-10922 (5462 slots) masterM: 1c2ca105e8a1265e61b2e2345cc195f07ca3c4a0 192.31.22.14:6379 slots:10923-16383 (5461 slots) masterS: 3368c3c13a06c5ac1c3e83ec9e68a846162cff88 192.31.22.15:6379 replicates ae2ca5326340026d061b5fdd210c8dd2de8d928cS: 51d27cf271b63d16b51c65d6a7c6972b1ea7ffd9 192.31.25.14:6379 replicates c99c7d5ae396746e009cca6c21260eb2845e3689S: c90c3ce8bfebe1f1680d9dddea54571a684d0446 192.31.25.15:6379 replicates 1c2ca105e8a1265e61b2e2345cc195f07ca3c4a0Can I set the above configuration? (type 'yes' to accept): yes>>> Nodes configuration updated>>> Assign a different config epoch to each node>>> Sending CLUSTER MEET messages to join the clusterWaiting for the cluster to join...>>> Performing Cluster Check (using node 192.31.22.12:6379)M: ae2ca5326340026d061b5fdd210c8dd2de8d928c 192.31.22.12:6379 slots:0-5460 (5461 slots) masterM: c99c7d5ae396746e009cca6c21260eb2845e3689 192.31.22.13:6379 slots:5461-10922 (5462 slots) masterM: 1c2ca105e8a1265e61b2e2345cc195f07ca3c4a0 192.31.22.14:6379 slots:10923-16383 (5461 slots) masterM: 3368c3c13a06c5ac1c3e83ec9e68a846162cff88 192.31.22.15:6379 slots: (0 slots) master replicates ae2ca5326340026d061b5fdd210c8dd2de8d928cM: 51d27cf271b63d16b51c65d6a7c6972b1ea7ffd9 192.31.25.14:6379 slots: (0 slots) master replicates c99c7d5ae396746e009cca6c21260eb2845e3689M: c90c3ce8bfebe1f1680d9dddea54571a684d0446 192.31.25.15:6379 slots: (0 slots) master replicates 1c2ca105e8a1265e61b2e2345cc195f07ca3c4a0[OK] All nodes agree about slots configuration.>>> Check for open slots...>>> Check slots coverage...[OK] All 16384 slots covered.
到这里我们的集群已经搭建成功, 可以看到16384个slots已创建成功,上个命令中的--replicas 1
表示我们希望为集群中的每个主节点创建一个从节点,也就是说这个集群是一个三主三从的集群,可以通过以下命令可知
[root@shu src]# redis-cli -c -h 192.31.25.14 -p 6379 cluster nodes1c2ca105e8a1265e61b2e2345cc195f07ca3c4a0 192.31.22.14:6379 master - 0 1505790516882 3 connected 10923-1638351d27cf271b63d16b51c65d6a7c6972b1ea7ffd9 192.31.25.14:6379 myself,slave c99c7d5ae396746e009cca6c21260eb2845e3689 0 0 5 connectedae2ca5326340026d061b5fdd210c8dd2de8d928c 192.31.22.12:6379 master - 0 1505790521882 1 connected 0-5460c90c3ce8bfebe1f1680d9dddea54571a684d0446 192.31.25.15:6379 slave 1c2ca105e8a1265e61b2e2345cc195f07ca3c4a0 0 1505790520882 6 connectedc99c7d5ae396746e009cca6c21260eb2845e3689 192.31.22.13:6379 master - 0 1505790519882 2 connected 5461-109223368c3c13a06c5ac1c3e83ec9e68a846162cff88 192.31.22.15:6379 slave ae2ca5326340026d061b5fdd210c8dd2de8d928c 0 1505790518882 4 connected
其中 master是主节点, slave是从节点,从上个命令可知其中 192.31.22.14, 192.31.22.12, 192.31.22.13 这三台为主节点,其他三台为从节点,至此集群已搭建完成,接下来测试是否可用,
测试集群
在192.31.22.12上连接 192.31.25.14:6379
[root@andy3 ~]# redis-cli -c -h 192.31.25.14 -p 6379 192.31.25.14:6379> set andy redis-> Redirected to slot [1884] located at 192.31.22.12:6379OK192.31.22.12:6379> get andy"redis"192.31.22.12:6379>
然后在192.31.22.15 上登陆192.31.22.13:6379
[root@andy6 ~]# redis-cli -c -h 192.31.22.13 -p 6379192.31.22.13:6379> get andy-> Redirected to slot [1884] located at 192.31.22.12:6379"redis"192.31.22.12:6379>
可以看到我们的集群是可以使用的,那么接下来就试试redis给你能带来那些方便之处吧。。。。。。
redis客户端基础教程点这里
- redis集群搭建
- redis集群环境搭建
- redis-3.0集群搭建
- redis集群部署搭建
- redis集群环境搭建
- 搭建redis单机集群
- ELK+redis集群搭建
- redis集群搭建
- spring搭建redis集群
- redis集群搭建示例
- 【Python】搭建redis集群
- redis cluster集群搭建
- redis集群搭建手册
- redis 集群搭建 Ubuntu
- Dubbo-redis集群搭建
- Redis集群搭建
- redis集群搭建
- Redis集群的搭建
- 基于Redis实现分布式锁
- 【网络流24题】方格取数(二分图染色+最大权独立点集+最小割)
- Linux下的段错误分析
- vue表单校验vee-validate
- 开篇
- redis 集群搭建
- 关于 String对象 常量池 字符串常量
- C++ 动态捕获整型数列
- ubutu tomcat 启用80端口步骤
- 同一窗口下基于KCF 目标跟踪和基于模板匹配的目标跟踪效果比较
- 使用jQuery库出错:index.jsp:16 Uncaught ReferenceError: $ is not defined
- 函数中返回字符串的方法
- Linux:使用xargs为其他命令提供参数
- iOS OC内存分析优化~笔记