吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2472|回复: 8
收起左侧

[其他转载] 三十岁大白全栈都想学--运维第三篇--搞一搞 redis 吧

  [复制链接]
isMe-Chang 发表于 2021-12-30 16:41
大白自习的第三篇:搞一搞 redis + 三主三从(压缩包安装)1:致即将过完的2021

  • 在烂几天,2021年就要过完了
  • 闲暇之余,自己捣鼓学点东西、充实下闲暇时间!
  • 自己随便学习、搞一搞,如有错误的、理解不对的请见谅,及时留言修改。

2:前提准备


  • 搞一台装过虚拟,安装完 linux 的电脑(主从集群的话在来一台)
  • redis 压缩包(自己在官网下的)

3:啥是 Redis


3.1  redis + 定义


RedisRemoteDictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010315日起,Redis的开发工作由VMware主持。从20135月开始,Redis的开发由Pivotal赞助。
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)list(链表)set(集合)ZSET(sorted set --有序集合)hash(哈希类型)。这些数据类型都支持push/popadd/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与Memcached一样,为了保证效率,数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件(RDBRedis数据库)与AOF(附加文件)),并且在此基础上实现了master-slave(主从)同步。
3.2 redis 存储的方式
3.2.1 RDBRedis数据库)是将数据存储在一个xxx.rdb的文件中。文件中保存的数据就是redis中的内存数据。另一种存储方式,效率高,对磁盘的访问比较合理,对内存数据的监视也是有一定临界值的,保证数据能够不丢失。此文档分享此方案,需要在Redis的配置文件conf中配置如下图

rdb存储

rdb存储

3.2.2 AOF
AOF是将执行过的指令记录下来,数据恢复时按照从前到后的顺序再将指令执行一遍,实现数据恢复。
其中,AOF默认关闭,开启方法,修改配置文件REDIS.CONF:仅附加是
对磁盘和IO的资源需求,比RDB方式高很多。对Redis服务器的性能有很大的影响。AOFRDB可以同时开启,但是,在Redis重启的时候,会优先读取不推荐同时启用,对磁盘的压力和IO的压力太高如下图:

aof

aof


4 安装下 redis



4.1 安装下 GCC(虚拟白板一个,啥也没装过)

为后期编译,下载其他工具提供地址依赖
4.1.1  命令由于 Redis 是用 C 语言开发,安装之前必先确认是否安装 GCC 环境(GCC-v),如果没有安装,执行以下命令进行安装:yuminstall -y gcc

4.1.2 如果版本不是对应CentOs版本,就升级,防止后期编译失败(我装的 centos7 额)


yum install centos-release-sclyum install devtoolset-7

4.1.3 激活一下GCC


激活gcc版本,使其生效
永久(此次为永久):source/opt/rh/devtoolset-7/enable临时:scl enable devtoolset-7 bash

4.1.4 解压安装 redis


进到文件夹 cd  解压  tar -zxvf redis-6.0.3.tar.gz


说明:
x:从bai tar 包中把文件提取出来
z:表示du tar 包是被zhi gzip 压dao缩过的,所以解压时需要zhuan用 gunzip 解压
v:显示详细信息fxxx.tar.gz:指定被处理的文件是 xxx.tar.gz4.1.5 编译安装(进到解压好的文件夹里)make

make

make
中间遇见个错误问题(上边说的,GCC版本低了,编译失败) image.png CentOS7默认安装的是4.8.5,而redis6.0只支持5.3以上版本,这里将gcc升级到高版本(9yum -yinstall centos-release-sclyum -y install devtoolset-9-gcc devtoolset-9-gcc-c++devtoolset-9-binutils升级完成后需要把版本切换到新办本临时切换:scl enable devtoolset-9 bash永久切换:echo “source /opt/rh/devtoolset-9/enable” >>/etc/profile切换完成之后重新连接服务器生效,查看gcc版本:gcc -v如果这个样子就正常 了 image.png 在编译安装下 (本次安装未出现其他问题,具体安装过程结束)make install4.1.6 改下配置文件(文件夹下有个叫:redis.conf 的东西)
1:下载配置文件到本地(更方便),修改默认端口号由port 3306 改为 你自己定义的端口 image.png 2以后台进程方式启动修改daemonizeno 为daemonizeyes image.png 3:设置远程连接
(1)放行你设置的端口号
firewall-cmd --zone=public --add-port=6376/tcp –permanent重启防火墙firewall-cmd --reload(2)注释掉bind127.0.0.1或改为自己设定的IP image.png (3)设置redis连接密码:在requirepassfoobard改为requirepassroot image.png (4):开启远程连接 image.png (5):把修改后的配置文上传覆盖原文件
4.1.7 以配置文件启动
1redis-server redis.conf
2:测试连接redis-cli -h IP -p Port[root@myserver~]# redis-cli -h 192.168.43.130 -p 6371192.168.43.130:6371>auth rootOK192.168.43.130:6371>出现以上就说明Redis安装成功并且连接成功。 image.png
4.1.8 添加开机启动
1:创建文件redis.service并放置到系统/etc/systemd/system
具体文件内容如下:[Unit]
Description=redis-server
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server/usr/local/redis/bin/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target
注意:ExecStart配置成自己的路径 2:重新加载systemctl daemon-reload
4.1.9  redis 启动,其它命令1systemctl start redis.service2systemctl enable redis.service3ps -ef | grep redis查看是否重启成功systemctl startredis.service   #启动redis服务systemctl stopredis.service   #停止redis服务systemctl restart redis.service  #重新启动服务systemctl statusredis.service   #查看服务当前状态systemctl enableredis.service   #设置开机自启动systemctl disableredis.service   #停止开机自启动
5 redis 三主三从集群
5.1.1  配置下redis-cluster设置前需要放行端口主从端口,重启防火墙/usr/local创建redis-cluster文件夹,并创建对应端口号文件夹(个人喜好存放)第一台机器 image.png 第二台机器 image.png
5.1.2 修改配置文件
把安装好的redis.conf文件配置三份到对应文件夹下
在原有的配置文件夹上修改,此次添加如下修改(依个人实际情况而定,我就是随便搞搞)
# 开启守护后写如pid文件pidfile /usr/local/redis-cluster/6376/redis_6376.pid # aof日志每一个操作都记录模式appendonly yesappendfilename "6376appendonly.aof"# 开启集群模式cluster-enabled yes# 集群节点的配置cluster-config-file 6376nodes.conf # 节点请求超时时间cluster-node-timeout 5000 4:其他conf做同样修改,在加上集群密码访问,如下:# 设置redis访问密码requirepass xxx # 设置集群节点间访问密码,跟上面一致masterauth xxx
5.1.3 分发刚创建的文件夹到另一个LINUX(作为从服务器),修改配置文件
5.1.4 已配置文件启动(一定要以自己改的配置文件启动)
redis-server /usr/local/redis-cluster/6371/redis.conf
5.1.5 看看是否成功
ps -ef | grep redis image.png
5.2 创建下主从关系(我这里用了 6 版本的redis的 redis-cli 命令,注意:5以下好像要安装ruby )
5.2.1 实际命令
redis-cli --cluster create 192.168.43.130:6371 192.168.43.130:6372 192.168.43.130:6373192.168.43.134:6374 192.168.43.134:6375 192.168.43.134:6376 --cluster-replicas1 -a root
三主(前)+ 三从(后) -a (密码)正常情况下如下(问题5请参考最下方):
image.png
如出现 以下即为成功(中间遇见了稀奇古怪的问题,只能依靠强大的互联网了) image.png
5.2.2 验证是否配置成功
连接任意客户端#提示: -c表示集群模式,-h指定ip地址, -p端口号,--raw 启用编码集,防止中文乱码redis-cli --raw -a root -c -h 192.168.43.130 -p 6372(1):连接成功后提示如下(问题1请参考最下方):
image.png (2):测试存储信息(问题2请参考最下方) image.png (3):登录另一台LINUX测试获取内容(问题3请参考最下方 image.png 成功获取到keymyredis的值 是我(4)Redis客户端查看数据 M~S)T~RIFUQ_B(TT1_SFV}C.png
6 遇见的问题
问题 1 出现“Warning:Using a password with '-a' option on the command line interface may not be safe原因:warning这串输出并不是普通输出,shell的标准输出包含两种,1(标准输出)2(标准错误)我们的命令,即包含1也包含22即是我们想要去除的提示。解决办法将标准错误去除即可,如图,加了2>/dev/null,将标准错误丢弃即可redis-cli --raw -a root -c -h192.168.43.134 -p 6376 2>/dev/null
问题 2 在从机上设置时会重定向到主机上,因为Redis集群采用了Hash Slot的模式,每个结点都存放一段不同的分片
Redis集群中有16384hash slots,为了计算给定的key应该在哪个hash slot上,我们简单地用这个keyCRC16值来对16384取模。(即:keyCRC16 % 16384为什么要使用Hash Slots而不是一致性哈希算法?HashSlots继承并增强一致性哈希的容错性,扩展性,以及平衡性。 Redis在此种算法下,可以当缓存,也能当存储数据库!因为将hash slots从一个节点移动到另一个节点并不需要停止其它的操作,添加、删除节点以及更改节点所维护的hash slots的百分比都不需要任何停机时间。也就是说,移动hash slots是并行的,移动hash slots不会影响其它操作。
问题 3 我们之前是在6371(主机上设置了key-value),登录到另一台LINUX并登录6374这个redis时获取到的是6371上的值,会自动跳转到(输入密码)6371获取

问题 4 一直Waiting for the cluster to join...
(1):使用redis desktop Manager连接所有节点 调出命令窗口输入一下 命令   flushall   clusterreset(2):进入各个节点的redisrdb文件保存位置 删除 rdb 持久化文件和nodes.conf文件(3):检查以下配置项1、打开所有节点的redis.conf  配置bind属性 值是服务器的内网IP (阿里云服务器)2、注意 port cluster-config-file 的值必须唯一
问题 5  [ERR] Node 172.168.63.202:7001 is not empty. Either the nodealreadyknows other nodes (check with CLUSTER NODES) or contains some
意思大致是,你修改了conf文件,重启后,存在之前的旧文件将每个节点下aof、rdb、nodes.conf本地备份文件删除;
192.168.43.130:6371> flushdb #清空当前数据库(可省略)
并重新创建集群!

全部自己找资料、随便搞一搞,如有错误理解请见谅
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Andrea 发表于 2021-12-30 16:59
好奇第二篇是啥,第一篇还在装系统,第三篇就 redis 了
 楼主| isMe-Chang 发表于 2021-12-30 17:01
Andrea 发表于 2021-12-30 16:59
好奇第二篇是啥,第一篇还在装系统,第三篇就 redis 了

没通过审核额
回忆童年快乐 发表于 2021-12-30 17:03
K091418 发表于 2021-12-30 17:16
已上车  楼主继续
a5607615 发表于 2021-12-30 17:57
看起来好复杂,估计有点难
jjl 发表于 2021-12-30 19:01
加油,支持一下
头像被屏蔽
wbzb 发表于 2021-12-30 21:17
提示: 作者被禁止或删除 内容自动屏蔽
Despresso 发表于 2023-11-12 19:37
怎么第三篇之后就没有了,是不是懈怠了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 20:53

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表