Güncelleme
Sunucu daha yeni bir sürümü günde bir kez kendisi öğrenir. Onu kurmak ise her zaman bir kişinin kararıdır: tek sunucuda Ayarlar → Sunucu Ayarları → Sunucu güncellemesi kartından, kümede elle.
| Tek sunucu, güncelleme başlatıcısıyla başlıyor | Tek sunucu, inscada.jar olarak başlıyor | Küme | |
|---|---|---|---|
| Nasıl | Sunucu güncellemesi kartı | Bir kez elle, sonra güncelleme düğmesine geçirilir | Elle, küme sırasıyla |
Yeni bir sürüm nasıl duyurulur
Section titled “Yeni bir sürüm nasıl duyurulur”Günlük denetim
Section titled “Günlük denetim”Sunucu günde bir kez (ilki açılıştan bir dakika sonra) genel sürüm kaynağına, inscada-releases’a, çalışandan daha yeni bir sürüm olup olmadığını sorar. Denetimin kendisi hiçbir şey indirmez ve kurmaz; isteği, sunucunun çalıştırdığı sürüm hakkında hiçbir şey söylemez.
Daha yeni bir sürüm, kenar çubuğunda sürümün altında Güncelleme var: … olarak, sürüm sayfasına bağlantıyla görünür. Bunu yalnızca kurulum yöneticisi görür; başka kimse görmez. Aynı bildirim, sürümün lisans bakımınızın kapsamında olup olmadığını da söyler. İnterneti olmayan bir sunucu, kaynağa ulaşılamadığını bir kez loga yazar ve çalışmaya devam eder.
Kapatmak
Section titled “Kapatmak”Denetim varsayılan olarak açıktır. İnternete çıkmaması gereken bir saha (air-gapped, OT ağları) onu kapatır; o zaman hiç istek yapılmaz. Şunlardan herhangi biri yeter:
- Ayarlar → Sunucu Ayarları → Genel → Güncelleme denetimi kapalı ve bir yeniden başlatma. Windows kurulumcusunun servisinde yol budur.
- Servisin ortamında
INS_UPDATE_ENABLED=falseya da komut satırında-Dins.update.enabled=false. İkisi de sayfanın önüne geçer; sayfa anahtarı kilitli gösterir.
Denetim kapalıyken kart indirme de sunamaz; sürümü elle kopyalayın (aşağıda).
Ayna sunucu, proxy
Section titled “Ayna sunucu, proxy”- Ayna sunucu. Kaynağın adresi sayfada yoktur. Servisin ortamındaki
INS_UPDATE_URLya daconfig/application.ymliçindekiins.update.url, kaynakla aynı JSON’u veren bir iç aynayı gösterebilir. Kartın indirmesi sürümün dosyalarını aynı kaynaktan alır; bu yüzden indirme sunacak bir ayna, GitHub gibi,app-<rev>.jarveapp-<rev>.jar.sigdosyalarınıhttpsüzerinden, her dosyanınsizedeğeri ve jar’ındigestdeğeriyle sunar; bunlar yoksa sürüm gösterilir ama indirme için sunulmaz. - HTTP proxy. Denetim ve indirme, ancak JVM’e söylenirse proxy’den geçer: servisin komut satırına
-Dhttps.proxyHost=<host> -Dhttps.proxyPort=<port>ekleyin (proxy’den geçmemesi gereken adresler için-Dhttp.nonProxyHosts=<hostlar>). Kullanıcı adı ve parola isteyen bir proxy desteklenmez; orada denetimi kapatın ya da ağın içinde bir ayna kullanın. Bunlar JVM seçenekleri olduğundan Ayarlar → Sunucu Ayarları onları ayarlayamaz.
Resmî sürümler ve nightly’ler
Section titled “Resmî sürümler ve nightly’ler”| Resmî sürüm | Nightly | |
|---|---|---|
| Kaynaktaki adı | inSCADA 20261108-11 | inSCADA nightly … (not for production), bir pre-release |
| Dosyalar | app-<rev>.jar, app-<rev>.jar.sig, inscada-launcher-<rev>.zip | yalnızca jar |
| İmzalı | Evet, 20261108-11’den itibaren | Hayır |
| Güncelleme düğmesiyle | Evet | Asla: başlatıcı imzası olmayan jar’ı reddeder, kart da bir pre-release’i indirme için sunmaz |
Güncelleme başlatıcısı bir jar’ı yalnızca sürümün imzasını doğrularsa uygular. Nightly, kurulacaksa elle kurulur.
Düğmeyle güncellemek
Section titled “Düğmeyle güncellemek”Ayarlar → Sunucu Ayarları → Sunucu güncellemesi, güncelleme başlatıcısıyla başlayan tek bir sunucuyu günceller. Kartı açmak VIEW_SERVER_SETTINGS ister; indirmek, güncellemek ve iptal etmek UPDATE_SERVER_SETTINGS ister. İkinci yetkisi olmayan kişi sürümü, denetimleri ve ilerlemeyi görür, düğmeleri görmez.
Sunucu kendini güncelleyemiyorsa kart bunun yerine nedenini söyler — örneğin “Bu sunucu kendini bu sayfadan güncelleyemez.” Kart ancak üçü birden sağlanınca sunulur: ürün güncelleme başlatıcısıyla başlatılmış, servis yöneticisinin onu yeniden başlattığı kanıtlanmış (Şimdi yeniden başlat ile aynı denetim) ve sunucu bir küme düğümü değil.
1. Sürümü güncelleme klasörüne koyun
Section titled “1. Sürümü güncelleme klasörüne koyun”Sürüm, kurulumun update\pending klasöründe olmalıdır (Windows’ta C:\Program Files\inSCADA\update\pending, Linux’ta /opt/inscada/update/pending). İki yolu var:
- İndirmek. 20261108-11’den sonraki sürümlerde, günlük denetim daha yeni bir sürüm bulmuşsa ve
update\pendingboşsa, kart Daha yeni sürüm satırını (sürüm ve boyut) ve <sürüm> sürümünü indir düğmesini gösterir. İndirme bir neden (ve gerekiyorsa imzanızı) ister, ilerlemesini gösterir ve İndirmeyi iptal et ile durdurulabilir. Hiçbir şey kurmaz: dosyalarupdate\pending’e gelir, güncelleme ardından aynı karttan başlatılır. Başarısız olan ya da iptal edilen bir indirme geride hiçbir şey bırakmaz: “İndirme durdu; güncelleme klasörüne hiçbir şey konmadı.” - Kopyalamak. Sürüm sayfasından
app-<rev>.jarveapp-<rev>.jar.sigdosyalarınıupdate\pending’e kopyalayın. İnterneti olmayan sahada yol budur..sigolmadan kopyalanan jar, yanında imza dosyası olmadığı için reddedilir;.sig’i sonradan kopyalamak yeter.
update\pending’de yalnızca bir jar olabilir.
2. Denetimleri okuyun
Section titled “2. Denetimleri okuyun”Kart, hiçbir şey değişmeden önce her ön koşulu, karar verdiği sayılarla birlikte değerlendirir. Önceki biri tutmadığı için değerlendirilemeyen denetim Denetlenmedi gösterir.
| Denetim | Ne zaman tutar |
|---|---|
| Güncelleme başlatıcısıyla başlatılmış | Servis inscada-launcher.jar’ı başlatıyor |
| Servis yöneticisi onu yeniden başlatır | Servis yöneticisinin (NSSM, systemd) servis kapanınca onu yeniden başlattığı kanıtlanmış |
| Küme düğümü değil | Sunucu bir kümenin parçası değil |
| Güncelleme klasöründe bekleyen tek bir sürüm | update\pending’de sürümü olan tam bir jar var |
| Güncelleme başlatıcısı sürümü kabul ediyor | Başlatıcının kendi kararı: güvenilen bir anahtarla imzalı, bir inSCADA jar’ı, çalışan sürümden yeni |
| Bakım sürümü kapsıyor | Sürüm, lisans bakımınızın bitişinde ya da öncesinde derlenmiş |
| Yeniden başlatma bekleyen kayıtlı bir ayar yok | Sunucu Ayarları’nda kaydedilip hâlâ bekleyen bir şey yok |
| Yedek için yer | update\backups altındaki boş yer ≥ veritabanının iki katı, büyük olan jar’ın iki katı ve 1 GB |
| PostgreSQL yedekleme araçları | Sunucunun PostgreSQL sürümünden eski olmayan bir pg_dump bulunuyor (önce kurulumun kendi pgsql\bin’i) |
| Süren başka bir güncelleme yok | Süren bir güncelleme ya da indirme yok ve son güncelleme hazır olduğunu bildirmiş |
Güncelleme başlatıcısının kararı başlatıcının cevabını tam olarak gösterir: nedeniyle birlikte Kabul edildi ya da Reddedildi, çalışan sürüm ve sürümü kimin imzaladığı. “Güncelleme, her denetim geçtiğinde başlayabilir.”
3. Güncelle ve yeniden başlat
Section titled “3. Güncelle ve yeniden başlat”Güncelle ve yeniden başlat bir neden ister — denetim izi onu, güncellemeyi kimin istediğiyle birlikte kaydeder — ve kurulum gerektiriyorsa imzanızı. Her güncellemenin (ve her indirmenin) imzalı olmasını isteyen kurulum, Ayarlar → Sunucu Ayarları’ndaki İmza gerektiren işlemler’e APPLICATION_UPDATE ekler.
Ardından olanlar:
- SCADA çalışmaya devam ederken veritabanının yedeği alınır. Kart Yedek için veritabanının anlık görüntüsü açılıyor, Veritabanının yedeği alınıyor (ne kadarının yazıldığıyla), Yedek, denetlemek için geri okunuyor gösterir. Buraya kadar Güncellemeyi iptal et onu durdurur ve hiçbir şey değişmez.
- Sunucu yeniden başlar. “Sunucu … sürümünü kurmak için yeniden başlıyor.” Güncelleme başlatıcısı sürümü yeniden denetler ve ürün açılmadan önce
inscada.jar’ın yerine koyar; önceki jarupdate\kept’e gider, yedekupdate\backups’ta kalır. - Yeni sürüm başlar ve hazır olduğunu bildirir. Sayfa yeniden bağlanır ve “Yeni sürüm çalışıyor. Önceki jar ve veritabanı yedeği … sunucuda saklanıyor.” der.
Değişiklik kayda geçer: denetim izinde istek (neden ve varsa imzayla) ve sonucu, olay logunda “This installation was updated from X to Y.” satırı bulunur.
SCADA ne kadar kesilir
Section titled “SCADA ne kadar kesilir”Yedek alınırken hiçbir şey durmaz: SCADA, cihaz haberleşmesi ve kullanıcılar devam eder. SCADA yeniden başlatmadan yeni sürüm ayağa kalkana kadar kesilir: bir servis açılışı, artı yeni sürümün veritabanı geçişleri — büyük bir historian’da bunlar dakikalar sürebilir. Kart, sunucunun cevap vermediğini söylemeden önce 15 dakika bekler; bu da tek başına bir hata değildir. Güncellemeyi kısa bir durmanın kabul edilebildiği bir zamana planlayın.
Başarısız olursa
Section titled “Başarısız olursa”| Kart ne der | Ne oldu | Ne yapılır |
|---|---|---|
| “Güncelleme durdu; hiçbir şey değişmedi.” | Yedek başarısız oldu ya da iptal edildi; SCADA hiç durmadı | Nedeni okuyun, düzeltin (disk, pg_dump), yeniden deneyin |
| “Güncelleme başlatıcısı … tarihinde güncellemeyi reddetti ve önceki sürüm çalışmaya devam etti.” | Yeniden başlatmada başlatıcı sürümü uygulamadı | Önceki sürüm çalışıyor; nedeni okuyun. Kendisi yüzünden (imza, sürüm) reddedilen jar bir daha alınmaz |
| ”…, … tarihindeki güncellemeden sonra başlamadı.” | Yeni sürüm üç açılışta hazır olduğunu bildirmedi. Hiçbir şey geri alınmadı | Karar verin: nedeni düzeltin ya da geri alın (aşağıda) |
| “Sunucu, güncelleme için yeniden başladığından beri 15 dakikadır cevap vermiyor.” | Hâlâ açılıyor, belki geçişleri çalıştırıyor, ya da açılmıyor | Sunucunun loguna bakın; ancak ayağa kalkmıyorsa geri alın |
Kendiliğinden geri alma yoktur; kararı bir kişi verir.
Geri almak
Section titled “Geri almak”Geri alma bu sunucuyu önceki jar’a ve o güncellemenin aldığı veritabanı yedeğine döndürür. Komutu, ayağa kalkmayan bir güncellemede kartta (“Önceki sürüme dönmek için bunu sunucuda yönetici olarak (Linux’ta root) çalıştırın:”), sunucunun logunda UPDATE FAILED satırında ve UpdateTool status çıktısında gösterilir. Windows’ta yönetici komut isteminde:
"C:\Program Files\inSCADA\graalvm-jdk-21\bin\java.exe" -cp "C:\Program Files\inSCADA\inscada-launcher.jar" com.inscada.launcher.tool.UpdateTool rollbackÖnce her şeyi denetler, ne yapacağını söyler ve ancak yes yazarsanız devam eder. Hiçbir şey silinmez: başarısız sürümün çalıştığı veritabanı yeniden adlandırılıp saklanır.
Mevcut bir kurulumu güncelleme düğmesine geçirmek
Section titled “Mevcut bir kurulumu güncelleme düğmesine geçirmek”Güncelleme başlatıcısından önce yapılmış bir kurulum inscada.jar’ı doğrudan başlatır ve kart onu güncelleyemez. Geçiş bir kez, Windows’ta, bu sırayla yapılır. Kurulumcuyu yeniden çalıştırmak gerekmez.
1. Önce jar’ı elle güncelleyin
Section titled “1. Önce jar’ı elle güncelleyin”Güncelleme kartı 20261108-11’den itibaren vardır; bu yüzden ürün, her şeyden önce en az o sürümde olmalıdır.
- Sürümün
app-<rev>.jardosyasını sürüm sayfasından indirin. - inSCADA servisini durdurun.
C:\Program Files\inSCADAiçindekiinscada.jar’ı yeni jar ile değiştirin; adıinscada.jarolsun.- Servisi başlatın.
2. Başlatıcıyı alın
Section titled “2. Başlatıcıyı alın”inscada-launcher.jar, aynı sürüm sayfasındaki inscada-launcher-<rev>.zip’in içindedir. Onu jar ile aynı sürümden alın ve zip’i açın; zip yalnızca bu dosyayı içerir.
3. Üç dosyayı bir klasöre koyun
Section titled “3. Üç dosyayı bir klasöre koyun”Sunucuda tek bir klasöre — masaüstü olur — kopyalayın:
inscada-launcher.jar(2. adım);enable-updates.batveenable-updates.ps1, inSCADA Setup ile gelen iki betik.
4. enable-updates.bat’ı yönetici olarak çalıştırın
Section titled “4. enable-updates.bat’ı yönetici olarak çalıştırın”enable-updates.bat üzerinde sağ tık → Yönetici olarak çalıştır.
Önce denetler; şunlar sağlanmıyorsa nedenini söyleyip reddeder ve hiçbir şeyi değiştirmez: yönetici olarak çalışıyor; servis (inSCADA) var ve NSSM ile çalışıyor; komutu inscada.jar’ı servisin kendi klasöründen başlatıyor; inscada-launcher.jar betiğin yanında; servisin kendi Java’sı başlatıcıyı çalıştırabiliyor. Servis zaten başlatıcıyı başlatıyorsa already enabled der ve hiçbir şey değiştirmez.
Sonra ne bulduğunu ve neyi değiştireceğini gösterir ve:
/undoiçin servis komutunu olduğu gibi saklar (config\enable-updates.saved);inscada-launcher.jar’ıinscada.jar’ın yanına kopyalar;update\pending,update\backups,update\keptveupdate\stateklasörlerini oluşturur;- servis LocalSystem yerine adlandırılmış bir hesapla çalışıyorsa (OPC DA, DCOM için birini gerektirir), o hesaba yalnızca başlatıcının ihtiyaç duyduğu hakları verir;
- servis komutunun yalnızca
-jarhedefiniinscada.jar’daninscada-launcher.jar’a çevirir. Komutun geri kalanı aynı kalır.
Ardından sorar:
Restart the inSCADA service now, so that it starts through the launcher?
Yeniden başlatma süresince SCADA kullanılamaz. Yeniden başlatmak için y (ya da e) yanıtını verin: ardından ürün gerçekten başlatıcı üzerinden ayağa kalkana — önce başlatıcının açılış satırı, sonra ürünün kendi açıldı satırı — kadar bekler ve bunu söyler. Başlatıcı iki dakikada, ürün beş dakikada başlamamışsa ya da servis daha önce durursa, bunu servisin durumuyla birlikte söyler ve önceki komutu geri koyup yeniden başlatıp başlatmayacağını sorar. Başka her yanıt servisi olduğu gibi çalışır bırakır; servis bir sonraki yeniden başlatmada başlatıcı üzerinden açılır.
Pencere kapanmadan önce Enter ister. Söylediği her şey logs\enable-updates.log’a da yazılır.
inscada.jar’a, veritabanına, yapılandırma dosyalarına ve sürüme dokunmaz: hiçbir şeyi güncellemez, yalnızca güncelleme düğmesini mümkün kılar.
Geri dönmek: /undo
Section titled “Geri dönmek: /undo”enable-updates.bat /undosaklanan servis komutunu geri koyar; servis yeniden inscada.jar’ı başlatır. inscada-launcher.jar’ı ve update\ klasörlerini (veritabanı yedekleri tutabilirler) bırakır ve bunu söyler. Hem /undo hem etkinleştirme /restart (sormadan yeniden başlat) ve /norestart (soru yok, yeniden başlatma yok) alır; /service <ad> adı inSCADA olmayan servisi belirtir. İkisini de iki kez çalıştırmak hiçbir şeyi değiştirmez ve bunu söyler.
Bundan sonra kart çalışır, sonraki sürümler düğmeyle gelir.
Linux’ta systemd birimi ürün yerine başlatıcıyı, aynı JVM seçenekleri ve argümanlarla başlatır — Restart=on-failure ile ExecStart=/usr/bin/java … -jar /opt/inscada/inscada-launcher.jar … — ve /opt/inscada, servis kullanıcısına ait olarak inscada.jar, inscada-launcher.jar ve update/{pending,backups,kept,state} içerir. ExecStart bir betiği değil, doğrudan java’yı çalıştırmalıdır.
Yeni kurulumlar
Section titled “Yeni kurulumlar”Başlatıcıyı taşıyan bir kurulumcuyla yapılan kurulum yukarıdakilerin hiçbirine ihtiyaç duymaz: kurulumcu inscada-launcher.jar’ı inscada.jar’ın yanına koyar, update\ klasörlerini oluşturur ve servisi başlatıcıyı başlatacak şekilde kurar. Bunu yapamazsa servis eskisi gibi inscada.jar’ı başlatır ve kurulum logu güncelleme düğmesinin etkin olmadığını söyler; o zaman enable-updates.bat bunu yukarıdaki gibi yapar.
Kümeler
Section titled “Kümeler”Güncelleme kartı bir küme düğümünde sunulmaz: kümeyi güncellemek, güncellenen yedeğin eski lider durana kadar beklemesini gerektirir ve bunu tek bir düğümün düğmesi düzenleyemez. Küme elle, her seferinde bir düğüm, ama asla iki sürüm yan yana çalışmadan güncellenir:
-
İki düğüm aynı sürümde, küme tam ve liderin replikasyon kuyruğu boş.
-
Yedeği durdurun, onun kendi PostgreSQL’ini yedekleyin, jar’ını değiştirin. Başlatmayın.
-
Lideri durdurun. Saha burada durur.
-
Güncellenen düğümü tek başına başlatın. Kendiliğinden lider olur.
-
Çalıştığını görün: lider, sağlık ve bağlantılar ayakta. Değilse onu durdurun ve eski lideri değiştirmeden başlatın.
-
Eski lideri aynı şekilde güncelleyin (yedek, jar) ve başlatın; aynı sürümde yedek olarak katılır.
-
ve 3. adımlar arasında hiçbir yapılandırma değişikliği yapmayın. Geri dönüş aynı sırayı tersten izler.
Yükseltmeden önce
Section titled “Yükseltmeden önce”Her resmî sürüm sayfası bir Before you upgrade listesiyle başlar: o sürümdeki, bir şeyi kaldıran ya da bir kurulumun dayandığı bir cevabı değiştiren değişiklikler. Güncelle ve yeniden başlat’a basmadan ya da jar’ı değiştirmeden önce bu listeyi yalnızca en yeni sürüm için değil, sizinkiyle yenisi arasındaki her sürüm için okuyun. Her madde kimi ilgilendirdiğini ve ne yapılacağını söyler; çoğu hiçbir şey gerektirmez.
İlgili
Section titled “İlgili”- Sunucu Ayarları — güncelleme denetimi anahtarı, Şimdi yeniden başlat, imzalar
- Lisans — hangi sürümlerin kurulabileceğine karar veren bakım
- Yedekleme — bir güncellemenin aldığının yanında kurulum yedeği