• 从0到1搭建redis6.0.7


    redis集群搭建

    一、安装redis

    源码安装:

    1.下载源码包:

    wget http://download.redis.io/releases/redis-6.0.7.tar.gz
    

    2.解压到指定目录下:

    tar xf redis-6.0.7.tar.gz -C /usr/local/
    

    二、编译安装

    下载编译安装Redis的依赖,因为Redis是C语言编写的,所以主要安装C的编译环境

    yum install gcc g++ gcc-c++ make -y
    

    进入redis文件夹进行编译安装

    cd /usr/local/redis-6.0.7
    # 开始编译
    make -j 2
    

    编译安装过程中出现大量错误如下图所示:
    image
    这是因为安装6版本的Redis需要5.3以上版本的gcc,而先前YUM安装的gcc默认安装的是4.8.5版本。

    # 查看gcc版本
    gcc -v
    显示gcc版本为4.8.5,需要升级gcc
    

    升级gcc到9版本

    yum install centos-release-scl -y
    yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils -y
    

    然后启用gcc 9。我看到有些博客中写到启用gcc9的方法如下

    # 临时启用gcc 9
    scl enable devtoolset-9 bash
    
    # 长期启用gcc 9
    echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
    
    #使配置生效
    source /etc/profile
    
    这种临时启用的方法发现单独在终端执行没有问题,不过把它写到脚本里执行的时候,执行到这一句就会退出脚本。所以在脚本中我直接使用source /opt/rh/devtoolset-9/enable临时启用gcc 9。
    
    执行完毕后gcc升级到9.3.1版本
    

    image
    升级好gcc后重新编译

    # 清除之前编译的可执行文件及配置文件。
    make clean
    
    make -j 2
    
    make install
    

    三、启动Redis

    在redis的src目录下执行./redis-server,出现如下界面说明Redis算是装好了。不过有几个警告需要处理一下,解决的方法在警告信息中已经给出了。

    #启动redis服务
    [root@mysql_master src]# ./redis-server
    
    #解决警告信息
    # 第一个警告的解决方法
    echo net.core.somaxconn=511 >> /etc/sysctl.conf
    
    # 第二个警告的解决方法
    echo vm.overcommit_memory=1 >> /etc/sysctl.conf
    # 使/etc/sysctl.conf生效
    sysctl -p
    
    # 第三个警告的解决方法
    echo never > /sys/kernel/mm/transparent_hugepage/enabled
    
    #之后再重新执行./redis-server,可以看到,警告信息消失了。Redis服务顺利启动。
    

    此时Redis服务在前台执行,修改Redis的配置文件,让Redis服务可以在后台运行

    vim /usr/local/redis-6.0.7/redis.conf
    
    将daemonize no改为daemonize yes,然后使用配置文件重新启动redis
    关闭加密保护,修改数据存储路径.......
    #redis已成功在后台启动
    [root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
    #测试redis是否正常工作
    [root@mysql_master redis-6.0.7]# ./src/redis-cli 
    [root@mysql_master src]# ./redis-cli
    127.0.0.1:6379> ping
    PONG
    

    后台启动:
    image

    四、配置主从

    启动主结点的redis服务

    [root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
    

    修改两台从结点的redis.conf配置文件,指定主节点ip和端口

    注意:redis6版本和redis4版本配置主从的名称不一样

    replicaof 192.168.232.11 6379 主ip+主端口
    image
    修改完后启动两台从的redis,读取redis.conf才能生效

    [root@mysql_slave1 redis-6.0.7]# ./src/redis-server redis.conf
    

    五、redis-sentinel---哨兵模式

    部署Sentinel:

    #查看sentinel.conf里面配置信息
    [root@mysql_master redis-6.0.7]# grep -Ev "^$|#" sentinel.conf
    三台都要配置,具体内容如下所示,可以删完然后复制上去
    ###############################################################
    port 26379
    daemonize yes   #后台启动 
    pidfile /var/run/redis-sentinel.pid
    logfile "/var/log/redis/sentinel.log"
    sentinel announce-ip 0.0.0.0
    dir /tmp
    sentinel monitor mymaster 192.168.232.11 6379 1
    sentinel down-after-milliseconds mymaster 5000
    sentinel parallel-syncs mymaster 1
    sentinel failover-timeout mymaster 60000
    sentinel deny-scripts-reconfig yes
    ##############################################################
    
    注意:一定要开启后台启动,否则Ctrl+c退出,sentinel会自动关闭
    

    image
    启动,三台都要启动

    读取sentinel配置文件,三台都一样启动
    [root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf 
    
    查看进程是否启动:
    [root@mysql_master redis-6.0.7]# ps -ef | grep redis-sentinel
    

    image
    sentinel操作

    [root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf 
    [root@mysql_master redis-6.0.7]# ./src/redis-cli -p 26379
    127.0.0.1:26379> sentinel master mymaster
    1) "name"
     2) "mymaster"
     3) "ip"
     4) "192.168.232.11"
     5) "port"
     6) "6379"
     7) "runid"
     8) "4e5793b30c65c08c1f784a045dbb81f8a327414f"
     9) "flags"
    10) "master"
    127.0.0.1:26379> sentinel slaves mymaster
    1)  1) "name"
        2) "192.168.232.12:6379"
        3) "ip"
        4) "192.168.232.12"
        5) "port"
        6) "6379"
        7) "runid"
        8) "7172974215efed734fd000bcd9fcc340dd8796ae"
        9) "flags"
       10) "slave"
       11) "link-pending-commands"
    2)  1) "name"
        2) "192.168.232.20:6379"
        3) "ip"
        4) "192.168.232.20"
        5) "port"
        6) "6379"
        7) "runid"
        8) "9a4f10acbd6c339df8930a1478455ecaffc8c5ca"
        9) "flags"
       10) "slave"
    

    六、redis cluster集群搭建

    环境准备

    1.准备三机器,关闭防火墙和selinux
    2.制作解析并相互做解析,即三台互相ping通,主机名可改可不改。
    注:规划架构两种方案,一种是单机多实例,这里我们采用多机器部署:
    三台机器,每台机器上面两个redis实例,一个master一个slave,第一列做主库,第二
    列做备库
    #记得选出控制节点
    redis-cluster01 192.168.232.11 7000、7001
    redis-cluster02 192.168.232.12 7002、7003
    redis-cluster03 192.168.232.20 7004、7005
    

    安装redis 并配置redis-cluster

    1、redis安装 ,注意3台机器都需要安装redis 服务

    创建实例目录

    #先装一个工具tree
    yum install tree
    
    #创建节点目录:按照规划在每台redis节点的安装目录中创建对应的目录(以端口号命名)
    #具体创建过程不再描述
    查看目录结构(六台)
    [root@mysql_master src]# cd /redis
    [root@mysql_master redis]# tree
    .
    └── cluster
        ├── 7000
        │   ├── conf
        │   │   ├── nodes.conf
        │   │   └── redis.conf
        │   ├── data
        │   │   ├── appendonly.aof
        │   │   └── dump.rdb
        │   ├── log
        │   │   └── redis.log
        │   └── redis.pid
        └── 7001
            ├── conf
            │   ├── nodes.conf
            │   └── redis.conf
            ├── data
            │   ├── appendonly.aof
            │   └── dump.rdb
            ├── log
            │   └── redis.log
            └── redis.pid
    #其他五台除了名字不一样,配置文件不一样,其他都一样
    

    配置官方配置文件,去掉#开头的和空格行

    #cat redis.conf | grep -v ^# | grep -v ^$
    

    修改配置文件

    [root@mysql_master redis]# cd cluster/7000/conf
    [root@mysql_master conf]# cat redis.conf 
    bind 0.0.0.0
    protected-mode no
    port 7000
    daemonize yes
    dir /redis/cluster/7000/data
    cluster-enabled yes
    cluster-config-file /redis/cluster/7000/conf/nodes.conf
    cluster-node-timeout 5000
    appendonly yes
    daemonize yes
    pidfile /redis/cluster/7000/redis.pid
    logfile /redis/cluster/7000/log/redis.log
    #其他五台修改一下目录
    

    创建集群

    注意:创建集群:在其中一个节点操作就可以

    redis节点搭建起来后,需要完成redis cluster集群搭建,搭建集群过程中,需要保证6个redis实例都是运行状态

    Redis是根据IP和Port的顺序,确定master和slave的,所以要排好序,再执行。
    参数:
    --cluster-replicas 1:表示为集群中的每个主节点创建一个从节点.书写流程:主节点
    ip+port 对应一个从节点ip+port(正常是前面三个节点为主节点,后面的为从节点)
    
    #先把六台redis启动起来再启动集群
    [root@mysql_master src]# ./redis-server /redis/cluster/7000/conf/redis.conf 
    [root@mysql_master src]# ./redis-server /redis/cluster/7001/conf/redis.conf
    [root@mysql_master src]# ./redis-cli --cluster create --cluster-replicas 1 192.168.232.11:7000 192.168.232.11:7001 192.168.232.12:7002 192.168.232.12:7003 192.168.232.20:7004 192.168.232.20:7005
    
    ....................
    输入yes,等待集群创建
    出现以下信息证明创建成功
    [OK] All nodes agree about slots configuration.
    >>> Check for open slots...
    >>> Check slots coverage...
    [OK] All 16384 slots covered.
    

    image
    查看是否切换成集群模式

    [root@mysql_master conf]# ps -ef | grep redis
    

    image

    喜欢就点个关注叭~
    转载请注明出处,持续更新ing...
    如有问题可以发我邮箱2325117110@qq.com

  • 相关阅读:
    信息系统项目管理师必背核心考点(三十)成本的类型
    机器人中的数值优化(十八)—— 锥增广的拉格朗日、半光滑的牛顿方法
    LVS+Keepalived群集
    知识点滴 - 有关剧本的网站
    Django开发之初识篇
    DFS与回溯专题:路径总和问题
    ISP图像处理Pipeline
    java 实现发送邮箱,复制即用,包含邮箱设置第三方登录授权码获取方法
    Mybatis学习笔记8 查询返回专题
    图划分(Graph Partition&Re-ordering): METIS(5.x)&ParMETIS(4.x)使用实践
  • 原文地址:https://www.cnblogs.com/qsmm/p/16871488.html