tidak dapat menghubungkan aws elasticache redis dari aplikasi .net

Saya menghubungkan aplikasi inti .NET ke AWS ElastiCache Redis. masukkan deskripsi gambar di sini

AWS Elasticache Redis berjalan dan port 6329 terbuka pada grup keamanan. Kode klien menggunakan 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();

Pengecualian adalah:

Tidak dapat terhubung ke server redis. UnableToConnect di redis-1.xxx.0001.use1.cache.amazonaws.com:6379/Interactive, Initializing/NotStarted, terakhir: NONE, asal: BeginConnectAsync, luar biasa: 0, terakhir dibaca: 5 detik yang lalu, terakhir ditulis: 5 detik lalu, tetap hidup: 60 detik, status: Menghubungkan, mgr: 10 dari 10 tersedia, detak jantung terakhir: tidak pernah, global: 0 detik lalu, v: 2.0.601.3402

Ditambahkan ke ,abortConnect=false ke titik akhir, saya dapat terhubung.

Sekarang kesalahannya ada di StringSet

StackExchange.Redis.RedisConnectionException: 'Tidak ada koneksi yang tersedia untuk melayani operasi ini: SET mykey; Tidak dapat terhubung ...

Kode .NET berfungsi baik dengan layanan Redis lokal saya, jadi sepertinya ada yang salah dengan pengaturan AWS saya.

Berhasil ssh ke instans EC2 saya dan redis-cli ke layanan AWS redis saya: masukkan deskripsi gambar di sini

Tolong ada ide?

CATATAN: AWS Elasticache Redis TIDAK tersedia untuk akses publik sebagai default.


person beewest    schedule 14.03.2020    source sumber
comment
Mungkin mencoba menyambung ke server menggunakan redis-cli dari workstation Anda?   -  person Trinopoty    schedule 14.03.2020
comment
berhasil ssh ke dalam instance ec2 dan jalankan redis-cli terhadap layanan aws redis saya. Namun masih gagal dari aplikasi .net (docs.aws. amazon.com/AmazonElastiCache/latest/red-ug/)   -  person beewest    schedule 14.03.2020
comment
Untuk memperjelas, Anda mendapatkan kesalahan ini saat menerapkan kode Anda ke instans EC2 yang sama? Dalam hal ini, seharusnya tidak ada masalah apa pun karena redis-cli dapat terhubung dengan baik.   -  person Trinopoty    schedule 14.03.2020
comment
Saya menjalankan kode .net dari mesin saya. Apakah Anda pikir redis-1.xxxx.0001.use1.cache.amazonaws.com:6379 tersedia untuk umum melalui grup keamanan (TCP\6379 untuk Semua IP)?   -  person beewest    schedule 14.03.2020
comment
Coba sambungkan ke server redis Anda dari mesin Anda sendiri lalu dengan redis-cli, bukan dari EC2.   -  person Trinopoty    schedule 14.03.2020
comment
Selain itu, jika klaster redis Anda tidak memiliki alamat IP publik, Anda tidak dapat menyambungkannya dari jarak jauh meskipun Anda telah mengaktifkan aturan yang tepat. Jadi periksa itu mungkin. Sulit untuk mengetahuinya tanpa mengetahui nama host sebenarnya.   -  person Trinopoty    schedule 14.03.2020
comment
Gagal menjalankan redis-cli ke redis-1.xxxx.0001.use1.cache.amazonaws.com:6379 dari mesin saya.   -  person beewest    schedule 14.03.2020
comment
Mari kita melanjutkan diskusi ini dalam chat.   -  person Trinopoty    schedule 14.03.2020


Jawaban (1)


Pertanyaan: "...port 6329 terbuka pada grup keamanan.." Bukankah maksud Anda 6379?

Meski begitu, saya rasa saya tidak punya masalah pada grup subnet "default".

Apakah VPC_Subnet (dalam grup itu) tempat AWS ElastiCache Redis berada, memiliki Tabel Perutean dengan akses ke Internet Gateway? Jika tidak, Anda perlu melampirkan InternetGteway ke Tabel Rute dan kemudian menggunakan Tabel Rute tersebut di Subnet yang Anda inginkan.

Seharusnya seperti pilihan: Internet GW

person b4ld    schedule 15.03.2020