1.安装gcc 基础环境
如果是新建的虚拟机,需要安装环境基础包gcc(gcc –v命令来确定是否安装gcc)。
gcc的作用:gcc是Linux下的编译器全称GNU Compiler Collection,可以对C/C++/JAVA等语言进行编译。
Gcc离线安装通过rpm安装比较方便快捷,安装命令
rpm –ivh *.rpm –nodeps--force
如果以上命令不可以,试一下
rpm -Uvh *.rpm --nodeps --force;
完成后,gcc –v检测安装完成情况。
Uvh 升级安装包,Uvh脚本会传递参数,可根据参数判断是安装还是卸载
0: 表示卸载 1和2: 表示安装或升级
%pre和%post段 【1,2】
当传递的第一个参数为1时,表示新安装一个rpm包。
当传递的第一个参数为2时,表示升级一个已经存在的包
Ivh 安装可视化
Nodeps 即使依赖不存在也强制安装
Force 即使覆盖包文件,也强制安装,所以建议在最开始安装。
2.进行redis的安装
mkdir /usr/local/redis //创建redis工作目录
cp redis-4.0.6.tar.gz /usr/local/redis //将redis的安装包拷贝到redis目录下
cd /usr/local/redis //进去redis文件下
tar -vxf redis-4.0.6.tar.gz //解压缩
ln -s redis-4.0.6 redis //建立软连接
cd redis //进入redis目录下
make && make install //编译安装redis
若出现错误 :没有jemalloc.h 执行:make MALLOC=libc
cd src
./redis-server //启动redis进行测试
ps–ef |grep redis //查询redis开启情况
3.安装ruby
mkdir /usr/local/ruby //创建ruby工作目录
cp ruby-2.5.6.tar.gz /usr/local/ruby //将安装包拷贝到该目录下
cd /usr/local/ruby //进入ruby工作目录
tar -vxf ruby-2.5.6.tar.gz // 解压缩
cd ruby-2.5.6/
./configure
make && make install
查看安装情况命令:ruby -v
4.安装 rubygems
mkdir /usr/local/rubygems //创建rubygems工作目录
cp rubygems-3.0.6.zip /usr/local/rubygems //将安装包拷贝到该目录下
cd /usr/local/rubygems //进入ruby工作目录
unzip rubygems-3.0.6.zip // 解压缩
cd rubygems-3.0.6/
ruby setup.rb
执行 ruby setup.rb 的时候出现以下错误:
4装zlib
mkdir /usr/local/zlib //创建zlib工作目录
cp zlib-1.2.11.tar.gz /usr/local/zlib //将安装包拷贝到该目录下
cd /usr/local/zlib //进入zlib工作目录
tar -vxf zlib-1.2.11.tar.gz // 解压缩
cd zlib-1.2.11/
./configure --prefix=/usr/local/zlib
make
make install
5编译ruby中的zlib
cd /usr/local/ruby/ruby-2.5.6/ext/zlib/
ruby extconf.rb
出现以下错误信息:
发现原来是要将文件安装到本地运行库的里面才行,所有安装的时候需要额外配置信息。重新执行一下命令:
ruby extconf.rb --with-zlib-include=/usr/local/zlib/include/ --with-zlib-lib=/usr/local/zlib/lib //会生成一个Makefile文件
继续下一步:
make && make install
又(可能)出现报错信息:
这个时候打开ext/zlib/Makefile文件,找到下面一行把路径进行修改一下。
zlib.o: $(top_srcdir)/include/ruby.h
改成:
zlib.o: ../../include/ruby.h
如下图:
修改完成,然后保存,然后重新执行命令:
make && make install
zlib的错误都解决以后再继续重新安装rubygems。
cd /usr/local/rubygems/rubygems-3.0.6
ruby setup.rb
这次就安装成功了,如下图:
6安装redis-3.0.0.gem
cp redis-3.0.0.gem /usr/local/redis/redis
cd /usr/local/redis/redis
gem install -l redis-3.3.0.gem
出现以下错误信息:
因为Redis集群交互是需要OpenSSL,所系我们还需要安装OpenSSL。
7安装openssl
mkdir /usr/local/openssl //创建openssl工作目录
cp openssl-1.0.2t.tar.gz /usr/local/openssl //将安装包拷贝到该目录下
cd /usr/local/openssl //进入openssl工作目录
tar -vxf openssl-1.0.2t.tar.gz // 解压缩
cd openssl-1.0.2t/
./config -fPIC --prefix=/usr/local/openssl enable-shared
这里会报错,说需要安装perl 5,
8.安装Perl 5
下载 https://www.cpan.org/src/5.0/perl-5.28.0.tar.gz
tar -xzf perl-5.28.0.tar.gz
cd perl-5.28.0
./Configure -des -Dprefix=$HOME/localperl
make
make test
make install
使用perl -v命令,查看安装情况
安装完perl5,重新回到openssl-1.0.2t.tar.gz /usr/local/openssl
继续安装openssl
./config -t
make && make install
如果有报错make clean 清理一下
重新执行一遍命令
安装openssl成功:
9编译ruby中的openssl
cd /usr/local/ruby/ruby-2.5.6/ext/openssl/
ruby extconf.rb --with-openssl-include=/usr/local/openssl/include/ --with-openssl-lib=/usr/local/openssl/lib
此时会生成Makefile文件,下面出现的错误需要修改本文件
make && make install
出现以下错误信息:
解决办法:vim Makefile 把Makefile文件中所有的 $(top_srcdir) 换成 ../.. 注意替换所有替换完成后,重新进行命令:
make && make install
安装成功:
安装成功以后继续进行第九步的安装redis-3.0.0.gem
cd /usr/local/redis/redis/
gem install redis-3.0.0.gem
安装成功:
到这里ruby环境总算是安装成功了,真是不容易啊,其实redis cluster的安装的主要内容还是上面的Ruby环境的安装配置过程。
10启动redis集群
(1)创建集群
cd /usr/local/redis
mkdir redis_cluster //在redis安装目录下创建redis_cluster目录
mkdir redis700{0,1,2,3,4,5}//批量创建六个redis节点工作目录,三主三从。
(2)配置redis.conf
cd /usr/local/redis/redis_cluster //进去集群工作目录
vim redis.conf //创建redis.conf文件并添加一下内容
port 7000 //配置集群的端口
bind 本机的IP //这里的默认配置是127.0.0.1改为内网ip。
daemonize yes //允许redis在后台运行
pidfile /var/run/redis-7000.pid //改成和端口一致
cluster-enabled yes // 开启集群 把注释去掉
cluster-config-file node-7000.conf //集群的配置,和端口一致
cluster-node-timeout 15000 // 请求超时,默认为15秒
appendonly yes // aof日志开启,有需要就开启,每一次写操作都会记录一条日志。
将redis.conf 分别copy到六个节点的文件下
cp redis.conf redis7000/ //将配置文件拷贝到redis7000节点的工作目录下
cp redis.conf redis7001/
cp redis.conf redis7002/
cp redis.conf redis7003/
cp redis.conf redis7004/
cp redis.conf redis7005/
因为配置文件是根据7000端口模本的配置写的,所以除了redis7000目录下的redis.conf,其他工作目录下的配置文件都需要将文件内容中的端口号修改为对应的工作目录的端口号。
(3)启动服务
cd /usr/local/redis/redis_cluster 依次启动所有节点
redis-server redis7000/redis.conf
redis-server redis7001/redis.conf
redis-server redis7002/redis.conf
redis-server redis7003/redis.conf
redis-server redis7004/redis.conf
redis-server redis7005/redis.conf
查看启动情况:ps -ef | grep redis
cd /usr/local/redis/redis/src/
./redis-trib.rb create --replicas 1
158.223.134.129:7000 158.223.134.129:7001 158.223.134.129:7002 158.223.134.129:7003 158.223.134.129:7004 158.223.134.129:7005
输入:
Yes
安装成功
(4)验证集群状态
以普通方式连接到7002端口的节点
redis-cli -p 7002 -h 158.223.134.129
参数说明: -p port 端口 -h host 主机 -c cluster
集群连接进集群之后 输入ping , 如果响应了pong 表示连接集群成功; CLUSTER INFO 列出当前节点的信息,CLUSTER NODES 列出当前集群中的节点信息;
执行命令:set hello word
7002节点报错,客户端该数据应该使用7000端口的客户端才能添加(是因为登录的时候没有加-c)
登录7000端口的客户端重新set hello world,添加数据成功(上次在7002中添加hello world没有成功,所以在7000中获取hello是没有内容的)
使用集群方式连接集群redis-cli -p 7003 -h 158.223.134.129 -c(7003是7000的备机)
查询hello:
get hello
重新设置hello的值:
set hello java
设置成功:
通过对比发现如果登录的时候不加-c(非集群模式登录,登录的是单节点),添加数据时,如果数据的key的虚拟槽位没有在该redis上则不能添加成功,即单节点登录,对redis的操作不会进行重定向。
(5)验证集群的主从配置
关闭7002端口的节点
kill -9 7002redis节点的pid
登录到7000端口的节点:
redis-cli -p 7000 -h 158.223.134.129 -c
cluster nodes
CLUSTER NODES 前面的字符串是节点的id。从这个命令还可以知道哪些节点还活着,哪些节点已经挂了。带着fail的都是已经挂掉的节点。
集群信息显示7002节点已经down掉,7005取代7002成为主节点。
11.设置密码
在各个redis.conf 中设置
masterauth 123456 //从服务器连接主服务器的密码
requirepass 123456 //redis密码
进入端口中,可以通过config get requirepass 命令,查看密码 ,config set requirepass 123 命令设置密码为123.但是redis一旦重启的话,该命令就会失效,使用conf文件中的密码。
12.添加新的节点
12.1添加新的主节点
(1)./redis-trib.rb add-node xxx.xxx.xxx.xxx[Z1] :7006 [Z2] xxx.xxx.xxx.xxx:7002[Z3]
(2)分配槽点数
./redis-trib.rb reshard xxx.xxx.xxx.xxx:7006
(3)输入你想要分配的槽点数
(4)输入节点ID
注意:这里的ID不是端口号而是最开始端口对应的的第一组ID字符串
输入的时候前面不可以有空格
(5)接下来会问你要从哪里分配空间某一个节点还是所有空间,我在这里输入all
(6)接下来会给你一个分配计划,输入yes开始分配。
12.2 添加从节点
./redis-trib.rb add-node --slave --master-id 1298a63900c711eed0cde84c53bcb02d45b1a839 [Z4] xxx.xxx.xxx.xxx:7007 xxx.xxx.xxx.xxx:7006
这样添加的节点7007直接就是7006的从节点,配置槽点如上。
13.设置日志记录
在redis.conf文件中配置
Loglevel //日志级别 1.debug :会打印很多信息,适用于开发和测试阶段
2.verbose:包含很多信息,但是比debug少一些
3.notice : 适合生产
4.warning: 打印警告信息,只记录一些重要信息
Redis默认的设置是verbose,开发测试一般使用debug,生产模式一般使用notice
Logfile “” 双引号内是日志文件存储的路径,注意,双引号不能丢
日志设置好后,需重启redis集群生效。
14.redis集群的重启
命令redis-cli -a 123456[Z5] -p 7000 shutdown
当有密码的时候要加上那个密码,没有的时候不需要。
关闭之后,再使用redis-server redis7001/redis.conf 命令重启端口即可。
redis-server redis.conf
[Z1]IP地址
[Z2]要添加的端口号
[Z3]以前就存在的端口号(都可以,这里没有主从关系,新添加的都是主节点)
[Z4]7006节点ID
[Z5]Redis端口密码,默认没有,需要自己设置