redis集群搭建

在测试环境搭建三主三从+哨兵的redis集群:
redis和ruby的安装就不多说了,redis版本是3.2.3,ruby是2.2.5。
redis.conf配置文件:

bind 192.168.xxx.47 #主机ip
protected-mode no #保护模式,搭集群的话要关掉
port 7000 #端口
requirepass redis #密码,需要所有节点保持一致
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize yes
pidfile /home/mcbadm/conf/7000/log/redis-7000.pid
loglevel notice
logfile “/home/mcbadm/conf/7000/log/redis-7000.log” #日志文件
dir /home/mcbadm/conf/7000/info
dbfilename dump-7000.rdb
appendonly yes
appendfilename “appendonly-7000.aof”
cluster-enabled yes
cluster-config-file nodes-7000.conf
cluster-node-timeout 15000
cluster-slave-validity-factor 10
cluster-require-full-coverage no

把所有节点都拉起:

redis-server redis.conf

确定所有节点都能互相访问(就是各个主机都连一下其他主机的redis)。然后开始创建集群,有两种方法,都是通过redis的src目录下的redis-trib.rb这个工具:

redis-trib.rb create --replicas 1 192.168.xxx.42:7000 192.168.xxx.43:7001 192.168.xxx.43:7000 192.168.xxx.44:7001 192.168.xxx.44:7000 192.168.xxx.42:7001

–replicas 1表示每个master分配一个slave,但是这种方法创建的好像是随机选定master和slave节点的,然后我看一些文章主从不能在一台主机上,防止服务器宕机时节点就完全不可用了,于是用第二张方法。

./redis-trib.rb create --replicas 0 192.168.xxx.46:7000 192.168.xxx.47:7000 192.168.xxx.48:7000

这里先创建了三个master节点,–replicas 0表示不为集群的master节点创建slave。然后再手动添加slave节点:

./redis-trib.rb add-node --slave --master-id 692b0f8da01a8735465090211313e494c7e6ee4e 192.168.xxx.47:7001 192.168.xxx.48:7000
./redis-trib.rb add-node --slave --master-id 880a4eea73258a4b2884587d7db36170209cf848 192.168.xxx.48:7001 192.168.xxx.46:7000
./redis-trib.rb add-node --slave --master-id 4328faa4d3fd385171afa6bf935a446c2bf90f1c 192.168.xxx.46:7001 192.168.xxx.47:7000

这个就可以指定对应的master节点和slave节点,master-id看创建master节点时的信息可以获得。

一开始在执行第一种方法的redis-trib.rb create构建集群的时候报了个错:

Creating cluster
[ERR] Sorry, can’t connect to node 192.168.xx.xxx:7001

搜了一下,发现有人做了总结了:
1、注释每个redis中redis.conf的requirepass,就是无密码
2、我是将bind绑定了自己虚拟机的唯一ip,可以在centos中使用ifconfig命令来查看自己ip,如果没有ifconfig,则使用yum install ifconfig安装下,应该都有(这个是大部分人的错误,我的也是这个问题)
我是centos7版本这里补充下,我的redis是4.0.9,但是gem确实redis-3.0.0.gem,找了半天新的没有找到新版本,个人老是喜欢用各种框架新的版本,所以经历了很多坑,不过这也是成长的过程。
3、还有人说是版本太低,我的应该不低,所以这个版本低可能有影响,但估计很多人都不是这个原因
4、还有人说将集群的每个redis的redis.conf文件中的protected-mode yes 改为protected-mode no,这个我也改了,Protected-mode 是为了禁止公网访问redis cache,由于这里不涉及这些问题就这样改了,具体可以参考下这篇帖子
https://blog.youkuaiyun.com/csdn_ds/article/details/72550898
5、创建集群的几个redis的bin文件不要有appendonly.aof 、dump.rdb、nodes.conf这三个文件,
原文:https://blog.youkuaiyun.com/snow_China/article/details/80574470

然后咧,我就挨个试了下,崩溃,还是不行啊啊啊啊!又把主机上边边角角的配置文件、生成的node相关文件删了又删改了又改,无济于事……只能搜索一个一个链接看,终于在这里找到了稍微不同的场景:https://www.oschina.net/question/1274548_2145683
这里的场景是各个节点设置了密码,然后问在创建集群的时候没有设置密码的命令怎么办,然后二楼的西湖加菲猫提出要修改gem的redis工具下的一个文件:/usr/lib/ruby/gems/1.8/gems/redis-3.2.1/lib/redis/client.rb,里面的password要改成跟所有节点一样的。我的问题是节点没有设置密码(按照上面的方法。。),但是构建就是说找不到redis,但是我服务确实起了,没有防火墙,ip绑定正常,我就想很有可能是密码不正确,无法访问到redis。然后我就去找这个文件,一开始还不好找,因为ruby的环境不是我搭的,locate client.rb还是比较方便地找到了。然后果然发现这里面的密码设置为redis了,然后我改了一个节点的密码,并且构建时把这个节点放在第一位,居然真的可以了,欲哭无泪的感觉,坑了我两天的时间!

:password => nil,

改成自己的密码即可。

哨兵配置文件,sentinel.conf:

port 26379
dir “/home/mcbadm/conf/sentinel”
sentinel monitor redis14 192.168.xxx.44 7000 2
sentinel config-epoch redis14 0
sentinel leader-epoch redis14 0
sentinel monitor redis13 192.168.xxx.43 7000 2
sentinel config-epoch redis13 0
sentinel leader-epoch redis13 0
sentinel monitor redis12 192.168.xxx.42 7000 2
sentinel config-epoch redis12 0
sentinel leader-epoch redis12 0
sentinel current-epoch 0

配置文件指定了主节点,以及多少个哨兵认为主节点不可用时failover,然后redis-sentinel sentinel.conf。

在电子设计自动化(EDA)领域,Verilog HDL 是一种重要的硬件描述语言,广泛应用于数字系统的设计,尤其是在嵌入式系统、FPGA 设计以及数字电路教学中。本文将探讨如何利用 Verilog HDL 实现一个 16×16 点阵字符显示功能。16×16 点阵显示器由 16 行和 16 列的像素组成,共需 256 个二进制位来控制每个像素的亮灭,常用于简单字符或图形显示。 要实现这一功能,首先需要掌握基本的逻辑门(如与门、或门、非门、与非门、或非门等)和组合逻辑电路,以及寄存器和计数器等时序逻辑电路。设计的核心是构建一个模块,该模块接收字符输入(如 ASCII 码),将其转换为 16×16 的二进制位流,进而驱动点阵的 LED 灯。具体而言,该模块包含以下部分:一是输入接口,通常为 8 位的 ASCII 码输入,用于指定要显示的字符;二是内部存储,用于存储字符对应的 16×16 点阵数据,可采用寄存器或分布式 RAM 实现;三是行列驱动逻辑,将点阵数据转换为驱动 LED 矩阵的信号,包含 16 个行输出线和 16 个列使能信号,按特定顺序选通点亮对应 LED;四是时序控制,通过计数器逐行扫描,按顺序控制每行点亮;五是复用逻辑(可选),若点阵支持多颜色或亮度等级,则需额外逻辑控制像素状态。 设计过程中,需用 Verilog 代码描述上述逻辑,并借助仿真工具验证功能,确保能正确将输入字符转换为点阵显示。之后将设计综合到目标 FPGA 架构,通过配置 FPGA 实现硬件功能。实际项目中,“led_lattice”文件可能包含 Verilog 源代码、测试平台文件、配置文件及仿真结果。其中,测试平台用于模拟输入、检查输出,验证设计正确性。掌握 Verilog HDL 实现 16×16 点阵字符显示,涉及硬件描述语言基础、数字逻辑设计、字符编码和 FPGA 编程等多方面知识,是学习
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值