Küme Şablonları
Azure CycleCloud, küme yapılandırmalarını tanımlamak için şablonları kullanır. CycleCloud'da varsayılan olarak bir dizi şablon bulunur ve desteklenen şablonların tam listesi GitHub'da sağlanır. Yeni şablonlar oluşturabilir veya mevcut şablonları özelleştirebilirsiniz. Örneğin, Spot VM'lerden yararlanmak için mevcut bir şablonu özelleştirmek veya kendi ağınızı genişletmek için bir VPC eklemek isteyebilirsiniz.
Yapılandırma Gösterimi
Azure CycleCloud küme şablonlarının tümü, bir düğüme veya nodearray'ye ait bir veya daha fazla [[yapılandırma]]] bölümüne sahip olma seçeneğine sahiptir. Bu bölümlerde CycleCloud tarafından başlatılan düğümlerle ilgili yazılım yapılandırma seçenekleri belirtilir. Noktalı notasyon, yapılandırmak istediğiniz öznitelikleri belirtmek için kullanılır:
[[node scheduler]]
[[[configuration]]]
cycle_server.admin.name = poweruser
cycle_server.admin.pass = super_secret
cycle_server.http_port = 8080
cycle_server.https_port = 8443
Yazmayı kaydetmek için gösterimi kullanarak prefix
bir yapılandırma bölümü de belirtebilirsiniz.
Aynı yapılandırma şu şekilde de yazılabilir:
[[node scheduler]]
[[[configuration cycle_server]]]
admin.name = poweruser
admin.pass = super_secret
http_port = 8080
https_port = 8443
Düğüm/nodearray gerekirse birden çok yapılandırma bölümü de içerebilir:
[[node scheduler]]
[[[configuration]]]
run_list = role[sge_scheduler_node]
[[[configuration cycle_server.admin]]]
name = poweruser
pass = super_secret
Küme Şablonu Parametreleri
Küme şablonları, şablonun kendisini değiştirmek zorunda kalmadan kümenin belirli bölümlerinin değerlerini değiştiren parametreler içerebilir. Bu özellikle geliştirme ve üretim ortamlarının dağıtılması gibi küçük farklılıklara sahip benzer birçok kümenin istendiği durumlarda kullanışlıdır. Küme şablonu içinde parametre belirtmek için söz dizimi, bir değişkene '$' ön eki eklemektir. Bazı parametreler içeren temel bir şablon örneği (işlevsel olmayan) şöyle görünebilir:
# template.txt
[cluster gridengine]
[[node scheduler]]
MachineType = $machine_type
[[[configuration]]]
gridengine.slots = $slots
Bu şablon iki parametre tanımlar: $machine_type
ve $slots
. Bu şablonu kullanarak hem geliştirme hem de üretim ortamlarındaki parametrelerin değerlerini içeren metin dosyaları tanımlayabilirsiniz. Parametre dosyası JSON biçiminde veya Java özellikleri dosya biçiminde olabilir:
# dev-params.json
{
"machine_type": "H16r",
"slots": 2
}
# prod-params.properties
machine_type = Standard_D4v3
slots = 8
Bu, geliştirme parametrelerini içeren bir JSON dosyası ve üretim için değerleri içeren bir .properties dosyası oluşturur.
Not
Parametre dosyanızın dosya adı soneki önemlidir! JSON kullanıyorsanız dosyanızın adı foo.json
olmalıdır. Java özellikleri kullanılıyorsa dosyanızın ile .properties
bitmesi gerekir. Yanlış adlandırılmış parametre dosyaları düzgün içeri aktarılmaz.
Artık eksik parçaları doldurmak için parametre dosyasını kullanarak şablonu içeri aktarabilirsiniz:
cyclecloud import_cluster gridengine-dev -f template.txt -p dev-params.json -c gridengine
cyclecloud import_cluster gridengine-prod -f template.txt -p prod-params.properties -c gridengine
Küme şablonunun içindeki parametrelerin bir kısmını veya tümünü tanımlamak da mümkündür:
# template.txt
[cluster gridengine]
[[node scheduler]]
MachineType = $machine_type
[[[configuration]]]
gridengine.slots = $slots
[parameters]
[[parameter machine_type]]
DefaultValue = Standard_D4v3
[[parameter slots]]
DefaultValue = 2
Her parametrenin varsayılan değerleri şablon içinde tanımlanır (varsayılan olarak 'dev' değerlerini kullandık).
Artık şablonu parametre dosyası olmadan içeri aktarmak mümkündür ve 'dev' değerleri otomatik olarak kullanılır. 'Prod' kümesi oluşturma zamanı geldiğinde, şablon dosyasının içinde belirtilen değerlerin üzerine yazmak için prod-params.properties dosyasını kullanabilirsiniz.
Not
Parametre adları herhangi bir harf, sayı ve alt çizgi içerebilir.
Şablondaki parametre başvuruları iki biçimden birini alabilir:
$param
: adlı tek bir parametrenin değerini kullanır param
${expr}
: Dinamik expr
değerleri hesaplamanıza olanak tanıyan tüm parametreler bağlamında değerlendirir. Örneğin:
Attribute = ${(a > b ? a : b) * 100}
Bu, a
b
ve iki parametreden daha büyük olanını alır ve 100 ile çarpabilir.
İfade ClassAd dil belirtimine göre yorumlanır ve değerlendirilir.
Tek başına bir parametre başvurusu varsa, boole değerleri, tamsayılar ve listeler gibi iç içe yerleştirilmiş yapılar gibi dize olmayan türleri destekleyen parametrenin değeri kullanılır.
Ancak, başvuru başka bir metne eklenmişse, değeri dönüştürülür ve bir dizeye eklenir.
Örneğin, olarak tanımlandığını 456
ve iki yerde başvurıldığını varsayalımparam
:
- Öznitelik1 = $param
- Öznitelik2 = 123$param
değeri Attribute1
numarası 456
olabilir, ancak değeri Attribute2
dizesi "123456"
olur. daha karmaşık durumlarda parametre başvurularını eklemenizi sağlayan ile aynı $param
olduğunu ${param}
unutmayın:
- Öznitelik3 = 123$param789
- Öznitelik4 = 123${param}789
Attribute3
adlı param789
parametreyi arar, ancak Öznitelik4 param
değerini kullanarak değerini alır "123456789"
.
Makine Türleri
Azure CycleCloud, özniteliği aracılığıyla MachineType
birden çok makine türünü destekler. Listelenen sırayla kapasite elde etmeye çalışır.
Küme Başlatma Özellikleri
Azure CycleCloud web uygulaması, kullanıcıların yeni bir küme oluştururken cluster-init proje belirtimlerini seçmesine olanak tanır. Proje belirtimleri küme şablonu içinde ayarlanır:
[parameter ClusterInitSpecs]
Label = Cluster-Init
Description = Cluster init specs to apply to nodes
ParameterType = Cloud.ClusterInitSpecs
[cluster demo]
[[node defaults]]
AdditionalClusterInitSpecs = $ClusterInitSpecs
[[[cluster-init myproject:myspec:1.0.0]]]
Bu parametre küme şablonunuza eklendikten sonra, kullanıcınız yeni bir küme oluştururken uygun proje belirtimlerini seçmek için dosya seçiciyi kullanabilir.
Spot Sanal Makineler
İş yüklerinizin maliyetini azaltmak için ayarlayabilirsiniz Interruptible = true
. Bu, örneğinizi Spot olarak işaretler ve kullanılabilir olduğunda fazla kapasite kullanır. Bu örneklerin her zaman kullanılamadığını ve herhangi bir zamanda ön plana çıkarılabildiğini, yani her zaman iş yükünüz için uygun olmadığını unutmayın.
Varsayılan olarak true olarak ayarlandığında Interruptible
en yüksek fiyat -1 olarak ayarlanmış spot örnekler kullanılır; bu da örneğin fiyata göre çıkarılmayacağı anlamına gelir. Kapasite ve kota mevcut olduğu sürece, örneğin fiyatı Spot için geçerli fiyat veya standart örneğin fiyatı (hangisi daha düşükse) olacaktır. Özel bir maksimum fiyat ayarlamak isterseniz istenen düğümde veya nodearray'de özniteliğini kullanın MaxPrice
.
[cluster demo]
[[nodearray execute]]
Interruptible = true
MaxPrice = 0.2
Arama Tabloları
Bir parametrenin diğerine başvurması ve arama tablosuyla belirli bir değeri hesaplaması olabilir. Örneğin, görüntü için kullanılacak bir parametreniz olduğunu ve bu durumda iki seçeneğiniz olduğunu varsayalım:
[[parameter MachineImage]]
Label = Image
DefaultValue = image-1000
Description = Ubuntu 22.04
Config.Plugin = pico.control.AutoCompleteDropdown
[[[list Config.Entries]]]
Name = image-1000
Label = Ubuntu 20.04
[[[list Config.Entries]]]
Name = image-2000
Label = Ubuntu 22.04
Ayrıca seçilen görüntünün işletim sistemi sürümünü alabilir ve e değeri değer arama tablosu olan bir parametre yaparak bunu diğer yapılandırmalar için kullanabilirsiniz:
[[parameter AmiLookup]]
ParameterType = hidden
[[[record DefaultValue]]]
image-1000 = Ubuntu 20.04
image-2000 = Ubuntu 22.04
Kullanıcı arabiriminde görünmemesi için bunun gizlendiğini unutmayın.
Seçilen görüntü için kullanılan işletim sistemi sürümünü küme tanımında başka herhangi bir yere alabilirsiniz:
[[node node]]
[[[configuration]]]
version = ${AmiLookup[MachineImage]}
GUI Tümleştirmesi
Küme şablonunda parametrelerin tanımlanması, Azure CycleCloud GUI'sinin avantajlarından birinin yararlanmasını sağlar. Örnek olarak, parametreleri tanımlarken GUI oluşturmaya yardımcı olmak için aşağıdaki öznitelikler kullanılabilir:
# template.txt
[cluster gridengine]
[[node scheduler]]
MachineType = $machine_type
[[[configuration]]]
gridengine.slots = $slots
[parameters]
[[parameter machine_type]]
DefaultValue = Standard_D4v3
Label = Machine Type
Description = MachineType to use for the Grid Engine scheduler node
ParameterType = Cloud.MachineType
[[parameter slots]]
DefaultValue = 2
Description = The number of slots for Grid Engine to report for the node
GUI'de ve isteğe bağlı "ParameterType" özniteliğinde görünecek olan "Label" ve "Description" öznitelikleri dahil edilir. "ParameterType" özel kullanıcı arabirimi öğelerinin görüntülenmesine izin verir. Yukarıdaki örnekteki "Cloud.MachineType" değeri tüm kullanılabilir makine türlerini içeren bir açılan menü görüntüler. Diğer ParameterType değerleri şunlardır:
Parametre Türü | Description |
---|---|
Cloud.MachineType | Kullanılabilir tüm makine türlerini içeren bir açılan menü görüntüler. |
Cloud.Credentials | Kullanılabilir tüm kimlik bilgilerini içeren bir açılan menü görüntüler. |
Cloud.Region | Kullanılabilir tüm bölgeleri içeren bir açılan menü görüntüler. |
Chef Server Desteği
Azure CycleCloud ChefServer'ı desteklemektedir.
Dosyayı chefserver.json
oluşturun ve kimlik bilgilerinizi ekleyin.
ValidationKey
chef sunucunuzun validation.pem dosyasına karşılık gelir. Ayrıca bunu varsayılan "chef-validator" değerinden değiştirip değiştirmediğiniz de kanıtlanmalıdır validation_client_name
:
{
"AdType" : "Cloud.Locker",
"ValidationKey" : "YOURVALIDATION.PEMHERE",
"ValidationClientName" : "chef-validator",
"Credentials" : "default",
"Location" : "https://mychefserver",
"ChefRepoType" : "chefserver",
"LockerType" : "chefrepo",
"Name" : "chefrepo",
"AccountId" : "default",
"Shared" : false
}
Ardından, dosyayı dizinine /opt/cycle_server/config/data
yerleştirin. Otomatik olarak içeri aktarılır.
Şablonlardaki Özel Kullanıcı Görüntüleri
Azure CycleCloud, şablonlarda özel görüntüleri destekler. Görüntü kimliğini (kaynak kimliği) doğrudan ile ImageId
belirtin veya görüntüyü görüntü kayıt defterine ekleyin. Görüntü kayıt defterindeyken veya düğümünüzün üzerinde görüntüye Image
ImageName
başvurun. Küme oluşturma sayfasındaki görüntü açılan listesinde görünür.
Görüntü kayıt defterindeki görüntüler, mantıksal görüntünün içeriğini tanımlayan bir Package
kayıt ve uygun bulut sağlayıcısında gerçek görüntü kimliğini belirten bir veya daha fazla kayıt Artifact
içerir. Örneğin, üzerinde R yüklü özel bir görüntü şu Paket kaydından oluşabilir:
AdType = "Package"
Name = "r_execute"
Version = "2.1.1"
PackageType = "image"
Label = "R"
Bu kaydı ekledikten sonra, küme şablonuna veya ImageName = r_execute
öğesini ekleyerek Image = R
bu görüntüyü belirtebilirsiniz.
Bu görüntü, kimliğine /subscriptions/xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/images/MyCustomImage
sahip kullanımda tek bir Sanal Makine olarak mevcutsa, aşağıdaki yapıtın depolanması gerekir:
AdType = "Artifact"
Package = "r_execute"
Version = "2.1.1"
Name = "az/useast"
Provider = "az"
ImageId = "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MyResourceGroup/providers/Microsoft.Compute/images/MyCustomImage"
Yapıtta belirtmelisiniz Provider
.
Belirli bir görüntü paketi için istediğiniz kadar yapıt ekleyebilirsiniz, ancak bu görüntüyü kullanmak için gereken tüm yapıtları istediğiniz tüm "konumlara" (bulut sağlayıcısı hesabı, bölgeleri, projeleri vb.) eklemeniz gerekir. Yapıtın adı önemli değildir, ancak belirli bir paket ve sürüm için tüm yapıtlar için benzersiz olması gerekir. Sağlayıcı ve sağlayıcıya özgü ayrıntıların (örn. bölge) bir bileşiminin kullanılması genellikle önerilir. CycleCloud, sağlayıcıyla ve sağlayıcıya özgü ayrıntılarla eşleşecek doğru yapıtı otomatik olarak seçer, ancak Ad ayrıştırmak yerine Sağlayıcı özniteliğini (ve Bölge vb.) kullanır.
Aynı ada sahip birden fazla görüntü paketi eklerseniz, bunların farklı sürüm numaraları olmalıdır. Bir örneği başlatırken CycleCloud, sürüm numarasını noktalı bir dize olarak değerlendirip her bölümü bir sayı olarak karşılaştırarak en yüksek sürüm numarasına sahip görüntüyü otomatik olarak seçer. Bunu geçersiz kılmak için düğümde değişmez değer (örneğin1.2
) veya joker karakter (1.x
) olarak belirtinImageVersion
.