SQL Veritabanı etkin coğrafi çoğaltma kullanarak bulut uygulamalarının sıralı yükseltmelerini yönetme
Şunlar için geçerlidir: Azure SQL Veritabanı
Bulut uygulamanızın sıralı yükseltmelerini etkinleştirmek için Azure SQL Veritabanında etkin coğrafi çoğaltmayı kullanmayı öğrenin. Yükseltmeler kesintiye neden olan işlemler olduğundan, iş sürekliliği planlama ve tasarımınızın bir parçası olmalıdır. Bu makalede, yükseltme işlemini düzenlemenin iki farklı yöntemine göz atacağız ve her seçeneğin avantajlarını ve dezavantajlarını tartışacağız. Bu makalenin amaçları doğrultusunda, veri katmanı olarak tek bir veritabanına bağlı bir web sitesinden oluşan bir uygulamaya başvuruyoruz. Hedefimiz, kullanıcı deneyimini önemli ölçüde etkilemeden uygulamanın sürüm 1'ini (V1) sürüm 2'ye (V2) yükseltmektir.
Yükseltme seçeneklerini değerlendirirken şu faktörleri göz önünde bulundurun:
- Uygulama işlevlerinin ne kadar süreyle sınırlı olabileceği veya düzeyi düşürülebileceği gibi yükseltmeler sırasında uygulama kullanılabilirliği üzerindeki etki.
- Yükseltme başarısız olursa geri alma özelliği.
- Yükseltme sırasında ilgisiz, yıkıcı bir hata oluşursa uygulamanın güvenlik açığı.
- Toplam dolar maliyeti. Bu faktör, yükseltme işlemi tarafından kullanılan geçici bileşenlerin ek veritabanı yedekliliğini ve artımlı maliyetlerini içerir.
Olağanüstü durum kurtarma için veritabanı yedeklerini kullanan uygulamaları yükseltme
Uygulamanız otomatik veritabanı yedeklemelerini kullanıyorsa ve olağanüstü durum kurtarma için coğrafi geri yükleme kullanıyorsa, tek bir Azure bölgesine dağıtılır. Kullanıcı kesintisini en aza indirmek için, yükseltmeye dahil olan tüm uygulama bileşenleriyle bu bölgede bir hazırlama ortamı oluşturun. İlk diyagramda, yükseltme işleminden önceki işletim ortamı gösterilmektedir. Uç nokta contoso.azurewebsites.net
, web uygulamasının üretim ortamını temsil eder. Yükseltmeyi geri alabilmeniz için, veritabanının tam olarak eşitlenmiş bir kopyasıyla bir hazırlama ortamı oluşturmanız gerekir. Yükseltme için bir hazırlama ortamı oluşturmak üzere şu adımları izleyin:
- Aynı Azure bölgesinde ikincil bir veritabanı oluşturun. Çekirdek oluşturma işleminin tamam olup olmadığını görmek için ikincil öğeyi izleyin (1).
- Web uygulamanız için yeni bir ortam oluşturun ve 'Hazırlama' olarak adlandırabilirsiniz. Url
contoso-staging.azurewebsites.net
(2) ile Azure DNS'ye kaydedilir.
Not
Bu hazırlık adımları, tam erişim modunda çalışabilen üretim ortamını etkilemez.
Hazırlık adımları tamamlandığında, uygulama gerçek yükseltme için hazırdır. Sonraki diyagramda yükseltme işlemine dahil olan adımlar gösterilmektedir:
- Birincil veritabanını salt okunur moda (3) ayarlayın. Bu mod, yükseltme sırasında web uygulamasının (V1) üretim ortamının salt okunur kalmasını garanti eder, böylece V1 ve V2 veritabanı örnekleri arasında veri ayrışmasını önler.
- Planlı sonlandırma modunu (4) kullanarak ikincil veritabanının bağlantısını kesin. Bu eylem, birincil veritabanının tam olarak eşitlenmiş, bağımsız bir kopyasını oluşturur. Bu veritabanı yükseltilecek.
- İkincil veritabanını okuma-yazma moduna geçirin ve yükseltme betiğini (5) çalıştırın.
Yükseltme başarıyla tamamlanırsa, artık üretim ortamı haline gelen uygulamayı yükseltilen kopyaya geçmeye hazırsınız demektir. Geçiş, sonraki diyagramda gösterildiği gibi birkaç adım daha içerir:
- Web uygulamasının üretim ve hazırlama ortamları arasında değiştirme işlemini etkinleştirin (6). Bu işlem iki ortamın URL'lerini değiştirir. Şimdi
contoso.azurewebsites.net
web sitesinin ve veritabanının (üretim ortamı) V2 sürümüne işaret etmektedir. - Değiştirme işleminden sonra hazırlama kopyası haline gelen V1 sürümüne artık ihtiyacınız yoksa hazırlama ortamının yetkisini alabilirsiniz (7).
Yükseltme işlemi başarısız olursa (örneğin, yükseltme betiğindeki bir hata nedeniyle), hazırlama ortamının güvenliğinin aşılmasına dikkat edin. Uygulamayı yükseltme öncesi durumuna geri almak için üretim ortamındaki uygulamayı tam erişime geri döndürebilirsiniz. Sonraki diyagramda yeniden dönüştürme adımları gösterilmektedir:
- Veritabanı kopyasını okuma-yazma moduna (8) ayarlayın. Bu eylem, üretim kopyasının tam V1 işlevselliğini geri yükler.
- Kök neden analizini gerçekleştirin ve hazırlama ortamının yetkisini alın (9).
Bu noktada uygulama tamamen işlevseldir ve yükseltme adımlarını tekrarlayabilirsiniz.
Not
Henüz değiştirme işlemi gerçekleştirmediğiniz için geri alma işlemi DNS değişiklikleri gerektirmez.
Bu seçeneğin temel avantajı, bir dizi basit adımı izleyerek tek bir bölgedeki bir uygulamayı yükseltebilmenizdir. Yükseltmenin dolar maliyeti nispeten düşüktür.
Temel dezavantajı, yükseltme sırasında yıkıcı bir hata oluşursa, yükseltme öncesi durumuna kurtarmanın uygulamanın farklı bir bölgede yeniden dağıtılmasını ve coğrafi geri yükleme kullanarak veritabanını yedekten geri yüklemeyi içermesidir. Bu işlem önemli bir kapalı kalma süresine neden olur.
Olağanüstü durum kurtarma için veritabanı coğrafi çoğaltma kullanan uygulamaları yükseltme
Uygulamanız iş sürekliliği için etkin coğrafi çoğaltma veya otomatik yük devretme grupları kullanıyorsa, en az iki farklı bölgeye dağıtılır. Birincil bölgede etkin, birincil veritabanı ve yedekleme bölgesinde salt okunur, ikincil bir veritabanı vardır. Bu makalenin başında belirtilen faktörlerle birlikte, yükseltme işleminin şunları da garanti etmesi gerekir:
- Uygulama, yükseltme işlemi sırasında her zaman yıkıcı hatalardan korunmaya devam eder.
- Uygulamanın coğrafi olarak yedekli bileşenleri etkin bileşenlerle paralel olarak yükseltilir.
Bu hedeflere ulaşmak için, Web Apps ortamlarını kullanmanın yanı sıra, bir etkin uç nokta ve bir yedekleme uç noktası ile bir yük devretme profili kullanarak Azure Traffic Manager'ın avantajlarından yararlanacaksınız. Sonraki diyagramda yükseltme işleminden önceki işletim ortamı gösterilmektedir. Web siteleri contoso-1.azurewebsites.net
ve contoso-dr.azurewebsites.net
tam coğrafi yedeklilik ile uygulamanın üretim ortamını temsil eden. Üretim ortamı aşağıdaki bileşenleri içerir:
- Birincil bölgedeki web uygulamasının
contoso-1.azurewebsites.net
üretim ortamı (1) - Birincil bölgedeki birincil veritabanı (2)
- Yedekleme bölgesindeki web uygulamasının hazır bekleyen örneği (3)
- Yedekleme bölgesinde coğrafi olarak çoğaltılan ikincil veritabanı (4)
- Adlı çevrimiçi uç nokta ve adlı
contoso-1.azurewebsites.net
çevrimdışı uç nokta içeren bir Traffic Manager performans profilicontoso-dr.azurewebsites.net
Yükseltmeyi geri almayı mümkün kılmak için, uygulamanın tam olarak eşitlenmiş bir kopyasıyla bir hazırlama ortamı oluşturmanız gerekir. Yükseltme işlemi sırasında yıkıcı bir hata oluşması durumunda uygulamanın hızla kurtarılabilmesini sağlamanız gerektiğinden, hazırlama ortamının da coğrafi olarak yedekli olması gerekir. Yükseltme için bir hazırlama ortamı oluşturmak için aşağıdaki adımlar gereklidir:
- Web uygulamasının hazırlama ortamını birincil bölgeye (6) dağıtın.
- Birincil Azure bölgesinde (7) ikincil veritabanı oluşturun. Web uygulamasının hazırlama ortamını buna bağlanmak için yapılandırın.
- İkincil veritabanını birincil bölgede çoğaltarak yedekleme bölgesinde coğrafi olarak yedekli, ikincil başka bir veritabanı oluşturun. (Bu yöntem zincirleme coğrafi çoğaltma olarak adlandırılır.) (8).
- Web uygulaması örneğinin hazırlama ortamını yedekleme bölgesinde (9) dağıtın ve (8) konumunda oluşturulan coğrafi olarak yedekli ikincil veritabanına bağlanacak şekilde yapılandırın.
Not
Bu hazırlık adımları üretim ortamındaki uygulamayı etkilemez. Okuma-yazma modunda tamamen işlevsel kalır.
Hazırlık adımları tamamlandığında, hazırlama ortamı yükseltme için hazırdır. Sonraki diyagramda şu yükseltme adımları gösterilmektedir:
- Üretim ortamındaki birincil veritabanını salt okunur moda (10) ayarlayın. Bu mod, üretim veritabanının (V1) yükseltme sırasında değişmemesini garanti eder, bu nedenle V1 ile V2 veritabanı örnekleri arasındaki veri ayrılığını önler.
-- Set the production database to read-only mode
ALTER DATABASE [<Prod_DB>]
SET READ_ONLY
- İkincil (11) bağlantısını keserek coğrafi çoğaltmayı sonlandırın. Bu eylem, üretim veritabanının bağımsız ancak tam olarak eşitlenmiş bir kopyasını oluşturur. Bu veritabanı yükseltilecek. Aşağıdaki örnekte Transact-SQL kullanılır ancak PowerShell de kullanılabilir.
-- Disconnect the secondary, terminating geo-replication
ALTER DATABASE [<Prod_DB>]
REMOVE SECONDARY ON SERVER [<Partner-Server>]
- Yükseltme betiğini
contoso-1-staging.azurewebsites.net
,contoso-dr-staging.azurewebsites.net
ve hazırlama birincil veritabanında (12) çalıştırın. Veritabanı değişiklikleri otomatik olarak hazırlama ikinciline çoğaltılır.
Yükseltme başarıyla tamamlanırsa, artık kullanıcıları uygulamanın V2 sürümüne geçmeye hazırsınız demektir. Sonraki diyagramda ilgili adımlar gösterilmektedir:
- Birincil bölgede (13) ve yedekleme bölgesinde (14) web uygulamasının üretim ve hazırlama ortamları arasında değiştirme işlemini etkinleştirin. Uygulamanın V2'si artık yedekleme bölgesinde yedek kopyası olan bir üretim ortamına dönüşür.
- V1 uygulamasına (15 ve 16) artık ihtiyacınız yoksa hazırlama ortamının yetkisini alabilirsiniz.
Yükseltme işlemi başarısız olursa (örneğin, yükseltme betiğindeki bir hata nedeniyle), hazırlama ortamının tutarsız bir durumda olduğunu düşünün. Uygulamayı yükseltme öncesi durumuna geri almak için üretim ortamında uygulamanın V1'ini kullanmaya geri dönün. Gerekli adımlar bir sonraki diyagramda gösterilir:
- Üretim ortamındaki birincil veritabanı kopyasını okuma-yazma moduna (17) ayarlayın. Bu eylem, üretim ortamındaki tüm V1 işlevselliğini geri yükler.
- Kök neden analizini gerçekleştirin ve hazırlama ortamını (18 ve 19) onarın veya kaldırın.
Bu noktada uygulama tamamen işlevseldir ve yükseltme adımlarını tekrarlayabilirsiniz.
Not
Değiştirme işlemi gerçekleştirmediğiniz için geri alma işlemi DNS değişiklikleri gerektirmez.
Bu seçeneğin temel avantajı, yükseltme sırasında iş sürekliliğinizden ödün vermeden hem uygulamayı hem de coğrafi olarak yedekli kopyasını paralel olarak yükseltebilmenizdir.
Temel dezavantajı, her uygulama bileşeninin çift yedekli olmasını gerektirmesi ve bu nedenle daha yüksek dolar maliyetine neden olmasıdır. Ayrıca daha karmaşık bir iş akışı içerir.
Özet
Makalede açıklanan iki yükseltme yöntemi karmaşıklık ve dolar maliyeti açısından farklılık gösterir, ancak her ikisi de kullanıcının salt okunur işlemlerle ne kadar süreyle sınırlı olduğunu en aza indirmeye odaklanır. Bu süre, yükseltme betiğinin süresiyle doğrudan tanımlanır. Veritabanı boyutuna, seçtiğiniz hizmet katmanına, web sitesi yapılandırmasına veya kolayca denetleyebileceğiniz diğer faktörlere bağlı değildir. Tüm hazırlık adımları yükseltme adımlarından ayrılmıştır ve üretim uygulamasını etkilemez. Yükseltme betiğinin verimliliği, yükseltmeler sırasında kullanıcı deneyimini belirleyen önemli bir faktördür. Bu nedenle, bu deneyimi geliştirmenin en iyi yolu, yükseltme betiğini mümkün olduğunca verimli hale getirmek için çabalarınızı odaklamanızdır.
Sonraki adımlar
- İş sürekliliğine genel bakış ve senaryolar için bkz. İş sürekliliğine genel bakış.
- Azure SQL Veritabanı etkin coğrafi çoğaltma hakkında bilgi edinmek için bkz. Etkin coğrafi çoğaltma kullanarak okunabilir ikincil veritabanları oluşturma.
- Azure SQL Veritabanı otomatik yük devretme grupları hakkında bilgi edinmek için bkz. Birden çok veritabanının saydam ve eşgüdümlü yük devretmesini etkinleştirmek için otomatik yük devretme gruplarını kullanma.
- Azure App Service'da hazırlama ortamları hakkında bilgi edinmek için bkz. Azure App Service'de hazırlama ortamlarını ayarlama.
- Azure Traffic Manager profilleri hakkında bilgi edinmek için bkz. Azure Traffic Manager profilini yönetme.