单机搭建:
安装tcl
wget http://downloads.sourceforge.net/tcl/tcl8.6.11-src.tar.gz
tar -xzvf tcl8.6.11-src.tar.gz
cd /usr/local/tcl8.6.11/unix/
./configure #需要先安装gcc yum -y install gcc
make && make install
安装redis
tar -zxvf redis-6.2.5.tar.gz
cd redis-6.2.5
make && make test && make install
设置后台启动:
1、redis utils目录下,有个redis_init_script脚本
2、将redis_init_script脚本拷贝到linux的/etc/init.d目录中,将redis_init_script重命名为redis_6379,6379是我们希望这个redis实例监听的端口号
3、修改redis_6379脚本的第6行的REDISPORT,设置为相同的端口号(默认就是6379)
4、创建两个目录:/etc/redis(存放redis的配置文件),/var/redis/6379(存放redis的持久化文件)
mkdir -p /etc/redis
mkdir -p /var/redis/6379
mkdir -p /var/log/redis
5、修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis目录中,修改名称为6379.conf
修改redis.conf中的部分配置为生产环境
daemonize yes 让redis以daemon进程运行
pidfile /var/run/redis_6379.pid 设置redis的pid文件位置
port 6379 设置redis的监听端口号
dir /var/redis/6379 设置持久化文件的存储位置
logfile /var/log/redis/6379.log 设置启动日志文件
7、启动redis ./redis_6379 start
8、确认redis进程是否启动,ps -ef | grep redis
9、让redis跟随系统启动自动启动
在redis_6379脚本中,最上面,加入两行注释
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database
保存后执行命令:
chkconfig redis_6379 on
外部访问:
1.关闭防火墙firewall
systemctl stop firewalld.service
systemctl disable firewalld.service
2.关闭防火墙firewall后开启
systemctl start firewalld.service
开启访问端口:
firewall-cmd --zone=public --add-port=6379/tcp --permanent
重启防火墙
firewall-cmd --reload
修改redis配置文件设置 protected-mode 为no:
protected-mode no
主从搭建
master和slave配置和单机搭建一样
salve有几个地方需要修改 redis不同版本可能名字不一样:
replicaof 192.168.96.127 6379 redis主节点
replica-read-only yes redis slave node只读,默认开启
masterauth <master-password> redis主节点开启认证的配置
如果master开启认证,则在配置文件中添加:
requirepass password
主节点设置了认证,在客户端登录
redis-cli -h 192.168.96.127 -p 6379
进去之后,进行验证,否则没法执行命令
auth password
sentinel搭建
节点搭建和和主从一样
在主节点的配置文件加上下面配置,为了主节点挂了重启作为slave节点需要认证
masterauth <master-password> redis主节点开启认证的配置
在salve节点的配置文件加上下面的配置,为了主节点挂了,自动切换为主节点的连接认证
requirepass password
sentinel配置
创建文件夹,用来存放配置
mkdir /etc/sentinal
mkdir -p /var/sentinal/5000
修改sentinel配置文件(默认在根目录下,sentinel.conf),拷贝到/etc/sentinel目录中,修改名称为5000.conf
port 5000 端口
bind 192.168.96.127 bind主机
dir /var/sentinal/5000 数据文件
sentinel monitor mymaster 192.168.96.127 6379 2 监听redis主机点ip+port quorum数量
sentinel down-after-milliseconds mymaster 30000 超过多少毫秒跟一个redis实例断了连接,哨兵就可能认为这个redis实例挂了
sentinel failover-timeout mymaster 60000 执行故障转移的timeout超时时长
sentinel parallel-syncs mymaster 1 新的master别切换之后,同时有多少个slave被切换到去连接新master,重新做同步
当在Redis实例中开启了requirepass foobared 授权密码这样所有连接kedis实例的客户端都要提供密码
#设置哨兵sentinel连接主从的密码注意必须为主从设置- - 样的验证密码
# sentine1 auth-pass <master-name> <password>
sentine1 auth-pass mymaster password
启动
redis-sentinel /etc/sentinal/5000.conf
控制台输出:
客户端连接sentinel:
redis-cli -h 192.168.96.127 -p 5000
sentinel命令:
sentinel master mymaster
SENTINEL slaves mymaster
SENTINEL sentinels mymaster
SENTINEL get-master-addr-by-name mymaster
把redis master节点停掉,过一会就看到故障恢复日志
cluster搭建
创建需要的文件
mkdir -p /etc/redis-cluster
mkdir -p /var/log/redis
mkdir -p /var/redis/7001
修改redis配置文件(默认在根目录下,redis.conf),拷贝到/etc/redis-cluster目录中,修改名称为7001.conf
port 7001
cluster-enabled yes
cluster-config-file /etc/redis-cluster/node-7001.conf
cluster-node-timeout 15000
daemonize yes
pidfile /var/run/redis_7001.pid
dir /var/redis/7001
logfile /var/log/redis/7001.log
bind 192.168.31.187
appendonly yes
注意:replicaof 需要注释掉
将配置文件也放在在/etc/redis
配置其他几个同样的节点
和单节点一样 在/etc/init.d下,放启动脚本,为: redis_7001,修改里面的
REDISPORT=7001 redis启动的端口号
安装创建集群需要的内容 :
yum install -y ruby
yum install -y rubygems
gem install redis
centos7使用下面的命令:
yum install centos-release-scl-rh.noarch
yum -y makecache
yum install rh-ruby25
scl enable rh-ruby25 bash
ruby -v 查询ruby版本
yum -y install ruby-devel rubygems rpm-build
复制redis-trib.rb
cp /usr/local/redis-6.2.5/src/redis-trib.rb /usr/local/bin
先启动redis,在创建redis cluster,不同的redis或系统操作命令可能不一样
redis-cli --cluster create 192.168.96.127:7001 192.168.96.127:7002 192.168.96.126:7003 192.168.96.126:7004 192.168.96.124:7005 192.168.96.124:7006 --cluster-replicas 1
也可能是这样的命令
redis-trib.rb create --replicas 1 192.168.96.127:7001 192.168.96.127:7002 192.168.96.126:7003 192.168.96.126:7004 192.168.96.124:7005 192.168.96.124:7006
replicas表示每个master有几个slave
注意:需要开放对于的端口号,或服务器之间配置免密通信
cluster加入新节点
redis-trib.rb add-node 192.168.31.227:7007 192.168.31.187:7001
或
redis-cli --cluster add-node 192.168.31.227:7007 192.168.31.187:7001
添加从节点
redis-trib.rb add-node --slave --master-id 28927912ea0d59f6b790a50cf606602a5ee48108 192.168.31.227:7008 192.168.31.187:7001
或
redis-cli --cluster add-node 192.168.31.227:7008 192.168.31.187:7001 --cluster-slave --cluster-master-id 28927912ea0d59f6b790a50cf606602a5ee48108
查看节点状态
redis-trib.rb check 192.168.31.187:7001
或
redis-cli --cluster check 192.168.31.187:7001
reshard slot节点:
redis-trib.rb reshard 192.168.31.187:7001
或
redis-cli --cluster reshard 192.168.31.187:7001
删除节点,不过在节点删除前要把该节点的slot reshard其他节点
redis-trib.rb del-node 192.168.31.187:7001 bd5a40a6ddccbd46a0f4a2208eb25d2453c2a8db
或
redis-cli --cluster del-node 192.168.31.187:7001 bd5a40a6ddccbd46a0f4a2208eb25d2453c2a8db