环境准备
Redis集群安装需要至少三台机器,由于每台机器至少需要一个从节点,所以至少需要6台机器,为了保证其中某一台机器宕机时,不会造成数据的丢失。我这里机器个数有限,我只使用3台机器,每台机器部署一个主节点和一个从节点。
CentOS7 三台(k8s-master01:192.168.0.10 k8s-node02:192.168.0.20 k8s-node03:192.168.0.30)
redis-3.0.0.tar.gz 安装包
为了使集群和其他redis服务区分开来,创建redis目录用来存放redis集群的文件:
[root@k8s-master01 home]$ pwd
/usr/local/home
[root@k8s-master01 apps]$ mkdir redis
[root@k8s-master01 apps]$ cd redis/
[root@k8s-master01 reids]$ mkdir 7000 7001 7002 7003 7004 7005
解压
解压redis-3.0.0.tar.gz
源码包,并进入该目录执行以下命令:
[root@k8s-master01 home]$ pwd
/usr/local/home
[root@k8s-master01 home]$ tar -zvxf redis-3.0.0.tar.gz -C ./
[root@k8s-master01 home]$ cd redis-3.0.0
[root@k8s-master01 redis-3.0.0]$ make && make install prefix=/usr/local/home/redis
make install时出现错误You need tcl 8.5or newer in order to run the Redis test
,解决方法
安装
redis
单机版已经安装成功,在redis
目录下有一个bin
目录,里面存放的就是刚才编译安装好的redis
。复制redis/bin
目录中的redis.conf
文件到redis/7000
、redis/7001
、redis/7002
、redis/7003
、redis/7004
和redis/7005
目录中,并修改如下内容:
# 端口号
port port
# 后台启动
daemonize yes
# 开启集群
cluster-enabled yes
#集群节点配置文件
cluster-config-file nodes-port.conf
# 集群连接超时时间
cluster-node-timeout 5000
# 进程pid的文件位置
pidfile /var/run/redis-port.pid
# 开启aof
appendonly yes
# aof文件路径
appendfilename "appendonly-7005.aof"
# rdb文件路径
dbfilename dump-port.rdb
例如在7000
目录中redis.conf
的配置如下:
# 端口号
port 7000
# 后台启动
daemonize yes
# 开启集群
cluster-enabled yes
#集群节点配置文件
cluster-config-file nodes-7000.conf
# 集群连接超时时间
cluster-node-timeout 5000
# 进程pid的文件位置
pidfile /var/run/redis-7000.pid
# 开启aof
appendonly yes
# aof文件路径
appendfilename "appendonly-7005.aof"
# rdb文件路径
dbfilename dump-7000.rdb
将7002
和7003
分发到k8s-node02
,将7004
和7005
分发到k8s-node03
:
[root@k8s-master01 home]$ pwd
/usr/local/home
[root@k8s-master01 home]$ scp -r ./redis/7002/ k8s-node02:/usr/local/home/redis/
[root@k8s-master01 home]$ scp -r ./redis/7003/ k8s-node02:/usr/local/home/redis/
[root@k8s-master01 home]$ scp -r ./redis/7004/ k8s-node03:/usr/local/home/redis/
[root@k8s-master01 home]$ scp -r ./redis/7005/ k8s-node03:/usr/local/home/redis/
# 删除 xiaoer 主机上的 7002、7003、7004、7005 文件
[root@k8s-master01 home]$ rm -rf ./redis/7002/
[root@k8s-master01 home]$ rm -rf ./redis/7003/
[root@k8s-master01 home]$ rm -rf ./redis/7004/
[root@k8s-master01 home]$ rm -rf ./redis/7005/
启动每个节点的redis-server
服务:
# k8s-master01
[root@k8s-master01 redis]$ pwd
/usr/local/home/redis
[root@k8s-master01 redis]$ mv ./* ./
[root@k8s-master01 redis]$ ./redis-server ./7000/redis.conf
[root@k8s-master01 redis]$ ./redis-server ./7001/redis.conf
# k8s-node02
[root@k8s-node02 redis]$ pwd
/usr/local/home/redis
[root@k8s-node02 redis]$ mv ./* ./
[root@k8s-node02 redis]$ ./redis-server ./7002/redis.conf
[root@k8s-node02 redis]$ ./redis-server ./7003/redis.conf
# k8s-node03
[root@k8s-node03 redis]$ pwd
/usr/local/home/redis
[root@k8s-node03 redis]$ mv ./* ./
[root@k8s-node03 redis]$ ./redis-server ./7004/redis.conf
[root@k8s-node03 redis]$ ./redis-server ./7005/redis.conf
此时每个节点的redis
服务已经启动,但是每个服务都是单独的服务,并没有构成集群,构成集群我们使用官方提供的工具redis-trib
,这个工具是用ruby
写的,所以需要安装ruby
环境
[root@k8s-master01 redis]$ sudo yum install ruby rubygems -y
这里安装ruby有点小问题,具体问题
在使用工具redis-trib连接之前,需要先安装gem-redis,如果网络可以,可以在线安装,网络差的情况下,可以离线安装:
# 在线安装
[root@k8s-master01 redis]$ gem install redis
# 离线安装:将下载好的 redis-3.0.0.gem 上传到 redis-cluster
[root@k8s-master01 redis]$ gem install ./redis-3.0.0.gem
使用redis.trib工具进行连接:
[root@k8s-master01 redis]$ ./redis-trib.rb create --replicas 1 192.168.0.10:7000 192.168.0.10:7001 192.168.0.20:7002 192.168.0.20:7003 192.168.0.30:7004 192.168.0.30:7005
这里会提示使用redis-cli
将下面命令复制执行
./bin/redis-cli --cluster create 192.168.0.10:7000 192.168.0.10:7001 192.168.0.20:7002 192.168.0.20:7003 192.168.0.30:7004 192.168.0.30:7005 --cluster-replicas 1