VMware sanal makinelerinin açılış anında tarih/saat bilgilerini üzerinde çalıştıkları VMware hostlardan aldığını hepimiz biliyoruz, ortamdaki hostların saat/tarih bilgilerinin farklı olması üzerinde çalışan sanal makineleri de etkiler ve uygulama seviyesine kadar tutarsızlıklara sebebiyet verebilir. Aslında çok basit bir ayar olsa da etkilerinin bize yansıması önemli seviyede olabilir.
Burada Microsoft Active Directory olan bir ortam olduğu varsayıldığında sanal makine açıldıktan sonra tarih/saat bilgisini zaten güncelleneceği, bu durumda bu ayara ne gerek olacağını söyleyenler olabilir. Fakat DC’nin çalıştığı hostun üzerindeki saat/tarih bilgisinin hatalı olması durumunda domainde çalışan tüm sanal makinelerin saat/tarih bilgisini DC den çekeceği için bu durumdan domain ortamındaki tüm makineler etkilenecektir. Saat/Tarih bilgisini internetten güncelleyen işletim sistemleri içinde eğer saat/tarih güncellenene kadar açılan servis veya uygulamalar varsa yine kararsızlığa yol açabilecek bir durum ortaya çıkabilir.
Hal böyle iken bizim yapmamız gereken tüm hostların saat ve tarih bilgilerini eşlenik ve doğru tutmak. ** Güncelleme: Ülkemizde son iki timezone değişikliği dönemlerinde (seçim sebebiyle 1 hafta ertelenme ve yaz saati uygulamasının kaldırılması gibi) her ne kadar üreticilerin çıkardığı güncellemeler olsada sektörde yaşanan aksi durumlar aşikar. Öte yandan yukarıda bahsettiğim gibi bu ayarın sadece timezone değişikliklerinde değil, kararlı bir sistem için her durumda ayarlanmış olması gerekiyor.
Bu ayarları sadece bir host üzerinde manuel olarak yapıp ardından diğer hostlar üzerinde Host Profiles kullanarak eşlenik tutabiliriz, ama düşük seviyede lisans kullanan veya bu işi host profiles kullanmadan yapmak isteyen kullanıcılar için powercli ile nasıl kolaylıkla yapılabileceğini anlatmaya çalışacağım.
Öncelikle Powercli ile vCenter’a bağlanmamız gerekiyor. Kırmızı renkli alanları ortamınıza göre düzenleyin.
Connect–VIServer “vCenter IP Addresi veya Hostname”
FS Clusterı altındaki tüm hostlara tr.pool.ntp.org NTP adresini ekleyelim;
Get-Cluster “FS” | Get–VMHost | Add–VMHostNtpServer “tr.pool.ntp.org”
Enter’a bastığınızda girdiğiniz NTP adresi FS Clusterı altındaki kaç adet host varsa aynı sayıda tekrar ile powercli ekranına düşecek. Eğer bu şekilde ise işlem hatasız tamamlanmıştır.
Hostlarımıza NTP Server girişi yaptık fakat hem NTP Servisini çalıştırmadık, hem bu servisin otomatik olarak açılmasını sağlamadık ve firewall exception girmedik. Bu detayları da hızlıca hallediyoruz.
Firewall Exception giriyoruz;
Get-Cluster “FS” | Get–VMHost | Get-VMHostFirewallException | where {$_.Name -eq “NTP client”} | Set–VMHostFirewallException –Enabled:$true
NTP Client Servisini açıyoruz;
Get-Cluster “FS” | Get–VMHost | Get-VmHostService | Where–Object {$_.key -eq “ntpd”} | Start-VMHostService
NTP Client Servisinin host açılışında otomatik açılmasını sağlıyoruz.
Get-Cluster “FS” | Get–VMhost | Get-VmHostService | Where–Object {$_.key -eq “ntpd”} | Set-VMHostService -policy “automatic”
İşlemler bu kadardı, meraklıları için faydalı olabilecek bir kaç örnek satır daha;
esxi01.fatihsolen.local için NTP ayarlarını getirme;
esxi01.fatihsolen.local hostundan tr.pool.ntp.org adresini silme;
Remove–VMHostNtpServer -VMHost “esxi01.fatihsolen.local” –NtpServer ‘tr.pool.ntp.org’ -Confirm:$false
Tüm hostların isim, ntp server adresi, servis durumunu listelemek için;
Get-VMHost | Where { $_.PowerState –eq “PoweredOn”} |Sort Name|Select Name, @{N=”NTP Server”;E={$_ |Get-VMHostNtpServer}}, @{N=”Servis Calisiyor?”;E={(Get-VmHostService -VMHost $_ |Where-Object {$_.key-eq “ntpd”}).Running}} | Foreach-Object {
$_.PSTypeNames.Clear()
$_.PSTypeNames.Add(‘fatihsolen.com.VMHostNTPInfo’)
$_.PSTypeNames.Add(‘fatihsolen.com.VMHost’)
$_
}
İsterseniz yukarıdaki satırları bir text dosyasına yapıştırıp, .ps1 dosyası olarak kaydettikten sonra direkt olarak powercli üzerinden çalıştırabilirsiniz.
İyi çalışmalar.