Düğümün 3.2'ye yükseltilmesi
Bir düğüm standart vStack.update.sh betiğiyle yükseltilir. Betik dağıtımla birlikte
gelir ve düğümde /root/bin/ dizininde bulunur. Düğümler tek tek yükseltilir ve her
biri yükseltmeden sonra yeniden başlatılır.
Bu sayfa, 3.2.0'a geçen 3.0.x ve 3.1.x serisi düğümler için hazırlanmıştır. 2.x serisinden geçiş FreeBSD ana sürümünü değiştirir ve vStack teknik desteğiyle birlikte yapılır.
Tüm komutları düğümün kendisinde root olarak çalıştırın.
Pencereden önce
- Depo erişimi. Paketler, yalnızca izin listesindeki adresleri kabul eden vStack
deposundan alınır. Düğümlerin dışarı çıktığı adresleri teknik desteğe önceden
gönderin. Bu yapılmazsa betik
2koduyla çıkar. - Düğüm konsolu. Düğümün ağ üzerinden geri gelmemesi ihtimaline karşı IPMI veya BMC erişimine ihtiyacınız vardır.
- İş yükü düğümden kaldırılmıştır. VM'ler kapatılmış veya taşınmış, düğümün havuzları kümenin diğer düğümlerine devredilmiştir. Bunun nasıl yapılacağı "Havuz servislerinin taşınması" bölümünde açıklanmıştır. Kümedeki VM'ler havuzlarını tutmayan düğümlerde de çalışıyorsa prosedür "Uzaktan başlatılmış VM'leri olan bir düğümün boşaltılması" bölümünde açıklanmıştır.
- Tüm düğümlerde saat eşitlenmiştir.
ntpq -pkomutunu denetleyin: zaman kaynağına erişilebilir olmalıdır. - Düğüm yapılandırmasının yedeği alınmıştır. Prosedür "Düğüm yapılandırmasının yedeklenmesi" sayfasında açıklanmıştır. Yükseltme betiği de kendisi bir kopya alır, ancak bunu düğümün sistem diskinde tutar ve yeniden kurulumda kopya diskle birlikte kaybolur.
Küme dolaşım sırası
Düğümleri kesinlikle tek tek yükseltin. Önceki düğüm geri geldiğinde, küme tarafından kabul edildiğinde ve kümenin tüm havuzlarında resilver tamamlandığında bir sonraki düğüme geçin.
Resilver kendiliğinden başlar. Bir düğüm yeniden başlarken diğer düğümlerin havuzları
onun disklerini kaybeder ve düğüm geri geldiğinde ZFS bu disklerdeki değişiklikleri
yakalar. Bir sonraki düğümü daha erken yeniden başlatırsanız eşitlemesi henüz
tamamlanmamış bir havuz ikinci bir diski kaybeder. N+1 yedekliliğe sahip bir havuz
buna dayanamaz.
Havuz tutan her düğümde denetleyin:
zpool status | grep -E 'pool:|state:|scan:'
Tüm havuzlar state: ONLINE durumundaysa ve scan: satırı resilver in progress
içermiyorsa devam edebilirsiniz.
Dolaşım süresince geçerli iki kural daha:
- Dolaşım sürerken karışık sürümlere sahip bir küme normal bir çalışma durumudur.
- Yükseltilmiş bir düğümde çalışmış bir havuzu yükseltilmemiş bir düğüme geri döndürmeyin. Dolaşımı bitirene kadar havuzları yükseltilmiş düğümlerde tutun.
Ne dolaşım sırasında ne de sonrasında zpool upgrade çalıştırmayın. Yükseltme betiği
bunu son özette size hatırlatır.
Adım 1. Betiğin kendisini güncelleyin
Betik sürümle birlikte yayımlanır ve paketlerle aynı anahtarla imzalanır. Sürümü, yükseltme yaptığınız dağıtımdan alın.
fetch -o /root/bin/vStack.update.sh https://repo.vstack.com/os/3.2.0/update.sh
fetch -o /tmp/update.sh.sig https://repo.vstack.com/os/3.2.0/update.sh.sig
openssl dgst -sha256 \
-verify /usr/share/keys/vstack/vstackos.pub \
-signature /tmp/update.sh.sig /root/bin/vStack.update.sh
chmod 0755 /root/bin/vStack.update.sh
Denetim Verified OK yazdırmalıdır. Başka bir şey yazdırırsa yükseltmeye
başlamayın.
Adım 2. Deneme çalıştırması
Deneme çalıştırması düğümde hiçbir şeyi değiştirmez. Betik geçici bir depo
yapılandırması yazar ve pkg planını gösterir.
/root/bin/vStack.update.sh --controllers --base \
--source release --version 3.2.0 --dry-run
Depoya erişilebildiğinden ve planda beklenmeyen paket kaldırma işlemleri bulunmadığından emin olun.
Adım 3. Yükseltme
/root/bin/vStack.update.sh --controllers --base \
--source release --version 3.2.0
--controllers, temel sistem dışındaki düğüm paketlerini yükseltir.--base, temel sistemi ve çekirdeği yükseltir. Bundan sonra yeniden başlatma zorunludur.
Ardından yeniden başlatma gelecekse denetleyicileri yükseltmenin hemen ardından
yeniden başlatmanın bir anlamı yoktur. Bunu --no-restart seçeneğiyle devre dışı
bırakabilirsiniz. --reboot seçeneği, işlem tamamlandığında düğümü yeniden başlatır.
Seçeneklerin tam listesi başvuru bölümündedir.
İşlemden önce betik /var/backups/etc-<ts> dizinine bir yapılandırma kopyası alır:
/etc, /usr/local/etc ve boot alt dizininde /boot/loader.conf,
/boot/loader.conf.local ve /boot/device.hints dosyaları. vstack-env.conf ayrıca
kaydedilir. Yükseltmeden sonra betik kopyadan hesapları, ssh ayarlarını,
sysctl.conf, syslog.conf, hosts, ntp.conf, vstack-env.conf dosyalarını ve üç
önyükleme dosyasını, yani düğümün ince ayar profilini geri yükler. Kopyadaki diğer
dosyalar adlarıyla geri yüklenmez; gerekirse bunları elle karşılaştırın.
Adım 4. Yeniden başlatma öncesi denetimler
- Çıkış kodu 0'dır. Yeniden başlatmadan önce başka herhangi bir kodu inceleyin; kodların anlamı aşağıda verilmiştir.
rootkabuğu çalıştırılabilirdir. Aksi takdirde yeniden başlatmadan sonra sshd,rootkullanıcısının düğüme girmesine izin vermez.pw usershow root | awk -F: '{ print $NF }' # shell pathls -l $(pw usershow root | awk -F: '{ print $NF }')- Önyükleme koruması devrededir.
Özellikle dosyalara bakın. Günlüktekicat /boot/nextboot.conf # one-time boot of the new kernelcat /boot/loader.conf.d/zz-vstack-fallback.conf # default boot for the duration of the window: the previous kernel
boot summarysatırı çekirdek adlarını fazladan bir_prevsonekiyle yazdırır ve yanıltıcıdır. Gerçekte yeni çekirdek bir kez önyüklenir, geri alma ise öncekine yapılır. - Çalıştırma özeti.
versions-before-*.txtveversions-after-*.txtdosyalarının yanında,/var/backups/update-summary-<ts>.txtiçinde saklanır. Tam günlük/var/log/vstack-os-update-<ts>.logdosyasına yazılır.
Önyükleyici yalnızca bir sistem diskinde güncellenir
Betik yeni loader.efi dosyasını, düğümün o anda önyüklendiği EFI bölümüne kopyalar.
İkinci sistem diskinin EFI bölümü eski önyükleyiciyi korur. Yükseltmeden sonra donanım
yazılımı düğümü ikinci diskten önyüklerse yeni çekirdek eski önyükleyici tarafından
yüklenir.
Bu nedenle pencere süresince donanım yazılımındaki önyükleme sırasını değiştirmeyin ve bir sistem diskini değiştirirken bunu göz önünde bulundurun.
Adım 5. Yeniden başlatma ve kabul
reboot
Yeni çekirdek önyüklenemezse bir sonraki yeniden başlatma düğümü önceki çekirdekle ayağa kaldırır. Önyükleyici isteminde takılan bir düğüm kendiliğinden yeniden başlamaz: onu IPMI veya BMC konsolundan sıfırlayın.
Düğüm ayağa kalktıktan sonra:
uname -r # base of the target line
cat /etc/os-release # VERSION_ID = 3.2.0
pkg query '%n %v' | grep -i vstack
pkg check -d -a # dependencies are consistent
ls /boot/nextboot.conf /boot/loader.conf.d/zz-vstack-fallback.conf 2>&1
Son komut, dosyaların mevcut olmadığını bildirmelidir. Başarılı bir önyüklemeden sonra düğüm, tek seferlik önyüklemeyi ve geçici geri almayı kendisi kaldırır. Dosyalar kalırsa düğüm hedef çekirdekle ayağa kalkmamıştır. İş yükünü geri döndürmeden önce nedenini bulun.
Ardından düğüm servislerini (service <name> status) ve düğümün kümedeki durumunu
denetleyin, tüm havuzlarda resilver'ın bitmesini bekleyin ve iş yükünü geri döndürün.
Havuzlar geri gelen düğüme kendiliğinden dönmez; onları elle taşıyın.
Havuz servislerinin taşınması
Pencere süresince havuzları iki kez taşımanız gerekir: çalışmadan önce havuzları düğümden kaldırmak ve sonrasında geri döndürmek için.
Olağan yol, vStack Center arayüzünün "Küme servisleri" bölümüdür.
İstisna, yönetim VM'sinin (vStack Center) çalıştığı havuzdur. Bu havuz arayüzden taşınamaz. Taşıma, havuzun VM'lerinin askıya alınmasıyla başlar ve yönetim VM'sinin kendisi de bunların arasındadır: Center işlemin ortasında kendini kapatır ve taşıma yarıda kesilir. Böyle bir havuz, bir düğümde küme yardımcı programıyla taşınır.
Yönetim VM'si genellikle kümenin ilk havuzu olan z01 üzerinde bulunur. Bunu 0
numaralı VM'den denetleyebilirsiniz:
vstack-vm vm list
Küme yardımcı programıyla taşıma
Bu yöntem, yönetim VM'sinin bulunduğu havuz ve Center'sız kümeler için gereklidir. Komutlar kümenin herhangi bir düğümünden çalıştırılır.
Kümede bir havuz zpool_<pool name> servisiyle temsil edilir: z01 havuzu
zpool_z01 servisine karşılık gelir. Komutlar havuz adını değil, servis adını alır.
Servis adlarını ve düğüm numaralarını vstack-cluster status gösterir:
vstack-cluster status
Node ID: 1; name: q100u001.example.com; state: ONLINE; [ enabled]
Service name: cluster-management; state: STARTED; [ enabled]
Service name: zpool_z01; state: STARTED; [ enabled]
Node ID: 2; name: q100u002.example.com; state: ONLINE; [ enabled]
Service name: zpool_z02; state: STARTED; [ enabled]
...
z01 havuzunu 2. düğüme taşıma:
vstack-cluster service move -s zpool_z01 --dst-id=2
Hedef düğüm ONLINE ve açık (enabled) olmalıdır. Komut
başvuru bölümünde ayrıntılı olarak
açıklanmıştır.
Havuz taşınırken havuzun VM'leri kapatılır ve birimlerinin sunulması kesintiye uğrar. Bu kesintisiz bir işlem değil, bir bakım penceresidir.
Uzaktan başlatılmış VM'leri olan bir düğümün boşaltılması
Bir VM, havuzunun sahibi olmayan bir düğümde çalışabilir: bu durumda diskleri
NVMe-oF/TCP üzerinden iletilir. vstack-vm vm list çıktısında bu tür VM'ler
remote sözcüğüyle işaretlenir. Yükseltmeden önce düğüm, kendi havuzlarının
VM'lerinden ve üzerinde diğer düğümlerin havuzlarındaki disklerle çalışan VM'lerden
boşaltılır.
VM'leri vStack Center üzerinden durdurun ve başlatın.
-
Düğümün havuzlarını taşıyın, "Havuz servislerinin taşınması" bölümünde açıklandığı gibi. Bu havuzların diğer düğümlerde çalışan VM'lerini taşımadan önce durdurun ve taşımadan sonra yeniden başlatın. Bunları kümenin herhangi bir düğümünde bulabilirsiniz:
vstack-vm vm list | grep -w remote | grep -w <pool> -
Kalan VM'leri düğümden taşıyın. Bunları düğümün kendisinde bulun:
vstack-vm vm list | grep -w remoteHer birini durdurun ve farklı bir düğüm seçerek "Start on node" eylemiyle başlatın. Ardından düğümde hiç VM kalmadığından emin olun:
ls /dev/vmmNo such file or directoryyanıtı, düğümde VM olmadığı anlamına gelir. -
Düğümü VM yerleşimine kapatın ve durumunun
DISABLEDolduğunu denetleyin:vstack-cluster node disable --id=<N>vstack-cluster node statusDüğümde
vstack-clusteryardımcı programı yoksa aynı işlemlerccrd_cli --node --node_id <N> --command disableveccrd_cli --node --command statusile yapılır.Düğümü kapattıktan sonra
ls /dev/vmmkomutunu yeniden çalıştırın. Düğümde VM'ler belirdiyse 2. adımdaki gibi bunları taşıyın.uyarıÇalışma sırasında kapatılmış düğümde VM başlatmayın veya oraya VM taşımayın. Aynı anda birden fazla düğümü kapalı tutmayın.
-
Düğümü bu sayfadaki 1–5. adımları izleyerek yükseltin.
-
Kabulden sonra düğümü açın:
vstack-cluster node enable --id=<N>vstack-clusteryardımcı programı olmadan:ccrd_cli --node --node_id <N> --command enable. Ardından gerekirse havuzları geri döndürün. VM'ler düğüme kendiliğinden dönmez.
Çıkış kodları
| Kod | Anlamı |
|---|---|
| 0 | yükseltme tamamlandı |
| 1 | bağımsız değişkenlerde hata |
| 2 | kaynak veya sürüm kullanılamıyor, imzalama anahtarı alınamadı ya da --allow-major-upgrade olmadan ana sürümler arasında geçiş istendi |
| 3 | bir pkg hatası veya yeni çekirdek denetimi hatası |
| 4 | yapılandırma (/etc, /usr/local/etc, önyükleme dosyaları) kaydedilemedi veya geri yüklenemedi |
| 5 | kurulu bir servis yeniden başlamadı |
| 6 | yükseltme tamamlandı, ancak root kabuğu çalıştırılabilir değil. Yeniden başlatmadan önce düzeltin |
| 7 | yükseltme tamamlandı, ancak /boot yazımı doğrulanmadı. İncelenene kadar yeniden başlatmayın |
6 ve 7 kodlarında betik --reboot seçeneğini bilerek yok sayar.
Geri alma
Betik paketleri geri almaz. Şu yollarla geri dönebilirsiniz:
- Önyükleme. Önceki çekirdek düğümde kalır ve yükseltme penceresi başarılı bir önyüklemeyle kapanana kadar önyükleyici menüsünden kullanılabilir.
- Yapılandırma. Kopya
/var/backups/etc-<ts>içinde saklanır; en son beş kopya tutulur. - Tüm sistem. Hedef sürümün ortamından yeniden kurun veya çalışmadan önce alınmış bir düğüm yedeğinden geri yükleyin.
Betik havuz verilerini, VM disklerini veya 3. adımda listelenenlerin dışındaki yapılandırmayı kaydetmez. Pencereden önce bunların kopyasını kendiniz alın; bkz. "Düğüm yapılandırmasının yedeklenmesi".