arka plan
Java geliştiricileri ve DevOps uzmanları uzun kurumsal Java uygulamaları dağıtımını otomatik hale getirmek için mücadele etti. Bu uygulamaların karmaşık doğası genellikle uygulama bağımlılıkları ve dış entegrasyonlar bir uygulama DEV / TEST ortamlarında konuşlandırıldı her zaman yeniden yapılandırılacak gerektiği anlamına geliyordu.
Birçok çözümler uygulama dağıtımları için "her yerde dağıtmak, bir zamanlar modeli" mesajı reklamı. Gerçekte ise her zaman çok zor bir uygulama şablonu yeniden kullanmak yapılan inceliklerini vardı bir şirket içi vSphere sanal ortamda ve örneğin bir AWS ortamında, hem de karşısında.
Daha yakın zamanlarda, ancak, Docker kaplar sürece Docker Motor yüklü olarak herhangi bir Linux ana bilgisayarda aynı dağıtılabilir Linux Konteynerler içine paketleme uygulama bileşenleri fikrini popüler.
Ne yazık ki hala mevcut uygulama kompozisyon çerçeveler karmaşık bağımlılıkları, dış entegrasyon veya otomatik ölçeklendirme adresi yok çünkü çoğunlukla bir meydan okuma kurumsal Java uygulamaları olduğunu containerizing sonrası hüküm iş akışları. Ayrıca, konteynerlerin geçici tasarım geliştiricileri yeni kapları dönmesi ve her versiyon güncellemesi ile karmaşık bağımlılıkları ve dış entegrasyonları yeniden oluşturmak zorunda anlamına geliyordu.
DCHQ, barındırılan ve içi sürümlerinde kullanılabilir, tüm bu zorlukların ele ve çapraz görüntü ortam değişkeni bağları, can genişletilebilir BASH komut eklentileri ile Docker Yaz'ı uzanan bir avans uygulaması kompozisyon çerçevesinde aracılığıyla kurumsal Java uygulamaları konteyner kullan kolaylaştırır otomatik ölçekleme desteği ile birden çok ana bilgisayara veya bölgeler arasında yüksek kullanılabilirlik için istek zaman ya da post-hükmün ve uygulama kümeleme de çağrılabilir.
Bir uygulama hazırlığı sonra, bir kullanıcı CPU, Bellek izleyebilirsiniz, ve ben çalışan kaplar / O, bildirimleri ve uyarıları almak ve Konteyner Güncellemeler BASH komut eklentileri kullanarak Planlı Yedeklemeler gibi gün 2 işlemleri gerçekleştirmek ve Ölçek Dışarıda. Ayrıca, Jenkins ile sürekli Teslim kolaylaştırmak out-of-box iş akışları geliştiricilerin varolan bağımlılıkları ve entegrasyonları bozmadan çalışan bir uygulama Java WAR dosyasını yenilemek için izin verir.
Bu blog, iki farklı konteynerle uygulama yığınları üzerinde dağıtıldığında Pizza Shop adında bir Java uygulaması uçtan uca otomasyon üzerinden gidecek:
- Nginx (yük dengeleme için), kümelenmiş Tomcat ve mariadb (veritabanı)
- Nginx (yük dengeleme için), kümelenmiş İskelesi ve mariadb (veritabanı)
Aynı Java WAR dosyası iki farklı uygulama sunucularında görevlendirilecek. DCHQ uygulama dağıtımları otomatik değil sadece - aynı zamanda sağlama ve yazılım tanımlı ağ ile kümelerin otomatik ölçeklendirme otomatik hale getirmek için 12 farklı bulutlar ile bütünleştirir. Biz kapsayacaktır:
- Herhangi bir Linux ana bir yere çalıştıran kullanılan yeniden, uygulama şablonları Bina
- Sağlama & (Rackspace bu blog örnek olmak) herhangi bir bulutun üzerinde yatan altyapıyı otomatik ölçeklendirme
- Rackspace küme üzerinde çok katmanlı Java tabanlı Pizza Shop uygulamaları dağıtmak
- CPU İzleme, Hafıza & I Koşu Konteyner / Ç
- Bir yapı tetiklendiğinde Jenkins ile sürekli Teslim İş Akışı etkinleştirilmesi çalışan uygulamaların WAR dosyasını güncelleştirmek için
- Ölçeklenebilirlik Testleri için Uygulama Sunucusu küme dışarı ölçekleme
Tomcat ve İskelesi On Java Tabanlı Pizza Shop Başvurusu İçin Başvuru şablonları Bina
Bir kez (ya barındırılan DCHQ.io veya içi versiyonu) DCHQ için giriş, bir kullanıcı App & Makine gidin ve sonra da yeni bir Docker Oluştur şablon oluşturmak için + düğmesine tıklayabilirsiniz.
Biz dört uygulama şablonları oluşturduk Docker Hub resmi görüntüleri kullanarak aynı Pizza Shop uygulaması için - ama dört farklı uygulama sunucuları için.
- 3-Tier PizzaShop (Nginx - Tomcat - mariadb)
- 3-Tier PizzaShop (Nginx - İskelesi - mariadb)
Her iki şablonları karşısında, Nginx (istek zaman veya) default.conf dosyasında konteyner IP uygulama sunucularının dinamik eklemek için bir BASH komut plug-in yürütmesini olduğunu göreceksiniz.
The application servers (Tomcat and Jetty) are also invoking a BASH script plug-in to deploy the Pizza Shop Java WAR files from an external URL Tomcat, JBoss and Jetty are invoking the exact same plug-in – except the WAR file is getting deployed on different directories:
- Tomcat - dir = / usr / local / tomcat / webapps / ROOT.war
- İskelesi - dir = / var / lib / iskele / webapps / ROOT.war
Sen CLUSTER_SIZE parametresi (aynı uygulama bağımlılıkları ile) başlatmak için konteyner sayısını belirlemek için izin verdiğini göreceksiniz.
ev sahibi parametresi Eğer konteyner dağıtımları için kullanmak istediğiniz ana belirlemenizi sağlar. Bu şekilde farklı bilgisayarlar (ya da bölgeler) genelinde uygulama sunucusu kümeleri için yüksek kullanılabilirliği sağlamak ve veritabanı örneğin ayrı bir host üzerinde çalışmasını sağlamak için afinite kurallarına uymak olabilir. İşte ev sahibi parametresi için desteklenen değerler şunlardır:
- host1, host2, host3 , vb - konteyner dağıtımları için bir veri merkezi (veya küme) içinde rastgele bir ev sahibi seçer
- <IP Adresi 1 IP Adresi 2, vb> - Bir kullanıcı gerçek IP konteyner dağıtımları için kullanmak adresleri belirlemenizi sağlar
- <Hostname 1, Hostname 2, vb> - Bir kullanıcı konteyner dağıtımları için kullanılacak gerçek hostnames belirlemenizi sağlar
- Joker karakterler (örneğin "db- *", ya da "app-srv- *") - joker belirtmek için bir hostname içinde kullanmak
Ayrıca, bir kullanıcının başka bir resmin ortam değişkeni bir başvuru yaparak çapraz görüntü ortam değişkeni bağları oluşturabilirsiniz. Bu durumda, biz birkaç bağları yaptık - includingdatabase.url = jdbc: mysql: // {{mariadb | container_ip}}: 3306 / {{mariadb | MYSQL_DATABASE}} - hangi veritabanı konteyner IP isteği zamanında dinamik çözümlenir ve uygulama sunucuları veritabanı ile bağlantı kurabilir sağlamak için kullanılır.
İşte desteklenen ortam değişken değerleri listesi aşağıdadır:
- {{alphanumeric | 8}} - rastgele 8 karakterli alfanumerik dize oluşturur. Bu rasgele şifreler oluşturmak için yararlıdır.
- {{<Image Name> | ip}} - Bir ortam değişkeni için bir değer olarak bir kabın ana bilgisayar IP adresini girmek için izin verir. Bu veritabanı ile bağlantı kurmak için katman katman izin verdiği için çok yararlıdır.
- {{<Image Name> | container_ip}} - Bir ortam değişkeni için bir değer olarak bir kabın iç IP girmek için izin verir. Bu (veritabanı bağlantı noktasını maruz kalmadan) veritabanı ile güvenli bir bağlantı kurmak için katman katman izin verdiği için çok yararlıdır.
- {{<Image Name> | port _<Port Number>}} - Bir ortam değişkeni için bir değer olarak bir kabın Liman numarasını girmek için izin verir. Bu veritabanı ile bağlantı kurmak için katman katman izin verdiği için çok yararlıdır. Bu durumda, belirtilen port numarası dahili port numarası olmalıdır - konteyner tahsis edilir harici port değil yani. Örneğin, {{PostgreSQL | port_5432}} katman katman veritabanı ile bağlantı kurmak için izin verecek gerçek harici bağlantı noktasına tercüme edilecektir.
- {{<Image Name> | <Environment Variable Name>}} - Başka bir resmin ortam değişkeni içine bir görüntünün ortam değişkeni değerini girmek için izin verir. Burada kullanım durumları sonsuzdur - En çok katmanlı uygulamaları çapraz görüntü bağımlılıkları olacak gibi.
Hazırlama & Herhangi Cloud hakkında Dayanak Altyapı Otomatik ölçekleme
Bir uygulama kaydedildikten sonra, bir kullanıcı yetkilendirme ve openstack, CloudStack, Amazon Web Services, Rackspace, Microsoft Azure, DigitalOcean HP Kamu Cloud dahil 12 farklı bulut uç noktalara kümelerin otomatik ölçeklendirme otomatik hale getirmek için bir bulut sağlayıcısı kayıt olabilirsiniz, IBM SoftLayer, Google Compute Engine, ve diğerleri.
İlk olarak, bir kullanıcı Rackspace şirketinin seçmek için + düğmesine tıklayarak ardından Bulut Sağlayıcıları gidip tarafından Rackspace (örneğin) bir bulut sağlayıcısı kayıt olabilirsiniz. Rackspace Cloud Kontrol Paneli Hesap Ayarları bölümünden alınabilir ki - Rackspace API Anahtarı sağlanmalıdır.
Bir kullanıcı daha sonra otomatik olarak yeni Bulut Sunucular dönmesi için otomatik ölçekli politikası ile bir küme oluşturabilirsiniz. Bu + butonuna tıklayarak daha sonra Kümeleri sayfasına giderek ve yapılabilir. Bir kapasite tabanlı yerleştirme politikası seçin ve ardından bir küme içinde birden fazla makinede güvenli, şifre korumalı çapraz konteyner iletişimi kolaylaştırmak için ağ katmanı olarak Weave edebilirsiniz. Bu örnekte TheAuto Ölçekli Politikası VM (veya Bulut Sunucular) 10 sayısını ayarlar.
Bir kullanıcı artık hüküm Rackspace şirketinin seçmek için + düğmesine tıklatarak Makineleri gidip tarafından yeni oluşturulan kümede Bulut Sunucular bir dizi. Bulut Sağlayıcı seçildiğinde, bir kullanıcı gerekli bölge, boyutu ve görüntü seçebilirsiniz. Limanlar yeni Bulut Sunucular açıldı (Dokuma için Docker, 6783 örneğin 32000-59000 ve 5672 RabbitMQ için) yapılabilir. A Data Center (veya Küme) daha sonra seçilir ve Bulut Sunucuları sayısı belirtilebilir.
Rackspace Cluster üzerinde Multi-Tier Java Tabanlı Pizza Shop Uygulaması Dağıtma
Bulut Sunucular sağlanan sonra, bir kullanıcı bir multi-katmanlı, yeni Bulut Sunucuları Docker tabanlı Java uygulamaları dağıtabilirsiniz. Bu çok katmanlı bir uygulama talep etmek için Özelleştir üzerine tıklatarak Self Servis Kütüphanesi gezinme ve yapılabilir.
Bir kullanıcı Run tıklamadan önce oluşturulmuş (DEV veya QE gibi) bir Çevre Etiketi ve Rackspace küme seçebilirsiniz
CPU İzleme, Hafıza ve Koşu Konteynerler Of I / O Kullanımı
Uygulama yukarı ve çalışmaya başladığında, bizim geliştiriciler CPU, Bellek izlemek, ve bu ölçümleri önceden tanımlanmış bir eşiği aştığında ben çalışan konteyner / Ç uyarıları almak için. Bizim geliştiricilerin fonksiyonel ve yük testi gerçekleştirirken özellikle yararlıdır.
Bir kullanıcı tarihsel izleme analizi gerçekleştirmek ve konteyner güncellemelerine sorunları ilişkilendirmek ya da dağıtımları inşa edebilirsiniz. Bu daha sonra onMonitoring çalışan uygulama Eylemler menüsünden tıklayıp yapılabilir. Özel bir tarih aralığı tarihsel CPU, Bellek ve I / O görüntülemek için seçilebilir.
Bir Yapı tetiklendiğinde Jenkins ile Sürekli Teslim İş Akışı etkinleştirilmesi Koşu Uygulaması SAVAŞ dosyası güncelleştirmek için
Uygulama kodu içeren Docker görüntüleri yeniden ve her uygulama güncelleme ile yeni konteynerleri iplik "değişmez" konteyner modeli takip etmek isteyen geliştiriciler için DCHQ otomatik içeren Dockerfiles gelen Docker görüntüleri veya özel GitHub projeler oluşturmak için geliştiriciler sağlayan otomatik bir yapı özelliği sağlar Dockerfiles.
Ancak, pek çok geliştirici isteyebilirsiniz en son Java WAR dosyası ile çalışan uygulama sunucusu kapları güncelleme yerine. Bunun için, DCHQ geliştiriciler Jenkins ile sürekli dağıtım iş akışını sağlamak için izin verir. Bu Sürekli Teslimat seçerek sonra çalışan uygulama Eylemler menüsünden tıklayıp yapılabilir. Bir kullanıcı zaten DCHQ kayıtlı olan bir Jenkins örneğini seçebilir, en son WAR dosyasını üretecek ve daha sonra bir BASH komut plug-in, bu yapı kapmak ve bir çalışan uygulama sunucusunda dağıtmak Jenkins gerçek iş. Bu politika kaydedildikten sonra, DCHQ Jenkins son WAR dosyasını bir yapı tetiklenir her zaman kapmak ve çalışan uygulama sunucusu üzerinde dağıtmak olacaktır.
Geliştiriciler, sonuç olarak her zaman DEV / TEST ortamlarında kendi çalışma kapları üzerinde konuşlanmış son Java WAR dosyası olacak.
Tomcat Uygulama Sunucusu küme Out ölçekleme
çalışan uygulama kısıtlı kaynaklarla olur, bir kullanıcı artan yükü karşılamak için başvuru ölçekli olabilir. Ayrıca, bir kullanıcı örneğin hafta sonları iş saatleri ve ölçek sırasında ölçek dışarı planlayabilirsiniz.
2 4 ila Tomcat sunucu kümesini dışarı ölçeklemek için bir kullanıcı çalışan uygulamanın Eylemler menüsünden tıklatın ve Ölçek Out seçebilirsiniz. Bir kullanıcı daha sonra küme için yeni boyutu belirtin ve sonra Şimdi Çalıştır tıklayabilirsiniz.
Biz o zaman eklenen yeni uygulama sunucusu farkında olduğunu bu nedenle Nginx en default.conf dosyasını güncelleştirmek için BASH plug-in kullanılır. BASH komut eklentileri de günlükleri temizleyerek veya tanımlanmış frekanslarda yapılandırmaları güncellenmesi gibi kullanım durumları karşılamak için planlanmış olabilir. Bir uygulama süresi-line denetim ve teşhis için uygulama yapılan her değişiklik izlemek için kullanılabilir.
çalışan bir kap üzerinde bir plug-in yürütmek için, bir kullanıcı çalışan uygulamanın Eylemler menüsünden tıklatın ve Plug-ins seçebilirsiniz. Bir kullanıcı, daha sonra yük dengeleyici (Nginx) kabı seçmek idam gereken plug-in için arama geçiş düğmesini kullanarak konteyner yeniden etkinleştirebilirsiniz. Bu plug-in için varsayılan argüman dinamik tüm konteyner IP koşu Tomcat sunucularının çözmek ve default.conf dosyasının bir parçası olarak bunları katacak.
Bir uygulama süresi-line denetim ve teşhis için uygulama yapılan her değişiklik izlemek için kullanılabilir. Bu çalışan bir uygulama sayfanın altındaki genişletilebilir menüden ulaşılabilir.
Uyarılar ve bildirimler ya host veya konteynerlerin CPU ve Bellek Kullanımı tanımlı eşiğini aştığında kaplar veya ana aşağı veya mevcuttur.
Sonuç
kurumsal Java uygulamaları containerizing hala mevcut uygulama kompozisyon çerçeveler karmaşık bağımlılıkları, dış entegrasyon veya otomatik ölçeklendirme sonrası hüküm iş akışları adresi yok çünkü çoğunlukla bir sorundur. Ayrıca, konteynerlerin geçici tasarım geliştiricileri yeni kapları dönmesi ve her versiyon güncellemesi ile karmaşık bağımlılıkları ve dış entegrasyonları yeniden oluşturmak zorunda anlamına geliyordu.
DCHQ, barındırılan ve içi sürümlerinde kullanılabilir, tüm bu zorlukların ele ve çapraz görüntü ortam değişkeni bağlamaları, çağrılabildiğinden genişletilebilir BASH komut eklentileri kolaylaştıran bir avans uygulaması kompozisyon çerçevesinde aracılığıyla kurumsal Java uygulamaları konteyner kullan kolaylaştırır otomatik ölçekleme desteği ile birden çok ana bilgisayara veya bölgeler arasında yüksek kullanılabilirlik için zaman ya da post-hüküm ve uygulama kümeleme isteyin.
Üzerinde ÜCRETSİZ Sign Up http://DCHQ.io
Giriş / çıkış ve sürekli teslim uygulama yaşam döngüsü yönetimi izleme gibi işlevselliği, konteyner güncellemeleri, ölçek ile birlikte out-of-box çok katmanlı Java uygulama şablonları erişmek için.
No comments:
Post a Comment