Mevcut bir RDS örneğini Elastic Beanstalk ortamına nasıl ilişkilendiririm?


22

Elastic Beanstalk ortamımı oluşturmadan önce RDS örneğimi oluşturdum. İkisi sorunsuz bir şekilde birlikte çalışıyorlar, ancak birbirleriyle bağlantı kurmalarını ve RDS_*çevre değişkenleri üzerinden RDS parametrelerine erişmelerini istiyorum .

Elastic Beanstalk konfigürasyon sayfası şöyle diyor:

Veritabanınız yok.  Yeni bir RDS veritabanı oluşturabilir veya mevcut bir veritabanını kullanabilirsiniz.

İlk bağlantı yerinde bir RDS örneği oluşturup mevcut ortama bağlasa da, ikinci bağlantı sadece bu dokümantasyon sayfasına yönlendirir . Maalesef yalnızca yeni bir RDS örneği yaratmayı açıklıyor, ancak mevcut olanı nasıl bağlayacağınızı açıklamıyor.

Mevcut bir RDS örneğini Elastic Beanstalk ortamımla nasıl ilişkilendirebilirim?

Yanıtlar:


24

"Seçilmiş" cevabı doğrudur, ancak bazı ek bilgiler eklemek istedim, çünkü EB ve RDS'yi birlikte kullanan çoğu kişi de aynı gereksinime sahip olmalıdır - henüz bilmeseler bile.

İlk soru : Neden RDS örneğinin EB ortamı dışında olmasını isteyesiniz? Cevap : Böylece RDS örneğinin ömrü EB ortamının ömrüne bağlı değildir. yani, bir ortamı kaldırdığınızda, DB'yi onunla birlikte yok etmek istemezsiniz. RDS örneğinizi ortamınıza gerçekten bağlamak isteyip istemediğinizin çok az nedeni vardır.

EB’den bağımsız olarak RDS’yi ayarlama sorunu, RDS_ * değişkenlerini otomatik olarak doldurmamanız ve bu nedenle değerlerini almanız ve bunları web konsolu veya .bextensions üzerinden kendiniz doldurmanız gerektiğidir. Ancak, güvenlik açığı olabileceğinden, kodunuza kimlik bilgileri eklemeniz önerilmez.

Ancak, bir sonraki sorun programsal olarak ortamlar (örneğin mavi-yeşil sıfır arıza süresi dağıtımları için) oluşturmak istiyorsanız, hassas RDS değerlerinin (örneğin şifre) her seferinde nasıl doldurulacağına ilişkin bir çözüme ihtiyacınız olacaktır. Ne yazık ki, bu, AWS yığınını daha aşağıya indirmenizi ve bir CloudFormation şablonu kullanmanızı gerektirir.

İdeal çözüm, EB’deki bir geliştirmedir, böylece soruda belirtilen "varolan bir veritabanını kullan" bağlantısı aslında varolan bir RDS veritabanını manüel olarak ilişkilendirmenize olanak sağlar ve sonra yardımsız dokümantasyona yönlendirmek yerine RDS_ * ortam değişkenlerini otomatik olarak yeniden doldurmanızı sağlar . AWS Desteği, bunun bir özellik isteği olarak ortaya çıktığını, ancak elbette belirli bir süre belirtilmediğini belirtti.


bir yıl sonra ve hala durum böyle görünüyor?
lifeofguenter

1
Hala bildiğim kadarıyla durum.
rgareth

Bu AWS'yi nasıl çarpıştırırız?
matthew

bir yıl sonra, yine aynı.
Karan Kumar

Rds docs.amazs..com.tr/elasticbeanstalk/latest/dg/… (sadece benim gibi arama yapan insanlar için tamamlandığı içindir) ekleme adımları Bir ortam konfigürasyonu oluşturmaz ve yaratırken bir konfigürasyon dosyasını yüklerler. Bu, env değişkenleri eklemeli, değişmedikleri sürece, bu iyi olmalı mı?
Manuel

18

AWS desteğinden gelen cevap :

Mevcut bir veritabanını bir EB Ortamı ile ilişkilendirmek için, Yönetim Konsolu aracılığıyla bir anlık görüntüsünü almanız ve ardından Veri Katmanı altında "yeni bir RDS veritabanı oluştur" u seçmeniz gerekir. RDS örneğinin Beanstalk ortamının altında yatan Bulutformasyon yığınına bağlı olmasından dolayı, çalışan bir RDS örneğini mevcut bir EB Ortamına anlık görüntüden yeni bir tane başlatmadan ilişkilendirmenin bir yolu olduğu görünmüyor. Mevcut RDS örneğinizin anlık görüntüsünü alırsanız, isterseniz EB'de yeniden başlatabilirsiniz.

RDS örneğinin ortamın dışında bulunmasını istiyorsanız, bağlantı parametrelerini ortam değişkeni olarak EB Konsolu: Yapılandırma -> Web Katmanı -> Yazılım Yapılandırması yoluyla sağlayabilirsiniz. Ardından, ortam değişkenini PHP ile okuyabilirsiniz .


İkinci yaklaşımı benimsedim, konvansiyonu takip etmek için çevre değişkenlerini RDS_ * adlarıyla tanımladım. Güvenlik grupları oldukça sıkı ayarlanmış, ancak bir DB değişkenini bir ortam değişkenine koymak için hala biraz gevşemiş hissediyor.
Joseph Sheedy,

@velotron Benim için aynı, ama buna alıştım!
Benjamin

2

Son zamanlarda buna ihtiyacım vardı ve ayrıca AWS CLI / EB CLI'yi kullanarak adımları otomatikleştirmek istedim. Her durumda, temelde takip ettiğim adımlar: (önceden bir RDS örneği oluşturduğunuzu varsayarak):

  1. RDS örneğiniz için farklı bir güvenlik grubu kurulumunuz olduğundan emin olun (VPC varsayılan grubu değil). Bunun için aws ec2 create-security-group(AWS CLI) kullanabilir ve (AWS CLI) kullanarak RDS örneğiyle ilişkilendirebilirsiniz aws rds modify-db-instance.
  2. Fasulye sapı başvurunuzu başlatınız (bunun için eb init(EB CLI) kullandım).
  3. İlgili yapılandırma verilerini RDS veritabanınızdan (DB adı, ana bilgisayar adı, bağlantı noktası vb.) Okuyun. Bunun aws rds describe-db-instancesiçin kullandım.
  4. Bu verileri kullanarak, RDS_*ortamı oluşturduğunuzda (veya ortamı daha sonra dağıtırken) EB örneğindeki ortam değişkenlerini ayarlayın . Bunu eb create/ eb deploy(EB CLI) ile yapabilirsiniz. Ortamı oluşturduğunuzda, RDS veritabanına erişmek için güvenlik grupları doğru şekilde kurulmadığı için bozulacaktır.
  5. İlgili güvenlik gruplarını EB konfigürasyonundan alın. Otomatik ölçeklendirme grubu ve elastik yük dengeleyici için birine ihtiyacınız var. Bunun için aws elasticbeanstalk describe-configuration-settings(AWS CLI) kullanabilirsiniz .
  6. Otomatik ölçeklendirme grubunuzu gelen trafik için veritabanınıza 1. adımda kurduğunuz güvenlik grubu için yetki verin. Bunun aws ec2 authorize-security-group-ingressiçin VPC güvenlik gruplarını (DB güvenlik grupları değil) kullanan (AWS CLI) kullandım. Bölgenizde destekleniyorsa, muhtemelen DB güvenlik gruplarıyla aynı şeyi elde edebilirsiniz. Gelen trafik kuralını ayarlarken, veritabanı motorunuz için doğru protokol ve bağlantı noktasını kullandığınızdan emin olun.
  7. Elastik yük dengeleyici grubunu RDS örneğinizin güvenlik gruplarına ekleyin (tekrar kullanarak aws rds modify-db-instance(AWS CLI)).
  8. Elastic Beanstalk uygulamasını yeniden başlatın veya yeniden konuşlandırın (örn. eb deploy(EB CLI) kullanarak ). Dağıtımlarda geçiş yaptığım için yeniden dağıtım yapmak zorunda kaldım.

Bu çoğunlukla o. Artık, ana bilgisayar adını ve DB kimlik bilgilerini aynı tuttuğunuz sürece, EB örnekleriyle ilgilenmeden RDS örneklerinizi yukarı / aşağı ölçeklendirebilmeniz gerekir. Ayrıca bu yaklaşımla mavi / yeşil dağıtımlar yapabilirsiniz (ancak güvenlik grubu erişimini de iptal etmek için bazı ek adımlar uygulamanız gerekebilir).


0

Yapılandırmayla EB EC2 örneklerine mevcut bir güvenlik grubunu eklemenin en kolay yolu, https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/ adresinde açıklanan basit dosyayı kullanmaktır. güvenlik yapılandırma / SecurityGroup-addexisting.config

Örneğin:

$ cat .ebextensions/securitygroup-addexisting.config
option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: rds-launch-wizard-1

0

Aynı sorunla karşı karşıyaydım ve aşağıdaki adımları izleyerek düzeltdim:

1) EC2 örneğine gidin ve güvenlik grubu örneğinizi "sg-121212121212" not edin

2) RDS Güvenlik Grubu reklamına gidin = gelen trafik

3) Kuralı düzenle, tüm trafiği seç ve yeni ebs güvenlik grubunu "sg-121212121212" ekle

Umarım yardımcı olur


-2

Elastik altında RDS oluşturmak; yeni doğru güvenlik grubu ekleyecektir; eski mevcut RDS güvenlik grubunu değiştir; web config ve tüm çalışmalarında doğru bağlantı dizesini ayarlayın ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.