Redis单机、主从、sentinel、cluster的搭建

单机搭建:

安装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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值