------------------------------------------------------------------ 非核心操作 -----------------------------------------------------------------------------------
安装epel源:
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
升级系统内核、更新软件
清空yum缓存:yum clean all
重新生成缓存:yum makecache
更新系统和软件源:yum upgrade [filename]
更新系统和软件:yum update [filename]
---------------------------------------------------------------------- 核心操作 ----------------------------------------------------------------------------------
1. root 创建并切换到/data目录
mkdir /data/redis-cluster && cd /data
2. 下载redis安装包
wget http://download.redis.io/releases/redis-5.0.7.tar.gz
3. 解压安装包,进入解压后的redis根目录并安装
tar -xzf redis-5.0.7.tar.gz && cd redis-5.0.7 && make && make test(如果make失败,根据提示处理)
cp src/redis-server /usr/local/bin/ cp src/redis-cli /usr/local/bin/ #方便使用
4. 修改配置文件支持集群
vim redis.conf
调整后结果如下所示:
prot 8369
cluster-enabled yes
cluster-config-file nodes-8369.conf # 会在根目录自动生成nodes-8369.conf配置文件
cluster-node-timeout 15000
appendonly yes
bind 0.0.0.0
cluster-require-full-coverage no
daemonize yes
pidfile redis_8369.pid
masterauth admin
requirepass admin
动态配置参数(需要登录各个reidis节点,不需要重启节点):
config set masterauth admin
config set requirepass admin
config rewrite
5. 复制修改后的redis配置文件到redis-cluster目录,再通过脚本批量复制出 5 份配置文件(三主三从集群)。
cd ../redis-cluster && cp ../redis-5.0.7/redis.conf ./redis8369.conf
#### 6个配置文件放到6个文件夹下更贴近实际生产环境。原理一样的,这里懒得改了。
新建批处理shell脚本batch.sh,内容如下:
#!/bin/bash
# ******************************************************
# ** batch process redis.conf of other node
# ******************************************************
sed 's/8369/8370/g' redis8369.conf >redis8370.conf
sed 's/8369/8371/g' redis8369.conf >redis8371.conf
sed 's/8369/8372/g' redis8369.conf >redis8372.conf
sed 's/8369/8373/g' redis8369.conf >redis8373.conf
sed 's/8369/8374/g' redis8369.conf >redis8374.conf
6. 安装ruby(为了执行redis-trib.rb文件)
查看ruby版本是否>=2.3.0
yum list available | grep ruby
>=2.3.0
yum -y install ruby
<2.3.0
安装CentOS-SCLo-scl-rh.repo源(包含高版本ruby):yum -y install centos-release-scl-rh
查看ruby安装包:yum list available | grep ruby | grep centos-sclo-rh
安装:yum install rh-ruby26 -y
编辑配置文件:vim /etc/profile.d/rh-ruby26.sh 添加以下内容 (没有这个配置,ruby&gem重启后会失效)
source /opt/rh/rh-ruby26/enable
export X_SCLS="`scl enable rh-ruby26 'echo $X_SCLS'`"
export PATH=$PATH:/opt/rh/rh-ruby26/root/usr/local/bin
加载环境变量:enable rh-ruby26 bash
查看版本:ruby -v 和 gem -v
7. 安装ruby 的redis驱动(ruby版本>=2.3.0)
gem install redis
8. 编写启动redis 启动脚本和redis-cluster 启动脚本
redis启动/停止脚本redisctl.sh内容如下(前提是配置文件名为redis+端口),停止脚本可以从下面脚本中抽取出来:
#!/bin/bash
# ******************************************************
# ** redis control -- start/restart/stop
# ******************************************************
if [[ ! -n "$1" ]]; then
echo "SYNOPSIS: sh redisctl.sh start|restart|stop [port]"
echo "exp: sh redisctl.sh start 8369"
exit 0
fi
if [[ ! -n "$2" ]]; then
# stop all redis-cluter nodes
PROCESS=`ps -ef | grep 'redis-server' |grep 'cluster'|grep -v PPID|awk '{ print $2}'`
else
PROCESS=`ps -ef | grep 'redis-server' |grep 'cluster'|grep -v PPID | grep "$2" |awk '{ print $2}'`
fi
for i in $PROCESS
do
echo "Killing redis$2 process [ $i ]"
kill -9 $i
echo "redis$2 stoped"
done
if [[ "$1" == "stop" ]]; then
exit 0
elif [[ -n "$2" ]]; then
redis-server redis"$2".conf &
echo node "$2" started...
else
# restart all redis-cluster nodes
redis-server redis8369.conf &
echo node 8369 started...
redis-server redis8370.conf &
echo node 8370 started...
redis-server redis8371.conf &
echo node 8371 started...
redis-server redis8372.conf &
echo node 8372 started...
redis-server redis8373.conf &
echo node 8373 started...
redis-server redis8374.conf &
echo node 8374 started...
fi
redis-cluster启动脚本clusterctl.sh内容如下,仔细看了下--cluster相关参数没有停止参数,启动一次就不用管了,redis节点宕了重启后会自动加入集群:主意脚本ip。用外网能访问的ip。不然不在一台机器上的服务用不了。(生产环境一定是能相互访问的,自搭测试环境需要主意下)
#!/bin/bash
# ******************************************************
# ** redis cluster control -- start/stop
# ******************************************************
redis-cli --cluster create --cluster-replicas 1 192.168.56.100:8369 192.168.56.100:8370 192.168.56.100:8371 192.168.56.100:8372 192.168.56.100:8373 192.168.56.100:8374 -a admin
9. 查看集群信息
任意登录一个节点: redis-cli -c -h 127.0.0.1 -p 8370 -a admin
cluster info 查看集群状态
cluster nodes 查看节点信息
cluster help 查看更多cluster选项(还是在未登录是用redis-cli --cluster help 视觉效果要好点)
10. 删除集群
删除所有的aof、rdb及node config文件。
------------------------------------------------------------------------------- 结束语 -------------------------------------------------------------------------------
聪明的你肯定发现了这里虽然装了ruby但是并没有用redis-trib.rb创建集群,而是用的redis-cli创建的。所以把步骤6,7去掉理论上应该也可以的(未验证),欢迎验证踩过坑的不吝赐教。