分享一次从头到尾的搭建redis的集群过程。
3主3从
图中所有的ip地址都是你自己电脑的ip。
一、安装
1.安装依赖包
yum install gcc-c++
由于我之前已经安装过了,所以不用再安装了,没安装过就等它自动完成
2.下载redis,需要注意的是版本需要在3.0及以上,才支持集群功能。
因为其他的虚拟机redis都是在opt目录下,所以我就在opt目录下下载了。(当然在哪个目录下载并不重要)
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
下载中....
下载好的安装包
解压缩
tar -zxvf redis-5.0.5.tar.gz
重命名
mv redis-5.0.5 redis
3.编译redis
进入redis目录
cd redis/
make
make
完成
进入src
cd ./src/
执行 make install
make install
4.安装ruby
注意:必须为2.5版本及以上才能被redis使用,通过yum安装的话版本不适用于redis,所以此处通过手动安装。
1)下载ruby
两种方式
①wget方式下载
我还是切换到 opt 目录下
wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz
可能会下载得很慢(当然如果你有一些特殊的软件可能会很快(-.-))
②网盘(我用你的)
提取码:1111
2)解压缩
tar -zxvf ruby-3.0.2.tar.gz
进入ruby目录
执行./configure --prefix=/usr/local/rvm //此目录为ruby最终安装目录
./configure --prefix=/usr/local/rvm
执行 make && make install (时间稍微长一点)
make && make install
查看ruby版本
/usr/local/rvm/bin/ruby -v
3)将ruby写入环境变量
vi /etc/profile
shift + g 到最后
//在末尾添加 ruby路径与 上步最终安装目录一致 且不要覆盖原有PATH
RUBY_HOME=/usr/local/rvm
export PATH=$PATH:$RUBY_HOME/bin
RUBY_HOME=/usr/local/rvm
export PATH=$PATH:$RUBY_HOME/bin
保存,退出,使文件生效。
source /etc/profile
source /etc/profile
4)安装ruby所需要的zlib包
yum -y install zlib-devel
进入 ruby-3.0.2/ext/zlib
cd ruby-2.5.1/ext/zlib
执行
ruby ./extconf.rb
如果出现
mkmf.rb can't find header files for ruby at /usr/share/include/ruby.h
Linux Centos 系统下执行 :yum install ruby-devel
Linux Ubuntu 系统下执行:apt-get install ruby-dev
make
make
如果出现:make: *** 没有规则可以创建“zlib.o”需要的目标“/include/ruby.h”。 停止。
在Makefile顶部中的增加top_srcdir = ../..
vi Makefile
make完成
make install
make install
5)安装ruby所需要的openssl
yum install openssl-devel -y
进入openssl目录
cd ruby-2.5.1/ext/openssl
执行
ruby ./extconf.rb
make
make
make install
make install
6)gem install redis(ruby的一个库)
gem install redis
//出现异常:/usr/bin/gem: No such file or directory
//解决方案:ln -s /usr/local/rvm/bin/gem /usr/bin/gem
二、配置redis集群
因为要配置3主3从,理论上来说应该有6台物理机,因为物理机数量不够,就在一台虚拟机上模拟了。
进入redis目录
1.创建一个文件夹,这里叫做redisCluster(redis集群),当然可以随意命名。
mkdir redisCluster
进入该文件夹
因为需要3个主机、3个从机,所以需要创建6个文件夹
命名为 7000-7005,当然也可以起其他的名字,为了方便管理,建议如此。
mkdir 7000 7001 7002 7003 7004 7005
2.给每个文件夹添加一个redis.conf(建议先改一个,然后再给每个文件夹复制)
将 /opt/redis/redis.conf(对应自己的目录) 复制 到 /opt/redis/redisCluster/7000 下
cp -r /opt/redis/redis.conf /opt/redis/redisCluster/7000
重命名
mv redis.conf redis7000.conf
mv redis.conf redis7000.conf
3.修改配置文件
进入 7000目录下
编辑配置文件
需要修改
搜索bind修改 /bind
1)bind 127.0.0.1 192.168.x.x // 绑定的ip 地址+空格+本机地址
注意:
在redis.conf NETWORK中 Examples下面还有两个bind被注释掉了,千万别搜索到直接改,你要改的是下边的那个bind。
bind 127.0.0.1 192.168.x.x
2)port
修改为 7000
port 7000
3)后台启动
daemonize yes
daemonize yes
4)pidfile /var/run/redis_7000.pid
pidfile /var/run/redis_7000.pid
5)开启集群
cluster-enabled yes
cluster-enabled yes
6)cluster-config-file nodes_7000.conf //集群配置文件
cluster-config-file nodes-7000.conf
7)请求超时时间设置(自己可根据需求设置)
cluster-node-timeout 5000
8)appendonly yes //aof日志开启 用于持久化
appendonly yes
9)masterauth 密码 (如果没有要求,可以不设置)例如密码是 abc123
masterauth abc123
10)requirepass 密码(如果没有要求,可以不设置) 与masterauth一致
requirepass abc123
11)protected-mode
默认私有模式是开启的,这可能导致无法与springboot或springcloud的项目进行连接。
所以我要关闭私有模式,关闭了私有模式,需要注释掉bind,就是第一个设置的bind。
#bind 127.0.0.1 192.168.x.x
protected-mode no
将bind注释 #bind 127.0.0.1 192.168.x.x
好,到这,第一个配置文件就改完了,然后需要改剩下的5个,慢慢改吧 :)
当然你也可以快速的改,复制这个文件 7000/redis7000.conf 到 每个 7001 、7002等等的下面,并重命名redisXXXX.conf与当前文件夹一致。
最终看起来是这样的
然后从redis7001.conf开始修改,将其中的7000都换成7001就可以了。
vi 7001/redis7001.conf
7000替换为7001
:%s/7000/7001
3行上的3个替换
以此类推 redis7002.conf中全部将7000换成7002 、7003 、7004 、7005
4.启动redis各个进程
redis-server /opt/redis/redisCluster/7000/redis7000.conf
使用当前方式,将6个进程全部启动
为了方便后续的启动,我将启动命令放到shell脚本中了。
查看redis进程
ps -ef | grep redis
ps -ef | grep redis
启动集群
redis-cli --cluster create 192.168.x.x:7000 192.168.x.x:7001 192.168.x.x:7002 192.168.x.x:7003 192.168.x.x:7004 192.168.x.x:7005 --cluster-replicas 1 -a abc123
输入yes
3主3从
测试集群
redis-cli -c -p 7000 auth abc123
tcping 192.168.x.x 7000
]>>>tcping不是内部或外部命令,也不是可运行的程序
或批处理文件。百度搜索tcping,或者点击这个>tcping.exe。
把下载完的tcping.exe放到C:\Windows\System32下即可。
如果出现 No response ,可能有以下几种情况。
1)防火墙
将端口添加到防火墙白名单中
firewall-cmd --permanent --zone=public --add-port=7000/tcp
7001
7002
7003
7004
7005
firewall-cmd --reload
可以ping通了
2)就是检查redisXXXX.conf中的 bind与protected-mode
种一棵树最好的时间是在10年前,其次是现在。
希望可以帮到你。