ToB企服应用市场:ToB评测及商务社交产业平台

标题: 从0到1搭建redis6.0.7 [打印本页]

作者: 曂沅仴駦    时间: 2022-11-8 22:33
标题: 从0到1搭建redis6.0.7
redis集群搭建

一、安装redis

源码安装:
1.下载源码包:
  1. wget http://download.redis.io/releases/redis-6.0.7.tar.gz
复制代码
2.解压到指定目录下:
  1. tar xf redis-6.0.7.tar.gz -C /usr/local/
复制代码
二、编译安装

下载编译安装Redis的依赖,因为Redis是C语言编写的,所以主要安装C的编译环境
  1. yum install gcc g++ gcc-c++ make -y
复制代码
进入redis文件夹进行编译安装
  1. cd /usr/local/redis-6.0.7
  2. # 开始编译
  3. make -j 2
复制代码
编译安装过程中出现大量错误如下图所示:

这是因为安装6版本的Redis需要5.3以上版本的gcc,而先前YUM安装的gcc默认安装的是4.8.5版本。
  1. # 查看gcc版本
  2. gcc -v
  3. 显示gcc版本为4.8.5,需要升级gcc
复制代码
升级gcc到9版本
  1. yum install centos-release-scl -y
  2. yum install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils -y
复制代码
然后启用gcc 9。我看到有些博客中写到启用gcc9的方法如下
  1. # 临时启用gcc 9
  2. scl enable devtoolset-9 bash
  3. # 长期启用gcc 9
  4. echo "source /opt/rh/devtoolset-9/enable" >> /etc/profile
  5. #使配置生效
  6. source /etc/profile
  7. 这种临时启用的方法发现单独在终端执行没有问题,不过把它写到脚本里执行的时候,执行到这一句就会退出脚本。所以在脚本中我直接使用source /opt/rh/devtoolset-9/enable临时启用gcc 9。
  8. 执行完毕后gcc升级到9.3.1版本
复制代码

升级好gcc后重新编译
  1. # 清除之前编译的可执行文件及配置文件。
  2. make clean
  3. make -j 2
  4. make install
复制代码
三、启动Redis

在redis的src目录下执行./redis-server,出现如下界面说明Redis算是装好了。不过有几个警告需要处理一下,解决的方法在警告信息中已经给出了。
  1. #启动redis服务
  2. [root@mysql_master src]# ./redis-server
  3. #解决警告信息
  4. # 第一个警告的解决方法
  5. echo net.core.somaxconn=511 >> /etc/sysctl.conf
  6. # 第二个警告的解决方法
  7. echo vm.overcommit_memory=1 >> /etc/sysctl.conf
  8. # 使/etc/sysctl.conf生效
  9. sysctl -p
  10. # 第三个警告的解决方法
  11. echo never > /sys/kernel/mm/transparent_hugepage/enabled
  12. #之后再重新执行./redis-server,可以看到,警告信息消失了。Redis服务顺利启动。
复制代码
此时Redis服务在前台执行,修改Redis的配置文件,让Redis服务可以在后台运行
  1. vim /usr/local/redis-6.0.7/redis.conf
  2. 将daemonize no改为daemonize yes,然后使用配置文件重新启动redis
  3. 关闭加密保护,修改数据存储路径.......
  4. #redis已成功在后台启动
  5. [root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
  6. #测试redis是否正常工作
  7. [root@mysql_master redis-6.0.7]# ./src/redis-cli
  8. [root@mysql_master src]# ./redis-cli
  9. 127.0.0.1:6379> ping
  10. PONG
复制代码
后台启动:

四、配置主从

启动主结点的redis服务
  1. [root@mysql_master redis-6.0.7]# ./src/redis-server redis.conf
复制代码
修改两台从结点的redis.conf配置文件,指定主节点ip和端口
注意:redis6版本和redis4版本配置主从的名称不一样
replicaof 192.168.232.11 6379     主ip+主端口

修改完后启动两台从的redis,读取redis.conf才能生效
  1. [root@mysql_slave1 redis-6.0.7]# ./src/redis-server redis.conf
复制代码
五、redis-sentinel---哨兵模式

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

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

sentinel操作
  1. [root@mysql_master redis-6.0.7]# ./src/redis-sentinel sentinel.conf
  2. [root@mysql_master redis-6.0.7]# ./src/redis-cli -p 26379
  3. 127.0.0.1:26379> sentinel master mymaster
  4. 1) "name"
  5. 2) "mymaster"
  6. 3) "ip"
  7. 4) "192.168.232.11"
  8. 5) "port"
  9. 6) "6379"
  10. 7) "runid"
  11. 8) "4e5793b30c65c08c1f784a045dbb81f8a327414f"
  12. 9) "flags"
  13. 10) "master"
  14. 127.0.0.1:26379> sentinel slaves mymaster
  15. 1)  1) "name"
  16.     2) "192.168.232.12:6379"
  17.     3) "ip"
  18.     4) "192.168.232.12"
  19.     5) "port"
  20.     6) "6379"
  21.     7) "runid"
  22.     8) "7172974215efed734fd000bcd9fcc340dd8796ae"
  23.     9) "flags"
  24.    10) "slave"
  25.    11) "link-pending-commands"
  26. 2)  1) "name"
  27.     2) "192.168.232.20:6379"
  28.     3) "ip"
  29.     4) "192.168.232.20"
  30.     5) "port"
  31.     6) "6379"
  32.     7) "runid"
  33.     8) "9a4f10acbd6c339df8930a1478455ecaffc8c5ca"
  34.     9) "flags"
  35.    10) "slave"
复制代码
六、redis cluster集群搭建

环境准备
  1. 1.准备三机器,关闭防火墙和selinux
  2. 2.制作解析并相互做解析,即三台互相ping通,主机名可改可不改。
  3. 注:规划架构两种方案,一种是单机多实例,这里我们采用多机器部署:
  4. 三台机器,每台机器上面两个redis实例,一个master一个slave,第一列做主库,第二
  5. 列做备库
  6. #记得选出控制节点
  7. redis-cluster01 192.168.232.11 7000、7001
  8. redis-cluster02 192.168.232.12 7002、7003
  9. redis-cluster03 192.168.232.20 7004、7005
复制代码
安装redis 并配置redis-cluster
1、redis安装 ,注意3台机器都需要安装redis 服务
创建实例目录
  1. #先装一个工具tree
  2. yum install tree
  3. #创建节点目录:按照规划在每台redis节点的安装目录中创建对应的目录(以端口号命名)
  4. #具体创建过程不再描述
  5. 查看目录结构(六台)
  6. [root@mysql_master src]# cd /redis
  7. [root@mysql_master redis]# tree
  8. .
  9. └── cluster
  10.     ├── 7000
  11.     │   ├── conf
  12.     │   │   ├── nodes.conf
  13.     │   │   └── redis.conf
  14.     │   ├── data
  15.     │   │   ├── appendonly.aof
  16.     │   │   └── dump.rdb
  17.     │   ├── log
  18.     │   │   └── redis.log
  19.     │   └── redis.pid
  20.     └── 7001
  21.         ├── conf
  22.         │   ├── nodes.conf
  23.         │   └── redis.conf
  24.         ├── data
  25.         │   ├── appendonly.aof
  26.         │   └── dump.rdb
  27.         ├── log
  28.         │   └── redis.log
  29.         └── redis.pid
  30. #其他五台除了名字不一样,配置文件不一样,其他都一样
复制代码
配置官方配置文件,去掉#开头的和空格行
  1. #cat redis.conf | grep -v ^# | grep -v ^$
复制代码
修改配置文件
  1. [root@mysql_master redis]# cd cluster/7000/conf
  2. [root@mysql_master conf]# cat redis.conf
  3. bind 0.0.0.0
  4. protected-mode no
  5. port 7000
  6. daemonize yes
  7. dir /redis/cluster/7000/data
  8. cluster-enabled yes
  9. cluster-config-file /redis/cluster/7000/conf/nodes.conf
  10. cluster-node-timeout 5000
  11. appendonly yes
  12. daemonize yes
  13. pidfile /redis/cluster/7000/redis.pid
  14. logfile /redis/cluster/7000/log/redis.log
  15. #其他五台修改一下目录
复制代码
创建集群
注意:创建集群:在其中一个节点操作就可以
redis节点搭建起来后,需要完成redis cluster集群搭建,搭建集群过程中,需要保证6个redis实例都是运行状态
  1. Redis是根据IP和Port的顺序,确定master和slave的,所以要排好序,再执行。
  2. 参数:
  3. --cluster-replicas 1:表示为集群中的每个主节点创建一个从节点.书写流程:主节点
  4. ip+port 对应一个从节点ip+port(正常是前面三个节点为主节点,后面的为从节点)
  5. #先把六台redis启动起来再启动集群
  6. [root@mysql_master src]# ./redis-server /redis/cluster/7000/conf/redis.conf
  7. [root@mysql_master src]# ./redis-server /redis/cluster/7001/conf/redis.conf
  8. [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
  9. ....................
  10. 输入yes,等待集群创建
  11. 出现以下信息证明创建成功
  12. [OK] All nodes agree about slots configuration.
  13. >>> Check for open slots...
  14. >>> Check slots coverage...
  15. [OK] All 16384 slots covered.
复制代码

查看是否切换成集群模式
  1. [root@mysql_master conf]# ps -ef | grep redis
复制代码

七、redis cluster 向客户端扩展

转载请注明出处,未完待续...

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4