1. 将6379端口在防火墙看开启
[root@redis1 ~]#vi /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 6379 -j ACCEPT
注:必须加在 REJECT 前面。
2.修改Selinux参数
[root@redis1 ~]#vi /etc/selinux/config
SELINUX=disabled
注:分别在其它几个节点上同样配置防火墙和 SELINUX。
二.安装Redis
1.安装系统组件
安装gcc、tcl
yum install –y gcc-c++
yum install –y tcl
2.安装redis
2.1.解压 Redis 到/usr/local目录下
[root@redis1 ~]# tar -zxvf /root/software/redis-3.2.6.tar.gz -C /usr/local/
2.2.在解压后的目录中进行 make 和 make test
[root@redis1 ~]# cd /usr/local/redis-3.2.6
[root@redis1 redis-3.2.6]# make
[root@redis1 redis-3.2.6]# make test
注:要检查 make 和 make test 的结果是否都正确,如果报错,针对性检查并安装系统缺少的组件。
2.3. 复制 redis-server 和 redis-cli 到/usr/local/bin 目录下:
[root@redis1 redis-3.2.6]# cd src
[root@redis1 src]# cp redis-server /usr/local/bin/
[root@redis1 src]# cp redis-cli /usr/local/bin/
2.4验证 Redis 安装是否成功:
[root@redis1 ~]# redis-server
[root@redis1 ~]# redis-cli
注:安装其它 5 台服务器
三.配置集群模式
1.配置 redis.conf
1.1 配置 redis.conf
[root@redis1 ~]# mkdir /etc/redis
[root@redis1 ~]# cd /etc/redis
[root@redis ~]# vi redis.conf
port 6379
daemonize yes
cluster-enabled yes
cluster-config-file /etc/redis/nodes.conf
cluster-node-timeout 5000
appendonly yes
requirepass Ab123456
注 1:cluster-node-timeout 是集群中各节点相互通讯时,允许“失联”的最大毫秒数,本演示
中配置的为 5 秒,如果超过 5 秒某个节点没有向其它节点汇报成功,认为该节点挂了。
注 2:requirepass 是 Redis 访问密码,为了安全起见,该参数建议必须配置,从但客户端
Jedis 版本必须使用 2.8.x 以上的版本,否则需要通过扩展 JedisCluster 来实现对密码访问的
支持。此外几个 Redis 节点的密码应该设置为相同的。
注 3:分别在其它几个节点上创建与上面相同的 redis.conf 文件,内容也相同。
注 4:重启/重建 Redis 集群时,必须删除去/etc/redis/nodes.conf 文件。
1.2以次启动所有节点
[root@redis1 ~]# redis-server /etc/redis/redis.conf
[root@redis2 ~]# redis-server /etc/redis/redis.conf
[root@redis3 ~]# redis-server /etc/redis/redis.conf
[root@redis4 ~]# redis-server /etc/redis/redis.conf
[root@redis5 ~]# redis-server /etc/redis/redis.conf
[root@redis6 ~]# redis-server /etc/redis/redis.conf
2.安装 Redis 集群所需的 Ruby 工具
2.1安装 Ruby 工具:
Redis 集群需要借助其它工具将相关节点加入到 Cluster 中,而这个工具是由 Redis 提供
一个名为 redis-trib.rb 的 ruby 脚本,否则接下来创建 cluster 会失败。
[root@redis1 ~]# cd /usr/local/redis-3.2.6/src
[root@redis1 src]# yum install –y ruby
[root@redis1 src]# yum install -y rubygems
[root@redis1 src]# gem install redis --version 3.0.0
[root@redis1 src]# gem list
2.2 设置 Ruby 连接 Redis 的密码:
[root@redis1 ~]# vi /usr/lib/ruby/gems/1.8/gems/redis-3.0.0/lib/redis/client.rb
:password =>"Ab123456"
注:分别在其它几个节点上用同样的方式安装好 Ruby 工具
3 利用redis-trib.rb 创建 Redis集群
3. 1. 在 src 目录下运行以下脚本:
[root@redis1 ~]# cd /usr/local/redis-3.2.6/src
[root@redis1 src]# ./redis-trib.rb create --replicas 1 10.50.130.101:6379 10.50.130.102:6379
10.50.130.103:6379 10.50.130.104:6379 10.50.130.105:6379 10.50.130.106:6379
注 1:只需在其中某个个节点执行以上脚本(本例在第一个节点执行)。
注 2:利用 redis-trib 创建 Cluster,只需要操作一次即可,假设系统关机、重启,把所有的
节点全部关闭之后,下次重启后,即自动进入 Cluster 模式,不用现次执行 redis-trib.rb cteate
命令。
3.2查看 Cluster 进程:
[root@redis1 ~]# ps -ef|grep redis
[root@redis2 ~]# ps -ef|grep redis
[root@redis3 ~]# ps -ef|grep redis
[root@redis4 ~]# ps -ef|grep redis
[root@redis5 ~]# ps -ef|grep redis
[root@redis6 ~]# ps -ef|grep redis
3.3 查看节点属性(Master/Slave)
[root@redis1 ~]# cd /usr/local/redis-3.2.6/src
[root@redis1 src]# ./redis-trib.rb check 10.50.130.101:6379
[root@redis1 src]# ./redis-trib.rb check 10.50.130.102:6379
[root@redis1 src]# ./redis-trib.rb check 10.50.130.103:6379
[root@redis1 src]# ./redis-trib.rb check 10.50.130.104:6379
[root@redis1 src]# ./redis-trib.rb check 10.50.130.105:6379
[root@redis1 src]# ./redis-trib.rb check 10.50.130.106:6379
3.4查看节点/集群信息
redis-cli 客户端登录到任一个节点,查看:
4.Jedis 测试 Redis 集群
一、目录1、工具
2、安装tcl
3、安装单机版redis
4、把redis设置为daemon进程,每次系统启动,redis进程一起启动
5、安装redis cluster
二、工具
2.1、tcl8.6.1-src.tar.gz
2.2、ruby-2.3.1.tar.gz
2.3、redis-4.1.1.gem
2.4、redis-3.2.8.tar.gz
2.5、openssl-1.0.2r.tar.gz
三、安装tcl(安装redis必须先要安装tcl)
3.1、把tcl8.6.1-src.tar.gz通过WinSCP上传到虚拟机中的/usr/local目录下
四、安装单机版redis
4.1、把redis-3.2.8.tar.gz通过WinSCP上传到虚拟机中的/usr/local目录下
4.2、依次运行如下命令:
tar -zxvf redis-3.2.8.tar.gz 解压文件
cd redis-3.2.8
make &&make test &&make install
五、把redis设置为daemon进程,每次系统启动,redis进程一起启动
5.1、将redis的utils目录下的redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号
5.2、修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)
protected-mode no 取消保护模式,保护模式只能127.0.0.1访问
daemonize yes 让redis以daemon进程运行
pidfile /var/run/redis_6379.pid 设置redis的pid文件位置
bind192.168.3.110
port6379设置redis的监听端口号
dir /var/redis/6379 设置持久化文件的存储位置
logfile /var/log/redis/6379.log设置日志文件位置
5.6、启动redis,依次执行:
cd /etc/init.d,
chmod 777 redis_6379,赋读写执行的权限(chmod -R 777 * 是递归把该目录下的所有文件和其子文件全部赋权限)
./redis_6379 start 启动
5.7、确认redis进程是否启动,ps -ef | grep redis
5.8、让redis跟随系统启动自动启动
5.9、重启系统,不手动启动redis,直接连接redis,可以连接上,表示配置成功
此时一个单机版的redis的生产环境已经搭建好了,每次服务器重启,redis都会自动的启动
六、安装redis cluster
(redis cluster集群,要求至少3个master,去组成一个高可用,健壮的分布式的集群,每个master都建议至少给一个slave,3个master,3个slave)
6.1、前提,我在其它机器上启动了六个redis(安装步骤都如下)
2.2、创建三个目录:
mkdir -p /etc/redis-cluster 存放集群配置信息,自动生成配置
mkdir -p /var/log/redis redis日志
mkdir -p /var/redis/7001 存放redis的rdb文件和aof文件
6.3、将redis的utils目录下的redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_7001,7001是我们希望这个redis实例监听的端口号,并修改redis_7001配置文件中的REDISPORT=7001
6.4、修改/etc/redis/7001.conf中的部分配置为生产环境
6.5、完成了一个redis环境的配置,依次再配置其余五个,分别为7002、7003、7004、7005、7006,每个启动脚本内,都修改对应的端口号
6.6、启动6个redis实例
6.7、创建集群(需要安装ruby、rubygems)
上述命令在部分机器上是可以直接运行完成,成功安装的,但在部分机器上运行第三条命令时会提示ruby版本太低、openssl找不到的问题,下面依次解决这两个问题:
6.8、再次运行gem install redis命令,报出两个错误
6.9、再次运行gem install redis命令,报出一个错误
6.10、再次运行gem install redis命令,报出一个错误
6.11、再次运行gem install redis命令
[root@ceshi01 local]# gem install redis
Successfully installed redis-4.1.1
Parsing documentation for redis-4.1.1
Done installing documentation for redis after 1 seconds
WARNING: Unable to pull data from ' https://rubygems.org/' : SSL_connect returned=1 errno=0 state=error: certificate verify failed ( https://api.rubygems.org/specs.4.8.gz )
1 gem installed
运行成功
此时Redis安装好,此三个工具也安装好了,这时我们来做一个Redis集群测试,在一台服务器中创建了6个Redis实例,开启6个Redis服务
redis-trib.rb create --replicas 1 192.168.3.104:7001 192.168.3.104:7002 192.168.3.105:7003 192.168.3.105:7004 192.168.3.106:7005 192.168.3.106:7006
[root@eshop-cache02 init.d]# redis-trib.rb create --replicas 1 192.168.3.104:7001 192.168.3.104:7002 192.168.3.105:7003 192.168.3.105:7004 192.168.3.106:7005 192.168.3.106:7006
此时一个redis集群环境就已经搭建好了,可以通过redis-trib.rb check 192.168.3.105:7003命令查看集群几点的信息
[root@eshop-cache02 init.d]# redis-trib.rb check 192.168.3.105:7004
redis cluster的优点:读写分离+高可用+多master
读写分离:每个master都有一个slave
高可用:master宕机,slave自动被切换过去
多master:横向扩容支持更大数据量