Articles of redis

Redis哨兵没有结束

我们有三个redis 3.2.7服务器。 每个redis服务器都运行redis本身和redis sentinel(用于故障转移)。 这是每个节点的标识configuration 奴隶1(哨兵)192.168.0.15 bind 192.168.0.15 port 26379 logfile "/var/log/sentinel.log" sentinel myid 57ge72174330d523tcec8adcd1e039c7f51c298c sentinel monitor mymaster 192.168.0.16 6379 2 sentinel down-after-milliseconds mymaster 5000 sentinel auth-pass mymaster super-secret-password sentinel config-epoch mymaster 77 dir "/" sentinel leader-epoch mymaster 0 sentinel known-sentinel mymaster 192.168.0.17 26379 2b72876887f0e2c8db75e6d407babb60eb1a7185 sentinel known-sentinel mymaster 192.168.0.16 26379 06b84b7e6e320797ef49681c2e0598364b673c15 sentinel current-epoch 78 硕士(哨兵) […]

HAProxy健康检查连续计数不重置

我们在HAProxy服务器后面有两个Redis服务器。 一台服务器是主设备,这是服务器,另一台服务器是从服务器。 如果主人失败,哨兵选举另一个服务器成为主人。 那部分工作正常。 棘手的是确保HAProxy从不允许stream量同时进入两台服务器。 我最初通过添加服务器的rise和fall参数来解决这个问题,如下所示: backend Backend:Redis bind-process 1 timeout server 3h timeout tunnel 3h option tcp-check tcp-check connect tcp-check send PING\r\n tcp-check expect string +PONG tcp-check send info\ replication\r\n tcp-check expect string role:master tcp-check send QUIT\r\n tcp-check expect string +OK server redis-01.vbox 10.10.0.10:6279 check inter 5s rise 5 fall 2 maxconn 600 weight […]

Systemd:作为服务运行时,Redis服务器无法启动 – 符号链接层次太多

我最近碰到这个问题。 我已经安装了Debian 9作为networking服务器(使用nginx,php7.0-fpm和其他一些东西),我想用我的PHP安装使用redis。 当从官方回购安装时,软件包安装正常,但systemd单元无法启动或启用。 当我尝试手动从单元文件的“ExecStart”运行命令时,redis开始正常工作。 这里是单元文件(由Debian软件包提供,我没有做任何修改): [Unit] Description=Advanced key-value store After=network.target Documentation=http://redis.io/documentation, man:redis-server(1) [Service] Type=forking ExecStart=/usr/bin/redis-server /etc/redis/redis.conf PIDFile=/var/run/redis/redis-server.pid TimeoutStopSec=0 User=redis Group=redis RunTimeDirectory=redis ExecStartPre=-/bin/run-parts –verbose /etc/redis/redis-server.pre-up.d ExecStartPost=-/bin/run-parts –verbose /etc/redis/redis-server.post-up.d ExecStop=-/bin/run-parts –verbose /etc/redis/redis-server.pre-down.d ExecStop=/bin/kill -s TERM $MAINPID ExecStopPost=-/bin/run-parts –verbose /etc/redis/redis-server.post-down.d UMask=007 PrivateTmp=yes LimitNOFILE=65535 PrivateDevices=yes ProtectHome=yes ReadOnlyDirectories=/ ReadWriteDirectories=-/var/lib/redis ReadWriteDirectories=-/var/log/redis ReadWriteDirectories=-/var/run/redis CapabilityBoundingSet=~CAP_SYS_PTRACE # redis-server writes its own config file […]

AWS ElastiCache Redis – 为什么SwapUsage的FreeableMemory可用缓慢上升超过100MB?

从2017年7月28日左右开始,SwapUsage开始攀升,原因是我无法弄清楚。 我花了很多时间search和阅读AWS文档。 我们从来没有用完FreeableMemory。 适用于Redis服务器的CloudWatch仪表板 有谁知道可能会导致这种情况? 据我所知,似乎并没有出现性能问题,但从我所读的内容来看,根本不应该有交换使用,所以我不想忽略它。 Redisconfiguration详细信息 我希望这是足够的信息,让我知道如果还有什么会有所帮助。 预先感谢您的帮助。

Redis – 手动故障转移工作,但自动不

我有一个Redis Cluser节点,有1个主节点和2个从节点。 哨兵正在所有的人身上运行。 master 172.29.245.6 slave1 172.29.240.163 slave2 172.29.225.104 随着我的主人,这是我的群集的地位。 版本 – > redis-3.2.10-2.el7.x86_64 主 # Replication role:master connected_slaves:2 slave0:ip=172.29.225.104,port=6379,state=online,offset=486,lag=1 slave1:ip=172.29.240.163,port=6379,state=online,offset=633,lag=0 master_repl_offset:925 repl_backlog_active:1 repl_backlog_size:1048576 repl_backlog_first_byte_offset:2 repl_backlog_histlen:924 SLAVE1 # Replication role:slave master_host:172.29.245.6 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:17719 slave_priority:100 slave_read_only:1 connected_slaves:0 master_repl_offset:0 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 repl_backlog_histlen:0 SLAVE2 # Replication role:slave master_host:172.29.245.6 master_port:6379 master_link_status:up master_last_io_seconds_ago:1 master_sync_in_progress:0 slave_repl_offset:20367 slave_priority:100 […]

AWS Redisencryption传输中+ TLS EC2连接

我已经在使用AWS Elasticache Redis,但没有“encryption在途”。 我创build了一个新的小型/临时集群启用了encryption,但我无法连接到它 – redis-cli error: Connection reset by peer eg: redis-cli -h aws.host.name -p 6379 注意:在Redis群集中未启用In-Transit Encryption时,连接正常。 我确定这是因为我没有使用来自EC2实例的TLSencryption: “要连接到启用传输encryption的群集,必须为传输层安全性(TLS)启用数据库。要连接到未启用传输中encryption的群集,数据库不能启用TLS。 问题: 我真的不知道如何在EC2上启用TLSencryption。 我如何做到这一点? 我需要使用stunnel还是可以使用AWS SSL Certs? 这会对性能产生怎样的影响? 我也在看Redis AUTH密码。 这是一个很大的performance? 我猜如果Redis是频率击中它可以做的。 非常感谢。

如何安装Predis

我正在尝试安装Predis,但不断收到500服务器错误。 这是我所做的。 1.)在Ubuntu Natty上安装apache和php。 2.)使用此页上的说明http://redis.io/download下载Redis。 3.)运行以下示例以确认Redis正在工作: $ src/redis-cli redis> set foo bar OK redis> get foo "bar" 4.)在/home/user/Dropbox/documents/www/mywebsite.com/index.php有一个本地网站,并确认php正在运行。 5.)下载Predis的.zip版本( https://github.com/nrk/predis版本:v0.6.6-PHP5.2),并将内容解压到/ home / user / Dropbox / documents / www / mywebsite .COM /。 所以现在Predis在这里:/ home / user / Dropbox / documents / 6.)打开/home/user/Dropbox/documents/www/mywebsite.com/index.php页面。 这里是它的内容: <? define("PREDIS_BASE_PATH", "nrk-predis-3bf1230/lib/"); spl_autoload_register(function($class) { $file = PREDIS_BASE_PATH.strtr($class, '\\', '/').'.php'; if […]

解决可怜的磁盘IO性能

请注意,虽然这个问题有点Redis的具体问题,但主要问题是通用的: 一个进程需要这么多的硬盘IO写带宽,其他进程不能写任何东西 。 我们在基于Ubuntu的Xen XCP主机中安装了一个Ubuntu VM(安装在两个硬盘上的软件RAID1中)。 该虚拟机在大约2K命令/秒的负载下运行Redis服务器。 问题:当所述Redis服务器执行BGREWRITEAOF ,它将阻塞其客户端大约10秒钟。 细节: 只有AOF持久性被使用,没有RDB。 Redis被configuration为每秒一次fsync AOF文件。 在BGREWRITEAOF Redis分支上执行subprocess中的所有磁盘密集型工作。 同时,主进程不断追加数据到它的AOF文件。 BGREWRITEAOF大约需要10秒钟(1.5GB的数据,150MB / s的磁盘写入速度)。 进行重写的subprocess消耗所有HDD IO写入吞吐量。 父进程尝试fsync ,需要超过两秒的时间,数据保护启动,并阻止write被调用,阻塞父进程,直到BGREWRITEAOF完成磁盘。 这是一个详细的信息和讨论 ,导致我上面的事件解释。 问题:对我来说,一个进程被允许占用太多磁盘IO以至于其他所有内容都被阻塞。 有什么我可以在系统级别上解决这个问题吗? 如果BGREWRITEAOF需要多一点时间,只要允许父进程在重写处于活动状态时保存其数据,那么我就行了。 请注意,我知道解决方法,如移动AOF持久性到奴隶,使用no-appendfsync-on-rewrite Redisconfiguration选项等; 这个问题是专门解决问题,而不是解决问题。

Rackspace Cloud上的RHEL 6.x以及出现Redis超时的专用硬件

我刚刚使用Rackconnectbuild立了RHEL 6.1 Rackspace云主机和RHEL 6.2专用主机的混合体。 在RHEL 6.2专用主机上运行Redis 2.4.16的情况下,我在Rails 3.2.8应用程序中遇到了间歇性的Redis超时。 没有networking延迟或数据包丢失。 此外,我们的云或专用服务器上的任何接口或Rackspace的托pipe防火墙上都没有错误。 当Redis超时时,即使设置为执行debugging日志logging,redis中也没有logging。 我们收到的唯一错误是Airbrake说有一个Redis超时。 networking拓扑结构: RHEL 6.1 cloud hosts <–> Alert logic IDS <–> Cisco ASA 5510 <–> RHEL 6.2 dedicated hosts (web nodes) (two way NAT) (db hosts running redis) 从数据库主机到networking主机: 64 bytes from 10.181.230.180: icmp_seq=998 ttl=64 time=0.520 ms 64 bytes from 10.181.230.180: icmp_seq=999 ttl=64 time=0.579 […]

只允许访问ufw的特定服务器的redis端口

我在我的Ubuntu 10.04服务器上安装了ufw。 运行在该服务器上的唯一东西就是ElasticSearch和Redis。 Redis使用端口6379.我只希望两个不同的IP能够在该端口上访问本机的IP地址。 我运行了以下命令: sudo ufw allow from xx.xx.xx.x1 to any port 6379 sudo ufw allow from xx.xx.xx.x2 to any port 6379 sudo ufw status To Action From — —— —- 22 ALLOW Anywhere 6379 ALLOW xx.xx.xx.x1 6379 ALLOW xx.xx.xx.x2 80 ALLOW Anywhere 8080 ALLOW Anywhere 8080/tcp ALLOW Anywhere 对我来说,这两个IP似乎应该能够访问该服务器上的IP地址。 但他们无法build立联系。 我还需要打开其他的端口才能发生这种情况吗?