有问题可以关注公众号:提着月亮去火星
一、基本环境
首先我们需要使用VMware配置几个虚拟机,我们需要安装VMWare然后 下载自己的linux镜像文件,在虚拟机上安装linux系统,
vm15和centos7下载传送门 提取码: lvb5 。我使用的是centos7 64,
大致步骤可以根据其他博客将第一台虚机的系统安装成功,然后直接clone这台机器就可以了,然后需要修改ip。
二、准备相关软件安装包
在这里我们需要准备 redis-3.0.7.tar.gz 如果需要搭建其他集群请自行准备,上面的链接中还提供了zookeeper的文件。
三、开始
1、我们启动好虚拟机后,首先需要确保各个之间可以ping 通。
2、我们使用xshell工具连我自己的这几台服务器。
配置大致如上图,配置参数如下图。
3、cd
/root/software 进入到我们software目录下 我们可以使用wget http://download.redis.io/releases/redis-3.0.7.tar.gz 下载 ,也可以使用xshell 提供的文件传输工具将我们的离线文件上传至software下:
目录如上。
进入到 redis-3.0.7目录下 使用如下命令
4、编译并安装
cd redis-3.2.4
make && make install
5、 将 redis-trib.rb 复制到 /usr/local/bin 目录下
cd src cp redis-trib.rb /usr/local/bin/
6、创建redis节点(在/root/software/redis-3.0.7 下创建redis_cluster 目录)
mkdir redis_cluster
7、创建节点目录并将redis.conf文件复制到节点目录下
mkdir 7000 7001 7002 (创建节点目录)
cp redis.conf redis_cluster/7000 cp redis.conf redis_cluster/7001 cp redis.conf redis_cluster/7002
复制配置文件
8、修改配置文件
代码语言:javascript复制port 7000 //端口7000,7002,7003
bind 本机ip //改为其他节点机器可访问的ip 可以使用ifconfig查看一下
daemonize yes //redis后台运行
appendonly yes //aof日志开启 有需要就开启,它会每次写操作都记录一条日志
pidfile /var/run/redis_7000.pid //pidfile文件对应7000,7001,7002
cluster-enabled yes //开启集群
cluster-config-file nodes_7000.conf //集群的配置 配置文件首次启动自动生成 7000,7001,7002
cluster-node-timeout 15000 //请求超时 默认15秒,可自行修改
操作之后在另外一台机器重复该操作。
9、启动各个节点
代码语言:javascript复制第一台机器上执行
redis-server redis_cluster/7000/redis.conf
redis-server redis_cluster/7001/redis.conf
redis-server redis_cluster/7002/redis.conf
另外一台机器上执行
redis-server redis_cluster/7003/redis.conf
redis-server redis_cluster/7004/redis.conf
redis-server redis_cluster/7005/redis.conf
10、检查启动情况
ps -ef | grep redis
netstat -tnlp | grep redis
注意红色部分是总线ip稍后会给我们埋坑。
11、创建集群之前准备
redis-trib.rb使用ruby实现的所以在执行集群创建命令之前我们需要安装ruby。
启动命令:
代码语言:javascript复制redis-trib.rb create --replicas 1 192.168.255.128:7003 192.168.255.128:7004 192.168.255.128:7005 192.168.255.3:7000 192.168.255.3:7001 192.168.255.3:7002
不安装的话会出现下图结果:
所以我们需要使用如下命令安装redis接口:
gem install redis
我们看到上图提示说需要redis的version 大于 2.3.0 。
这是因为我之前使用 yum -y install ruby ruby-devel rubygems rpm-build 安装的了ruby 但是安装的版本是2.0.0的。
我们可以使用RVM来对ruby进行环境的管理和切换,而RVM需要通过CRUL来进行下载。
12 安装CRUL
使用命令 yum install curl
13、使用curl安装rvm
命令: curl -L get.rvm.io | bash -s stable
14、使用key进行RVM的安装
source ~/.bashrc
source ~/.bash_profile
执行上述命令使环境变量生效。
使用source让当前shell读入路径为” /usr/local/rvm/scripts/rvm “(路径可以自定义)的shell文件并依次执行文件中的所有语句,并重新执行刚修改的初始化文件,使之立即生效,而不必注销并重新登录
15、安装需要的ruby版本
rvm install 2.4.6
16、检查版本,移除旧版本,check新版本
rvm use 2.4.6 #启用新版本
rvm remove 2.0.0 # 移除旧版本
ruby -v #检查当前使用的版本号
17、然后继续redis接口安装(gem install redis)
18、现在可以执行redis集群启动命令
代码语言:javascript复制redis-trib.rb create --replicas 1 192.168.255.128:7003 192.168.255.128:7004 192.168.255.128:7005 192.168.255.3:7000 192.168.255.3:7001 192.168.255.3:7002
执行命令时出现下面的错误。
代码语言:javascript复制[ERR] Sorry, can't connect to node 192.168.255.3:7000
这个错误的原因是我们之前配置的所有节点都没有进行对外开放所以无法链接。
代码语言:javascript复制firewall-cmd --zone=public --add-port=7003/tcp --permanent
firewall-cmd --zone=public --add-port=7004/tcp --permanent
firewall-cmd --zone=public --add-port=7005/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --add-port=7000/tcp --permanent
firewall-cmd --zone=public --add-port=7001/tcp --permanent
firewall-cmd --zone=public --add-port=7002/tcp --permanent
firewall-cmd --reload
在两台机器上分别执行上述命令开发端口。这里我们修改的是firewall防火墙。
此时执行会出现如下图的情况:
后面的点会一直点一下一直等待中。
这是因为我们只是开放了客户端节点的端口,没有开放集群总线的端口,总线端口就是客户端端口 10000,上面我们提到重点注意的
19、在iptables中开发所有端口
我们使用命令
cd /etc/sysconfig/可以使用vi iptables 先查看一下 目前只是开放了 22 端口。
代码语言:javascript复制iptables -A INPUT -p tcp --dport 17001 -j ACCEPT
iptables -A INPUT -p tcp --dport 17002 -j ACCEPT
iptables -A INPUT -p tcp --dport 17000 -j ACCEPT
iptables -A INPUT -p tcp --dport 7001 -j ACCEPT
iptables -A INPUT -p tcp --dport 7002 -j ACCEPT
iptables -A INPUT -p tcp --dport 7000 -j ACCEPT
service iptables save #保存文件
iptables -L -n #查看哪些端口开放了
-----------------------------------------------
iptables -A INPUT -p tcp --dport 17003 -j ACCEPT
iptables -A INPUT -p tcp --dport 17004 -j ACCEPT
iptables -A INPUT -p tcp --dport 17005 -j ACCEPT
iptables -A INPUT -p tcp --dport 7003 -j ACCEPT
iptables -A INPUT -p tcp --dport 7004 -j ACCEPT
iptables -A INPUT -p tcp --dport 7005 -j ACCEPT
service iptables save #保存文件
iptables -L -n #查看哪些端口开放了
20、此时再次执行集群启动命令
代码语言:javascript复制[ERR] Node xxxxx is not empty. Either the node already knows other nodes (check with CLUSTER NODES)
会提示我们node节点不空,这是因为我们之前在执行redis集群启动命令的时候虽然一直等待,但是相关节点配置数据以及数据文件都已经生成。我们需要进入到我们的redis解压目录下删除掉图中红色的数据文件:
执行rm **** 然后选择y
最后我们再次执行集群启动命令成功:
21 测试集群效果:
在Xshell中新开一个窗口 如下图,使用7002的节点进行设值操作传递到7003主。(如图 03、04 00 都是主)
set redis cluster
接下来我们能在另外一台机器上链接05从节点,进行取值操作 get redis
集群功能测试成功。至此redis集群搭建测试成功。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/181661.html原文链接:https://javaforall.cn