redis5及以后版本源代码使用的是C语言,安装ruby的文章不用看了。
准备2台实体机机器
10.xx.xx.21 redis MServ-redis1
10.xx.xx.22 redis MServ-redis2
2台均为centos,版本:7.6.1810
Redis版本:5.0.14
在/opt下创建redis_cluster目录 用于存放集群节点
下载相关的包
1、选择合适的稳定版本: https://redis.io/download
redis-5.0.14.tar.gz
2、gcc,gcc++相关的rpm包 ,推荐2个好用的地址:http://rpmfind.net/linux/RPM/index.html 或者http://rpm.pbone.net/
Centos7.6.1810离线安装Redis5.0.14相关的rpm包
安装思路:
先尝试安装核心包(redis-5.0.14.tar.gz,gcc-4.8.5-39.el7.x86_64.rpm), 核心包安装不了, 根据详细的提示进行下载相关的依赖包解决。
centos 默认是预装了glibc 和glib-common的【先说明坑】 。查看是否安装命令 rpm -qa |grep glibc。
尝试安装 rpm -ivh xxx.rpm (xxx是具体的rmp包名称)
rpm -ivh gcc-4.8.5-39.el7.x86_64.rpm 看看需要哪些 就安装那些。
第1步 mpfr-3.1.1-4.el7.x86_64.rpm
第2步 libmpc-1.0.1-3.el7.x86_64.rpm
第3步 cpp-4.8.5-39.el7.x86_64.rpm
第4步 kernel-headers-3.10.0-1127.13.1.el7.x86_64.rpm
第5步 glibc-headers-2.17-260.el7.x86_64.rpm 坑:跟centos版本相关 版本固定
第6步 glibc-devel-2.17-260.el7.x86_64.rpm 坑: 版本固定 小版本都不行 这个2个
第7步 libgomp-4.8.5-39.el7.x86_64.rpm
第8步 libgcc-4.8.5-39.el7.x86_64.rpm --replacefiles
第9步 尝试安装gcc-4.8.5-39.el7.x86_64.rpm
第10步 gcc -v 版本查看
第11步 gcc-c++-4.8.5-39.el7.x86_64.rpm 可能会失败
第12步 如果上一步失败,先安装 rpm -ivh libstdc++-devel-4.8.5-39.el7.x86_64.rpm
需要先安装 libstdc++-4.8.5-39.el7.x86_64.rpm
再尝试gcc-c++
成功
安装过glibc的小伙伴,肯定遇到过以下情况。【错误复现:依赖检测失败】:
glibc = 2.17-307.el7.1 被 glibc-headers-2.17-307.el7.1.x86_64 需要
glibc-common = 2.17-317.el7 被 glibc-2.17-317.el7.x86_64 需要
解决办法:查看本文的准备阶段总结 和问题解决。
centos 默认是预装了glibc 和glib-common的。【如果还不清楚,可看文末的详细问题解决栏目】
所以出现 glibc和glibc-common版本冲突解决, 就是这个原因, 不能自己想装那个版本的glibc 和glib-common的【貌似高版本不会兼容低版本】。
这个glibc 要下载对应的centos的版本【文章开头】才行。
tar -zxvf redis-5.0.14.tar.gz
cd redis-5.0.14
make & make install
//执行以下命令可完成安装,致命错误解决。
make MALLOC=libc
daemonize改为yes
启动并指定配置文件
src/redis-server redis.conf
ps -ef | grep redis
退出redis服务
kill -9 PID
redis集群需要至少要三个master节点,我们这里搭建三个master节点,并且给每个master再搭建一个slave节点,总共6个redis节点,这里用一台机器(可以多台机器部署或者主从交叉,修改一下ip地址就可以了)部署6个redis实例,三主三从,搭建集群的步骤如下:
在第一台机器的/opt/下创建文件夹redis-cluster,然后在其下面创建6个文件夾如下:
mkdir redis-800{1,2,3,4,5,6}
把之前的redis.conf配置文件copy到redis-8001下,修改如下:
mv redis-5.0.14/redis.conf redis-8001/
1)daemonize yes
2)port 8001(分别对每个机器的端口号进行设置)
3)dir /opt/redis-cluster/8001/(指定数据文件存放位置,必须要指定不同的目录位置,不然会丢失数据)
4)cluster-enabled yes(启动集群模式)
5)cluster-config-file nodes-8001.conf(集群节点信息文件,这里800x最好和port对应上,redis自己维护这个文件)
6)cluster-node-timeout 5000
7)appendonly yes
如果要设置密码需要增加如下配置:
8)requirepass xxx (设置redis访问密码)
9)masterauth xxx (设置集群节点间访问密码,跟上面一致)
启动redis-server,并指定配置文件。
../redis-5.0.14/src/redis-server ./redis.conf
测试如果没有问题,继续操作,复杂配置到其他几台即可。
把修改后的配置文件,copy到8002-8006,修改【开始集群搭建】下第2、3、5项里的端口号,可以用批量替换。
cp ./redis.conf ../redis-8001/
cp ./redis.conf ../redis-8002/
cp ./redis.conf ../redis-8003/
cp ./redis.conf ../redis-8004/
cp ./redis.conf ../redis-8005/
cp ./redis.conf ../redis-8006/
vi /opt/redis_cluster/redis-8002/redis.conf
vi /opt/redis_cluster/redis-8003/redis.conf
vi /opt/redis_cluster/redis-8004/redis.conf
vi /opt/redis_cluster/redis-8005/redis.conf
vi /opt/redis_cluster/redis-8006/redis.conf
vi操作说明:
搜索:
/
全局替换:
:%s/源字符串/目的字符串/g 如 把8001换成8002 :%s/8002/80001/g
分别启动6个redis实例,检查是否启动成功。
启动命令
./redis-5.0.14/src/redis-server redis-8001/redis.conf
./redis-5.0.14/src/redis-server redis-8002/redis.conf
./redis-5.0.14/src/redis-server redis-8003/redis.conf
./redis-5.0.14/src/redis-server redis-8004/redis.conf
./redis-5.0.14/src/redis-server redis-8005/redis.conf
ps -ef | grep redis
如果刚刚已经启动了话 就不要重复启动了。
集群启动命令
用redis-cli创建整个redis集群(redis5以前的版本集群是依靠ruby脚本redis-trib.rb实现,redis5及以后版本源代码使用的是C语言)。
/opt/redis_cluster/redis-5.0.14/src/redis-cli --cluster create --cluster-replicas 1 10.0.218.213:8001 10.0.218.213:8002 10.0.218.213:8003 10.0.218.213:8004 10.0.218.213:8005 10.0.218.213:8006
输入yes
说明:
-a :密码;
–cluster-replicas 1:表示1个master下挂1个slave;
--cluster-replicas 2:表示1个master下挂2个slave。
M:代表为每个创建的主服务器节点创建一个从服务器节点。
查看帮助命令:
src/redis‐cli --cluster help
create: 创建一个集群环境host1:port1 ... hostN:portN
call: 可以执行redis命令
add-node:将一个节点添加到集群里,第一个参数为新节点的ip:port,第二个参数为集群中任意一个已经存在的节点的ip:port
del-node:移除一个节点
reshard: 重新分片
check: 检查集群状态
连接任意一个客户端即可。
有密码
./redis-cli -c -a xxx -h 10.0.218.213 -p 8004
无密码
./redis-cli -c -h 10.0.218.213 -p 8004
说明:‐a表示服务端密码;‐c表示集群模式;-h指定ip地址;-p表示端口号。
集群验证
查看集群信息
cluster info
查看节点列表
cluster nodes
关闭集群,则需要逐个进行关闭。
/opt/redis_cluster/redis-5.0.14/src/redis-cli -c -h 10.0.218.213 -p 8001 shutdown
需要密码加 -a xxx
以上图片,可以看到2个包相互依赖,先安装谁都不行。
解决方案:其实执行以下命令 rpm -qa |grep glibc
可以看到 centos安装了相应的包 如下
glibc-2.17-260.el7.x86_64
glibc-common-2.17-260.el7.x86_64
这个2个包默认已经安装,我拿到的这台服务器是这样的。所以此2个包不需要自己安装(最坑就是这里)。
如果情况和我一样的话,继续 gcc安装-第5、6步,安装以下2个包,即可继续安装。
glibc-headers-2.17-260.el7.x86_64
glibc-devel-2.17-260.el7.x86_64
这2个包下载要注意 对应 centos版本的默认的glibc-2.17-260.el7.x86_64、glibc-common-2.17-260.el7.x86_64 这2版本才会出现依赖问题2.17-260.el7.x86_64。
glibc-devel-2.17-260.el7_6.6.x86_64.rpm 【这种el7_6.6】小版本的都不行。
建议和默认glibc保持一致就行,省去许多麻烦。
最后安装完成再次使用 rpm -qa |grep glibc,可以看到以下4个glibc包,应该就没有问题,继续执行第7步。
glibc-2.17-260.el7.x86_64
glibc-common-2.17-260.el7.x86_64
glibc-headers-2.17-260.el7.x86_64
glibc-devel-2.17-260.el7.x86_64
下载地址上面已经说了哈。
解决方案:加 --replacefiles参数
rpm -ivh xxx.rpm --replacefiles
cpp = 4.8.5-39.el7 被 gcc-4.8.5-39.el7.x86_64 需要
glibc-devel >= 2.2.90-12 被 gcc-4.8.5-39.el7.x86_64 需要
libgcc >= 4.8.5-39.el7 被 gcc-4.8.5-39.el7.x86_64 需要
libgomp = 4.8.5-39.el7 被 gcc-4.8.5-39.el7.x86_64 需要
libmpc.so.3()(64bit) 被 gcc-4.8.5-39.el7.x86_64 需要
libmpfr.so.4()(64bit) 被 gcc-4.8.5-39.el7.x86_64 需要
解决办法:
采用常规思路,需要什么就去下载什么,先安装相关其他依赖,再尝试安装gcc即可。
再次推荐2个好用的地址:http://rpmfind.net/linux/RPM/index.html 或者http://rpm.pbone.net/
谢谢认真阅读完的你!
感谢
如果您认为这篇文章还不错或者有所收获,您可以点击右下角的【点赞】支持,或请我喝杯咖啡【赞赏】,这将是我继续写作,分享的最大动力!
作者:勤快的小蚂蚁
声明:原创博客请在转载时保留原文链接或者在文章开头加上本人博客地址,如发现错误,欢迎批评指正。凡是转载于本人的文章,不能设置打赏功能,如有特殊需求请与本人联系!