Linux搭建Redis集群
1 说明
1.1 编写目的
本文编写旨在介绍Redis的集群架构配置,了解Redis的基本使用。
1.2 适用范围
本文适用于对Redis集群比较有兴趣的童鞋。本文仅介绍了Redis的基本知识、集群架构,以及Redis的基本使用;大神请飘过。
2 配置准备
2.1 服务器准备
一般情况下,Redis集群至少需要6个节点,3主3从。本文就以2台机器6个节点作为安装环境进行配置,操作系统以Centos 6.10为例,如果有多台机器的童鞋可以添加更多的节点。
各个节点及描述如下表所示:
机器名 | IP | 描述 |
---|---|---|
node2 | 192.168.204.132 | 创建三个节点7001,7002,7003 |
node3 | 192.168.204.133 | 创建三个节点7004,7005,7006 |
2.2 环境准备
CentOs6.10;
2.3 软件准备
Redis是一款开源软件,可到官网地址下载:
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
(具体版本以公司规定或者官网为准)
3 Redis安装
3.1 Redis安装
如无特别说明,两台服务器操作一致;
1、进入某一目录(本文以/home为例),执行如下命令完成Redis的下载:
wget http://download.redis.io/releases/redis-4.0.1.tar.gz
2、执行命令解压压缩包至软件常用安装目录:
[root@node2 home]# tar -zxvf redis-4.0.1.tar.gz -C /usr/local/apps/
(/usr/local/apps/ 为我的redis安装目录,读者君可酌情修改)
3、编译以及安装
切换目录至redis解压目录:cd /usr/local/apps/redis-4.0.1
编译以及安装make && make install
4、创建bin目录并且将常用命令拷贝至bin目录,这样方便管理
mkdir /usr/local/apps/redis-4.0.1/bin/
cp redis-server redis-cli redis-sentinel redis-benchmark redis-check-aof redis-check-rdb redis-trib.rb /usr/local/apps/redis-4.0.1/bin/
5、创建多实例文件夹
cd /usr/local/apps/redis-4.0.1/
mkdir redis-cluster
cd redis-cluster
mkdir 7001 7002 7003
另一台服务器可创建目录7004 7005 7006
6、复制配置文件redis.conf至各实例文件夹
cp -f /usr/local/apps/redis-4.0.1/redis.conf /usr/local/apps/redis-4.0.1/ redis-cluster/7001/
cp -f /usr/local/apps/redis-4.0.1/redis.conf /usr/local/apps/redis-4.0.1/ redis-cluster/7002/
cp -f /usr/local/apps/redis-4.0.1/redis.conf /usr/local/apps/redis-4.0.1/ redis-cluster/7003/
另一台服务器可复制至7004 7005 7006下
7、修改各实例文件夹中配置文件,将相应配置和实例文件夹名相对应
vi /usr/local/apps/ redis-4.0.1/redis-cluster/redis.conf
bind 192.168.1.132 (需要不同的服务器进行节点的联通,就不能设为127.0.0.1)
protected-mode no (需要不同的服务器进行节点的联通,就不能设为yes)
daemonize yes (设置后台运行redis)
cluster-enabled yes(开启集群,把#去掉)
cluster-node-timeout 15000 (设置请求超时时间,默认为15秒,可以自行修改)
appendonly yes (aop日志开启,会每次进行写操作都记录一条日志)
–根据不同的端口需要设置的地方
port 7001
pidfile /var/run/redis_7001.pid
logfile /var/log/redis/redis_7001.log
dbfilename dump_7001.rdb
appendfilename “appendonly_7001.aof”
cluster-config-file nodes_7001.conf
另一台服务器可做相应配置。
8、启动各个节点
cd /user/local/apps/redis-4.0.1/redis-cluster/
redis-server /usr/local/apps/redis-4.0.1/redis-cluster/7001/redis.conf
redis-server /usr/local/apps/redis-4.0.1/redis-cluster/7002/redis.conf
redis-server /usr/local/apps/redis-4.0.1/redis-cluster/7003/redis.conf
启动节点的时候配置文件中的日志目录不存在,需要自己创建一下;
同样启动另一台服务器的3个节点;
9、安装rvm
依次执行如下命令:
curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -O https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer
curl -O https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer.asc
gpg --verify rvm-installer.asc &&
bash rvm-installer stable
source /usr/local/rvm/scripts/rvm
10、安装ruby
rvm install ruby-2.5.1
11、使用gem安装redis的ruby接口
gem install redis
12、防火墙策略
检查防火墙是否关闭,如果没有关闭则可以配置开通端口和集群总线端口
firewall-cmd --zone=public --add-port=7001-7003/tcp --permanent
firewall-cmd --zone=public --add-port=17001-17003/tcp --permanent (必须开集群总线端口,集群总线端口=端口号 +10000,例:7001的集群总线端口是17001。这个集群总线端口不开放,集群的时候外部服务器的节点添加不进来)
另一台服务器可做相应配置。
13、创建集群
redis官方提供了redis-trib.rb 这个工具,就这解压目录src目录中,第4步中已将它复制到/usr/local/apps/redis-4.0.1/bin/目录中,可以直接在命令行中使用。
cd /usr/local/apps/redis-4.0.1/bin/
redis-trib.rb create --replicas 1 192.168.204.132:7001 192.168.204.132:7002 192.168.204.132:7003 192.168.204.133:7004 192.168.204.133:7005 192.168.204.133:7006
Ruby会自动为你分配槽位和建立主从关系。 留意一下屏幕,会有一句(type ‘yes’ or accept),输入yes,回车。(意思是:接受自主分配三主三从)
如果最后出现
输入yes后我们可以看到
说明集群搭建成功。
如果出现
一直出现省略号,说明另一台服务器的端口策略没通,一直在等那边的节点加入集群,请检查上诉配置以及防火墙;
14、验证集群
在第一台服务器上连接集群的某一端口(7001)节点,连接方式为:
redis-cli -h 192.168.204.132 -c -p 7001
在另一台服务器上连接某一端口(7004)节点,连接方式为:
redis-cli -h 192.168.204.133 -c -p 7004
(加参数 -c 可以连接到集群,因为redis.conf将bind改为了ip地址,所以 -h 不可以省略,两台服务器可连接任意7001—7006中任意端口)
在7001节点上执行命令 set hello redisCluster
在另一台服务器上7004节点执行命令查看key为‘hello’的内容 get hello
说明集群运行正常。
3.2 Redis配置
安装完成后需对redis进行配置,配置主要体现在redis.conf
daemonize:如需要在后台运行,把该项的值改为yes
pdifile:把pid文件放在/var/run/redis.pid,可以配置到其他地址
bind:指定redis只接收来自该IP的请求,如果不设置,那么将处理所有请求,在生产环节中最好设置该项
port:监听端口,默认为6379
timeout:设置客户端连接时的超时时间,单位为秒
loglevel:等级分为4级,debug,revbose,notice和warning。生产环境下一般开启notice
logfile:配置log文件地址,默认使用标准输出,即打印在命令行终端的端口上
database:设置数据库的个数,默认使用的数据库是0
save:设置redis进行数据库镜像的频率
rdbcompression:在进行镜像备份时,是否进行压缩
dbfilename:镜像备份文件的文件名
dir:数据库镜像备份的文件放置的路径
slaveof:设置该数据库为其他数据库的从数据库
masterauth:当主数据库连接需要密码验证时,在这里设定
requirepass:设置客户端连接后进行任何其他指定前需要使用的密码
maxclients:限制同时连接的客户端数量
maxmemory:设置redis能够使用的最大内存
appendonly:开启appendonly模式后,redis会把每一次所接收到的写操作都追加到appendonly.aof文件中,当redis重新启动时,会从该文件恢复出之前的状态
appendfsync:设置appendonly.aof文件进行同步的频率
vm_enabled:是否开启虚拟内存支持
vm_swap_file:设置虚拟内存的交换文件的路径
vm_max_momery:设置开启虚拟内存后,redis将使用的最大物理内存的大小,默认为0
vm_page_size:设置虚拟内存页的大小
vm_pages:设置交换文件的总的page数量
vm_max_thrrads:设置vm IO同时使用的线程数量