我们在AWS Elastic Beanstalk上有一个带有express的nodeJS服务器,我们正在尝试将其与nodeJS中的Elasticache(Redis clustered)连接,但出现以下错误:Redis Client Connection error ClusterAllFailedError:无法刷新插槽缓存 。这个错误似乎很常见,因为很多人都面临着相同的错误。为了连接到ElastiCache,我们使用了一个名为ioredis的npm模块。
很多人建议对ElastiCache和ElasticBeanstalk使用相同的VPC和安全组。我们已经在使用相同的VPC,在ElasticBeanstalk上,我们使用了两个安全组,其中一个与ElastiCache的安全组匹配。对于默认专有网络,我们已经为入站和出站规则启用了所有流量,但仍然面临相同的错误。
为了从NodeJS服务器连接到ElastiCache,我使用以下代码:
const Redis = require("ioredis");
exports.connect = () => {
const client = new Redis.Cluster(
["xxxxx.xxxxx.clustercfg.use1.cache.amazonaws.com:6379"],
{
slotsRefreshTimeout: 10000,
dnsLookup: (address, callback) => callback(null, address),
redisOptions: {
showFriendlyErrorStack: true,
tls: {
checkServerIdentity: (/*host, cert*/) => {
// skip certificate hostname validation
return undefined;
},
},
},
}
);
client.on("ready", () => {
console.log("Redis Client Ready");
});
client.on("connect", () => {
console.log("Redis Client Connected");
});
client.on("error", (error) => {
console.log("Redis Client Connection Error", error);
});
client.on("reconnecting", () => {
console.log("Redis Client Reconnecting");
});
client.on("end", () => {
console.log("Redis Client Connection ended");
});
return client;
};
版本:
节点。js在64位Amazon Linux上运行,平台版本为4.15.1
NodeJS版本:12.18.3
ioredis版本:4.17.3
npm版本:6.14.6
快速版本:<代码>4.17.1
更新:如果我使用ssh和redis cli,我可以从ElasticBeanstalk访问ElastiCache,但无法在ElasticBeanstalk上运行的NodeJS上使用ioredis访问它。
您可以简单地创建连接
const Redis = require("ioredis");
const client = new Redis(
6379,
"Configiration Endpoint (xxx.xxxx.xxxcache.amazonaws.com)"
);
client.on("ready", () => {
console.log("Redis Client Ready");
client.send(
});
client.on("connect", () => {
console.log("Redis Client Connected");
});
client.on("error", (error) => {
console.log("Redis Client Connection Error", error);
});
我正在调试一个类似的问题。要访问redis,我必须将tls:{}添加到ioredis选项中:
{
host: process.env.REDIS_HOST,
port: process.env.REDIS_PORT,
password: process.env.REDIS_PASSWORD,
tls: {}
}
我有一个类似的设置,并最终使其工作,几个关键点:
以下是连接代码:
import { RedisPubSub } from 'graphql-redis-subscriptions';
import Redis from 'ioredis';
import config from '../../config/env';
const options = {
// AWS host will look like this: somecache-dev-ro.k6sjdj.ng.0001.use1.cache.amazonaws.com
host: config.redis.host || 'localhost',
port: config.redis.port || 6379,
retryStrategy: (times: number): number => {
// reconnect after
return Math.min(times * 50, 2000);
},
};
export const pubsub = new RedisPubSub({
publisher: new Redis(options),
subscriber: new Redis(options),
});
我有一个nodejs聊天服务器,它有不同的事件“Connection”,“SendChat”,“Switchroom”... null Thx很多!
问题内容: 当我使用节点mysql时,在12:00到2:00之间出现错误,表明服务器已关闭TCP连接。这是完整的消息: 有解决办法。但是,以这种方式尝试后,问题也会出现。现在我不知道该怎么办。有人遇到这个问题吗? 这是我按照解决方案编写的方式: 问题答案: 尝试使用以下代码来处理服务器断开连接: 在您的代码中,我错过了之后的部分
我想连接到树莓Pi节点。我从网络外部设置的js服务器。 我的路由器声称端口是开放的。我尝试在127.0.0.0、0.0.0.0和我的公共IP地址运行服务器。 我曾尝试使用ngrok打开端口8080,服务器在其中托管一个简单的网页,但尝试访问myIP:8080不起作用。 有人能帮我吗?
我刚刚安装了Eclipse Neon,并添加了颠覆性的SVN插件。我试图添加一个新的存储库位置,我知道这是正确的,但我得到的结果是: > 使用SVNKit 1.8.12 SVN连接器(我以前一直使用它): 使用本机JavaHL 1.8.15 SVN连接器: 这些错误似乎都不为搜索引擎所知。我的SVN服务器是1.8.10。 PS:如果因为不是专门面向编程而偏离主题,请指出我应该在哪个SE网站上发布这
问题内容: 环境文件: Routes.php: 我得到的错误: *Connector.php第55行中的 *PDOException : SQLSTATE [HY000] [2002]连接尝试失败,因为一段时间后连接方未正确响应,或者由于连接的主机未能响应,所以建立的连接失败。 我的问题是: 我正在尝试从计算机连接到远程MySQL服务器 而且我不明白为什么它不起作用? 我应该怎么做才能连接? 我想
我配置了一个无密码的SFTP服务器。我想使用带有用户名和密码的jsch(JAVA)库连接它。我一直在使用以下代码行:- JAVA中的这一行是否会覆盖SSH配置的设置(少密码)? 请注意SFTP服务器使用终端命令SFTP连接良好,没有提示密码。