Bu sayfa, V-Ray derlemelerinin komut dosyası (Script) aracılığıyla V-Ray Swarm eşlerine dağıtılması hakkında bilgi sağlar.
Genel Bakış #
Komut dosyası dağıtım yöntemi, Sistem Yöneticisi veya ileri düzey bir kullanıcı tarafından gerçekleştirilir. Bu yöntem, V-Ray sürümlerini her bir eş cihazdaki <veri dizini>/VRay/import/ dizinine kaydeder.
İş Akışı #
-
Sunucunuzda paylaşımlı bir dizin oluşturun.
-
V-Ray dağıtımlarını oraya yerleştirin.
-
Onu tüm eşlere yükleyin.
-
Swarm’ı tüm eşlerde durdurun.
-
Bunlardaki `vrayImportDir` ayarını, paylaşılan dizini gösterecek şekilde değiştirin.
-
Swarm’ları tüm eşler üzerinde başlatın.
4, 5 ve 6 numaralı adımlar, paylaşılan dizininiz <veri dizini>/VRay/import/ konumunda bulunmuyorsa gereklidir . Bu dizin farklı işletim sistemleri için V-Ray derlemeleri içeriyorsa, bunlardan yalnızca bazıları başarıyla dağıtılacaktır. Ancak, dağıtım denemeleri yaklaşık her 10 saniyede bir gerçekleştirilecek ve bu da makineyi aşırı yükleyecektir. Bu nedenle, en iyi yaklaşım, her işletim sistemi + mimari için bir tane olmak üzere (örneğin: Windows_x86/, Windows_Arm64/, Linux_x86/) birden fazla paylaşılan dizin oluşturmak ve ilgili V-Ray arşivlerini/kurulum dosyalarını oraya yerleştirmektir.
Bu işlem, örneğin PowerShell , bash veya benzeri bir betik kullanılarak yapılabilir . Bu tür bir betik, V-Ray arşivini veya bir yükleyiciyi özel bir Swarm uç noktasına yüklemeli/göndermelidir; bu uç nokta localhost:1113/api/vray/upload’dur, burada 1113 webPort ayarıdır ve 1113 varsayılan değeridir. Curl için örnek:
curl -v -Fqueued=false -F \
file=@$HOME/tmp/vray-lin-df715d3c8ff9.tar\
localhost:1113/api/vray/upload
Ve bu betik de çok benzer bir şey yapabilir. Bu basit örnekten de görülebileceği gibi, parametreler var: kuyruğa alınmış ve dosya.
Dolayısıyla API şu şekildedir:
-
<peer-IP>:<webPort>/api/vray/upload HTTP POST
-
<peer-IP>, eşin IP adresidir; yerel Swarm için localhost kullanılabilir.
-
Swarm.yaml ayarlarında değiştirilmediyse, webPort varsayılan olarak 1113’tür.
POST isteğinin parametreleri şunlardır:
-
-
`queued` bir boolean bayrağıdır; eğer `false` ise (JSON gösterimi kullanılır), yüklenen dosya hemen işlenir (senkron veya hızlı çağrı). Eğer ` true` ise, yüklenen dosya `<data-directory>/VRay/import/` dizinine yerleştirilir ve biraz sonra içe aktarılır ( Swarm’ın ` uploadsQueuePeriod` ayarına bakın, varsayılan değer: 10 saniye).
-
-
Dosya , yüklenen dosyanın kendisidir (desteklenen formatta bir arşiv veya desteklenen formatta bir yükleyici). Yükleyicilere varsayılan olarak izin verilmez; izin vermek için Swarm’ın allowExecutables ayarını değiştirin. Hızlı modda bir dosya yüklendiğinde ( queued false ise ): Dosya yükleme ve dağıtım tamamlanana kadar bekleyin. Yanıtı aldığınızda, V-Ray dosyasının tamamen dağıtıldığı (ve <data-directory>/VRay/import/ dizinine kaydedilerek diğer eşlerle paylaşılmaya hazır olduğu) anlamına gelir. V-Ray başarıyla dağıtılmadıysa yanıtlar bir hata mesajı içerebilir. Başarısızlıklar varsa, dosya kaldırılır. İşlem başarılı olursa, V-Ray dağıtılır/kurulur ve arşiv/yükleyici dosyası <data-directory>/VRay/import/ dizinindedir. İşlem başarılı olursa, yanıt aşağıdaki gibi bir JSON sözlüğü içerir:
{ “deployedInDirectory”: <yol>,
“uploadedFileSize”: <tamsayı>,
“tmpFile”: <yol>,
“takenSeconds”: <tamsayı>,
“uploadedVrayVersion”: <sürüm-sözlüğü> }Dosya kuyruğa alınmış modda yüklendiğinde ( queuded true ise ): Yüklenen dosyalar içe aktarma klasörüne kaydedilir – kuyruğa alınır. Dosya yükleme işlemi tamamlanana kadar beklenir, ancak dağıtım işlemi beklemez. Dosyanın kuyruğa alındığına dair bir yanıt alırsınız. Yanıtlar aşağıdaki gibi bir JSON sözlüğü içerir:
{ “queuedAs”: <yol>,
“uploadedFileSize”: <tamsayı>,
“tmpFile”: <yol> }Hızlı veya kuyruklu yükleme başarısız olursa , yanıt şu şekilde bir JSON sözlüğü içerir:
{“message”: <str>, “tmpFile”: <path>}.
Böyle bir sürüm zaten mevcutsa (bu tespit yalnızca arşiv yüklemelerinde mümkündür), daha büyük JSON yanıtının içindeki hata JSON sözlüğü şu şekildedir:{ “mesaj”: <str>, “geçici dosya”: <yol>,
“yüklenenVray sürümü”: <sürüm sözlüğü> }Burada <version-dictionary>, aşağıdaki gibi bir JSON sözlüğüdür:
{ “_revHash”: “e8197af2”,
“_ver”: {“_major”:6,”_minor”:20,”_release”:10} }.Bu , <data-directory>/VRay/import/ dizinindeki bir dosya adının parçası olduğunda 6.20.10-e8197af2 gibi bir <version-str> değerine karşılık gelir .
Her iki kötü durumda da (başarısızlık, zaten mevcut sürüm) geçici dosya kaldırılacak ve her şey önceki haline dönecektir. Dolayısıyla, tüm (büyük) JSON şu şekildedir: {<tag-str>: <yukarıdaki sözlüklerden biri>} burada <tag-str> şu dizelerden biridir:
MevcutUR
Böyle bir V-Ray sürümü zaten mevcut.
Başarısızlık
Yükleme hatası
Sıraya alınmışUR
Sıraya alınmış modda yükleme başarıyla tamamlandı.
RapidUR
Hızlı modda yükleme başarıyla tamamlandı.
Yanıt örnekleri:{ “ExistingUR”:
{“message”:”V-Ray sürümü zaten mevcut”,
“tmpFile”:”/tmp/servant-multipart106588-2922.buf”,
“uploadedVrayVersion”:
{“_revHash”:”e8197af2″,
“_ver”: {“_major”:6,”_minor”:20,”_release”:10} }}}Bir diğeri:
{
“RapidUR”: {
“takenSeconds”: 6,
“tmpFile”: “/tmp/servant-multipart106588-2924.buf”,
“uploadedFileSize”: 458321016,
“deployedInDirectory”:
“/tmp/VRay/vray-6.20.10-e8197af2”,
“uploadedVrayVersion”: {
“_revHash”: “e8197af2”,
“_ver”: {
“_major”: 6,
“_minor”: 20,
“_release”: 10 }
}
}
} -
-
<peer-IP>:<webPort>/debug/allowExecutables HTTP GET
-
<peer-IP> ve webPort öncekiyle aynıdır.
Bu çağrı, “çalıştırılabilir dosyalara izin veriliyor mu?” şeklinde bir boolean bayrağı döndürür. Bu, swarm.yaml ayarlarında değiştirilebilir ( allowExecutables : true ekleyin).
