ไม่สามารถเชื่อมต่อ aws elasticache redis จากแอป .net ได้

ฉันกำลังเชื่อมต่อแอปหลัก .NET กับ AWS ElastiCache Redis ป้อนคำอธิบายรูปภาพที่นี่

AWS Elasticache Redis กำลังทำงานอยู่และพอร์ต 6329 เปิดอยู่ในกลุ่มความปลอดภัย รหัสลูกค้าใช้ StackExchange.Redis:

           var redis = ConnectionMultiplexer.Connect("redis-1.xxxx.0001.use1.cache.amazonaws.com:6379");
           //var redis = ConnectionMultiplexer.Connect("localhost"); //working
           IDatabase db = redis.GetDatabase();

            string value = "abcdefg";
            db.StringSet("mykey", value);        

            string value2 = db.StringGet("mykey");
            Console.WriteLine(value2); // writes: "abcdefg"

            Console.ReadLine();

ข้อยกเว้นคือ:

ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์ Redis ได้ UnableToConnect บน redis-1.xxx.0001.use1.cache.amazonaws.com:6379/Interactive, การเริ่มต้น/NotStarted, สุดท้าย: NONE, ต้นกำเนิด: BeginConnectAsync, โดดเด่น: 0, อ่านล่าสุด: 5 วินาทีที่แล้ว, เขียนล่าสุด: 5 วินาที ที่แล้ว Keep-alive: 60s สถานะ: กำลังเชื่อมต่อ MGR: 10 จาก 10 พร้อมใช้งาน Last-heartbeat: ไม่เคย ทั่วโลก: 0s ที่แล้ว v: 2.0.601.3402

เพิ่มไปยัง ,abortConnect=false ที่ปลายทาง ฉันสามารถเชื่อมต่อได้

ขณะนี้ข้อผิดพลาดอยู่ที่ StringSet

StackExchange.Redis.RedisConnectionException: 'ไม่มีการเชื่อมต่อที่พร้อมให้บริการการดำเนินการนี้: SET mykey; ไม่สามารถเชื่อมต่อ ...

โค้ด .NET ทำงานได้ดีกับบริการ Redis ในพื้นที่ของฉัน ดูเหมือนว่ามีบางอย่างไม่ถูกต้องกับการตั้งค่า AWS ของฉัน

สำเร็จ ssh ไปยัง EC2-instance ของฉัน และ redis-cli ไปยังบริการ AWS redis ของฉัน: ป้อนคำอธิบายรูปภาพที่นี่

กรุณามีความคิดใด ๆ ?

หมายเหตุ: AWS Elasticache Redis ไม่พร้อมใช้งานสำหรับการเข้าถึงแบบสาธารณะตามค่าเริ่มต้น


person beewest    schedule 14.03.2020    source แหล่งที่มา
comment
อาจลองเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ redis-cli จากเวิร์กสเตชันของคุณ   -  person Trinopoty    schedule 14.03.2020
comment
สำเร็จ ssh ใน ec2-instance และเรียกใช้ redis-cli อีกครั้งกับบริการ aws redis ของฉัน แต่ก็ยังล้มเหลวจากแอป .net (docs.aws. amazon.com/AmazonElastiCache/latest/red-ug/)   -  person beewest    schedule 14.03.2020
comment
เพื่อให้ชัดเจน คุณได้รับข้อผิดพลาดนี้เมื่อคุณปรับใช้โค้ดของคุณกับ EC2 instance เดียวกัน ในกรณีนั้น ไม่น่าจะมีปัญหาใดๆ เนื่องจาก redis-cli สามารถเชื่อมต่อได้ดี   -  person Trinopoty    schedule 14.03.2020
comment
ฉันใช้โค้ด .net จากเครื่องของฉัน คิดว่า redis-1.xxxx.0001.use1.cache.amazonaws.com:6379 เป็นแบบสาธารณะผ่านกลุ่มความปลอดภัย (TCP\6379 สำหรับ IP ทั้งหมด) หรือไม่   -  person beewest    schedule 14.03.2020
comment
ลองเชื่อมต่อกับเซิร์ฟเวอร์ Redis ของคุณจากเครื่องของคุณเองด้วย redis-cli ไม่ใช่จาก EC2   -  person Trinopoty    schedule 14.03.2020
comment
นอกจากนี้ หากคลัสเตอร์ Redis ของคุณไม่มีที่อยู่ IP สาธารณะ คุณจะไม่สามารถเชื่อมต่อกับคลัสเตอร์ Redis จากระยะไกลได้แม้ว่าคุณจะเปิดใช้งานกฎที่เหมาะสมก็ตาม ดังนั้นตรวจสอบดูสิ เป็นการยากที่จะบอกโดยไม่ทราบชื่อโฮสต์ที่แท้จริง   -  person Trinopoty    schedule 14.03.2020
comment
ไม่สามารถเรียกใช้ redis-cli ไปยัง redis-1.xxxx.0001.use1.cache.amazonaws.com:6379 จากเครื่องของฉัน   -  person beewest    schedule 14.03.2020
comment
ให้เราสนทนาต่อในการแชท   -  person Trinopoty    schedule 14.03.2020


คำตอบ (1)


คำถาม: "...พอร์ต 6329 เปิดอยู่ในกลุ่มความปลอดภัย .." คุณหมายถึง 6379 ใช่ไหม

ถึงอย่างนั้น ฉันคิดว่าฉันมีปัญหากับกลุ่มเครือข่ายย่อย "เริ่มต้น"

VPC_Subnet (ในกลุ่มนั้น) ซึ่งมี AWS ElastiCache Redis อยู่ มีตารางเส้นทางที่สามารถเข้าถึงอินเทอร์เน็ตเกตเวย์ได้หรือไม่ ถ้าไม่ คุณจะต้องแนบ InternetGteway เข้ากับตารางเส้นทาง และใช้ตารางเส้นทางนั้นบนซับเน็ตที่คุณต้องการ

มันควรจะเหมือนกับตัวเลือก: Internet GW

person b4ld    schedule 15.03.2020