Salı, Ağustos 24, 2010

Exchange 2007 cluster problemi

Her şey sıradan bir bakım operasyonuyla başladı. 3 node kullanan Exchange 2007 CCR kümesinin sunucularını bakım işlemleri nedeniyle sırayla kapatıp açıyordum. Görünürde bir sorun yoktu. Ancak işlem dizisi tamamlanıp da cluster manager'dan durumu incelediğimde grouplardan birinin kaybolduğunu gördüm.


Önce panik duygusu kontrolü ele almadan sırayla tekrar sunucuları kapatıp açtım. Ancak işe yaramadı. 1 saat kadar süren kontroller sonrasında cluster'ı kaybettiğime karar verdim ve logları tekrar incelemeye başladım. Sırayla aşağıdaki hatalar oluşmuştu.

Event ID : 1136 Cluster node EX01 failed a critical operation. It will be removed from the active server cluster membership. Check that the node is functioning properly and that it can communicate with the other active server cluster nodes.

Event ID : 1123 The node lost communication with cluster node 'EXC01' on network 'Public'.

Event ID : 1135 Cluster node EXC01 was removed from the active server cluster membership. Cluster service may have been stopped on the node, the node may have failed, or the node may have lost communication with the other active server cluster nodes.

Event ID : 1069 Cluster resource 'First Storage Group/ Mailbox Store (Excls01)' in Resource Group 'Excls01' failed.

Event ID : 1000 Cluster service suffered an unexpected fatal error at line 565 of source module d:\nt\base\cluster\service\gum\receive.c. The error code was 5013.

Event ID : 1118 Cluster service was terminated as requested by Node 2.

Çözüm ise çok ilginç (en azından bana öyle geldi)

Her cluster group için aşağıda göreceğiniz "Contains" anahtarı içinde "Resources" bilgileri tutuluyor.








Bu bilgiler aynı zamanda aşağıdaki alanda da tutuluyor. Aşağıda gördüğünüz hex hivelerin hepsinin içi dolu. Ancak sizin yalnızca hive adlarına ihtiyacınız var.


















Yukarıdaki hive başlıklarını aşağıdaki alana kopyalayıp ardından sunucuyu yeniden başlattığınızda cluster servisi geri dönüyor.












Bu bilgiyi gece yarısı bir vakitte gelen ilham sayesinde keşfederek bizimle paylaşan Cemal Dur'a teşekkürler :)

Salı, Haziran 08, 2010

Windows 2008 R2 server üzerine Exchange 2007 yönetim konsolu yüklenmesi

Windows 2008 R2 sunucu işletim sistemi üzerine Exchange Server 2007 yönetim konsolunu yüklemeyi deneyen olduysa sinir bozucu 


"Failed to initialize the log file: Access to the path :ExchangeSetupLogs\ExchangeSetup.log' is denied.
Setup will not continue."

hatasıyla karşılaşmıştır mutlaka. Bu hatadan kurtulmak için sunucuda UAC denetimini kapatmanız yeterli oluyor.

BackupExec 2010 : An internal error (1627652097) occurred in object -1

Windows 2008 R2 işletim sistemi üzerine Backup Exec 2010 kurma maceram devam ediyor. Bu sefer de başka bir sorunla karşılaştım. Biraz mide ağrısına neden olduktan sonra bir çözüm bulabildim. Aşağıda paylaşıyorum.


Durum
- Yeni kurulmuş Windows 2008 R2 Std sunucu üzerine, Backup Exec 2010 kurulumu yaptım. Veritabanı olarak SQL 2005 SP3 kullandım. Sistem tüm servisleri normal olarak açtı.


- How to move Backup Exec from one system to another with the same or different computer names (http://seer.entsupport.symantec.com/docs/319367.htm) makalesini uygulayarak daha önceden yedeğini aldığim BE veritabanını SQL servislerini kapattıktan sonra sunucuya kopyaladım.


- BE servisleri aşağıdaki hatayı vererek açılmayı reddetti. "The Backup Exec Server Service did not start.  An internal error (1627652097) occurred in object -1. "


Çözüm
- Sunucuda işlem yapmadan önce temiz kurulan BE'nin SQL veritabanı klasörünün kopyasını almıştım. Bu klasörü tekrar orijinal yerine kopyalayarak servisleri yeniden başlattım.


- BEutility'i kullanarak "Copy Database" seçeneği ile istediğim veritabanını orijinalin üzerine kopyaladım.


- Bu sefer servisler normal olarak açıldı.


- Ardından da katalog dosyalarını kopyalayarak işlemi tamamladım.

Backup Exec 2010 ve Windows 2008 R2 (An internal error (137) occurred in object -1. (Event ID 57802))

Backup Exec 2010'ün bir Windows 2008 R2 işletim sistemi olan sunucuya yüklenmesinin ardından aşağıdaki gibi hatalar almaya başladım.


Event ID : 57802
The Backup Exec Server Service did not start.   An internal error (137) occurred in object -1. (Event ID 57802)


Servis bağımlılıklarına dair herhangi bir sorun yaşamıyordum, sunucunun kurulumu sırasında her şey normal ilerlemişti ancak hala bu hata mesajını alıyordum.


%100 bir çözüm olmamakla birlikte bu durumu aşmanın yolu şöyle. Sunucuda BE2010 ve SQL 2008'e dair tüm kurulum dosyalarını kaldırıp, Registry'de de gerekli temizliği yaptıktan sonra SQL 2005 kurulursa BE normal olarak çalışmaya başlıyor.

Windows 2008 R2 Server üzerine SQL 2005 yüklemek

Windows 2008 R2 işletim sistemi üzerine SQL Server 2005 yükleyebilmek ve ön gereksinimlerin kontrolü sırasındaki bazı uyarılardan kaçınabilmek için aşağıdaki makaleyi takip etmek ve IIS'i buna göre yapılandırmak gerekiyor. Ekranda görünmeyen IIS6 ile ilgili tüm seçenekleri de seçmek gerekli.

http://support.microsoft.com/?scid=kb;en-us;920201&x=5&y=16

Çarşamba, Şubat 17, 2010

pid file /opt/csw/apache2/var/run/httpd.pid overwritten -- Unclean shutdown of previous Apache run



Gecenin bir vakti insan Apache sürümleri, MPM worker , CSW ve SunFreeware repositoryleri gibi derin konularla uğraşınca ve de yorulmuşsa bazen okuyanı güldürecek derecede basit sorunların peşinde helak oluyor. 


"Ockham'ın usturası" önermesi de birazdan anlatacağım bu duruma çok uygun düşüyor sanırım.


Ockham'ın usturası : 


Latincesi "Entia non sunt multiplicanda praeter necessitatem" olarak geçen ; "bir meselenin birden çok açıklaması varsa, ve hepsi de aynı derecede kuvvetli ise, yani bir açıklamayı diğerlerinden üstün tutmak için elle tutulur bir neden yok ise, basit açıklamanın daha faydalı olacağı görüşü"dür.


Neyse, daha fazla saptırmadan konumuza dönelim.


Daha önce Sunfreeware'den alınma Apache 2.2.x paketlerini kullanırken, MPM worker sorunu nedeniyle artık mpm olarak derlenmiş olan ve CSW tabanlı Apache paketini kullanmaya başladık. Ancak daha öncesinde de "Limiting Service Privileges in the Solaris™ 10 Operating System" belgesine dayanarak Apache SMF servisini de 'webservd' hesabı altında kısıtlamış ve çalışır hale getirmiştik.


Ne olduysa zaten bu noktada oldu. Komik ve de gerçek.


Apache servisi normalde 'webservd' hesabı altında açılmalı ve 2-3 prosesten fazlası olmamalıydı. Ancak root, nobody ve webservd olarak 3 farklı hesap altında farklı prosesler görüyorduk. root ile açılan proses 1 no'lu idi ve öldüremiyorduk. Diğer yandan da aşağıdaki hata mesajını almaktaydık.


"pid file /opt/csw/apache2/var/run/httpd.pid overwritten Unclean shutdown of previous Apache run"


Neler düşünmedik ki ? PID dosyasının sahipliğini normal kipte değiştirmeyi, single user mode'da değiştirmeyi , /etc/init altında içinde httpd geçen dosyaları aratmayı vs.vs. o an uykulu kafayla akla gelebilecek envai çeşit (cahil) yöntem denendi ama hiç biri işe yaramadı.


Sonuçta ne mi çıktı ? En basit önerme tabi. CSW paketi hiç de tahmin etmediğimiz şekilde kendi SMF servisini yazmış ve çalıştırmıştı. Ayrıca biz de Apache servisi için SMF yazmış ve çalıştırmıştık. Bizimkini öldürüken aynı zamanda başka bir servisle yarışmaya çalışıyorduk. :) Servislerden birini silince sorun kendiliğinden düzeldi. Artık httpd proseslerini istediğimiz gibi kapatabiliyorduk.

Perşembe, Şubat 11, 2010

NTP zaman ayarı ve Solaris 10

Solaris sunucularınızın harici bir NTP zaman sunucusundan bilgi alması ve saat yönetimi yapmasını istiyorsanız aşağıdaki adımları uygulayabilirsiniz.

1- SUNWntpr ve SUNWntpu paketleri sunucuya yüklenmelidir.
2- /etc/inet/ntp.client dosyası /etc/inet/ntp.conf olarak kopyalanır.
3- ntp.conf dosyası içine aşağıdaki satırlar eklenir.

server 0.europe.pool.ntp.org
server 1.europe.pool.ntp.orgserver 2.europe.pool.ntp.org


4- svcadm enable ntp komutu ile NTP servisi aktif hale getirilir.
5- ntpq -p komutu ile sunucunun saatinin durumu ve eşleme farkları izlenebilir.

Salı, Şubat 09, 2010

SecureCRT ve şifresiz SSH login (1)

Çok sayıda UNIX sunucusuyla ilgilenmeye başlayınca ortaya farklı sunuculara anlık yapılması gereken bağlantıların ne kadar sıkıcı olabileceği , her seferinde şifre girmenin prensipli duruşun gereği olsa bile tahammül sınırlarını zorlayabileceği gerçeği çıktı. Bu durumda, yine güvenlikten ödün vermeden login işlemlerini kolaylaştırmanın yolunu bulmak için SSH sertifikası yöntemini kullanmaya karar verdim. Aşağıda bu işlemin adımları yer alıyor.

1- Public Key oluşturulması

SecureCRT yazılımında public key oluşturmak için aşağıdaki adımları takip ettim.


















Passphrase alanına bir anahtar kelime girilmesi gerekiyor. Ne kadar uzun ve karmaşık, o kadar iyi :)













1024 bit'lik anahtar oluşturuyorum.



















Anahtar oluşturulduğunda kayıt etmesi için bir klasör soracaktır. Ben Linux ve Solaris anahtarlarını ayırmak için ayrı klasörler kullanıyorum. Identitiy ve Identitiy.pub dosyaları otomatik olarak seçtiğiniz klasöre yerleştirilecektir.

2- Private Key'in kullanılması

SecureCRT içinde private key'in kullanılabilmesi için iki yöntem bulunuyor. İlk olarak tüm sunucularda kullanılmak üzere Global Options içinde bu anahtarı gösterebilirsiniz. Linux ve Solaris anahtarlarım farklı olduğu için bu yöntem bende işe yaramadı. Diğer yöntem olarak her sunucu için sunucu seçenekleri içinde anahtar belirtebilirsiniz.













Yukarıdaki resimde görülen kimlik doğrulama sıralamasını değiştirmeniz gerekiyor. Public Key ile çalışabilmek için ben "password" ve "public key"in öncelik sıralamasını değiştirdim.













3- UNIX sunucusunda yapılması gereken işlemler.

  • Öncelikle (~) home folder altında .ssh klasörünü açmalısınız.
  • SecureCRT'nin oluşturduğu identitiy.pub dosyasını UNIX sunucunuza kopyalayınız.
  • touch ~/.ssh/authorized_keys dosyasını oluşturunuz.
  • cat identitiy.pub>>~username/.ssh/authorized_keys ile oluşturduğunuz anahtarı genel anahtar dosyanıza kayıt ediniz. Burada yönlendirmenin sonuna yaz (append) '>>' şeklinde yapılmasının sebebi, farklı sunuculardan gelecek farklı public key'lerin aynı dosyada toplanabilmesini sağlamaktır. Birazdan okuyacağınız gibi iki UNIX host arasında da anahtar değiş tokuşu ile SSH login sağlamak mümkün olacaktır.
Bu noktada kişisel bilgisayarınızdaki SecureCRT üzerinden tekil olarak veya toptan "global options" kullanarak ayarladığınız UNIX sunucularına şifresiz SSH login yapabilecek durumdasınız.

Pazartesi, Şubat 01, 2010

Link : TMG (ISA Server) donanım tavsiyeleri

TMG sürümünde kullanılması tavsiye edilen donanımlara dair uzun ve oldukça açıklayıcı bilgiler içeren bir makale dizisi.

Link : TMG (ISA Server) Best Practices Analyzer

TMG için BPA yayınlandı. ISA Team blog sayfasındaki duyuru aşağıda yer alıyor.



Windows NTFS disk checking işlemini iptal etmek

Bir Sun X4250 sunucuya Windows 2003 yükleyip bir takım işlemler yaptıktan sonra disklerden birinde "disk checking" başlatmak zorunda kaldım. Daha sonra bu işlemden vazgeçmek istedim çünkü uzun sürecekti ama sunucunun yalnızca USB klavye ve fare girişi olduğu için, disk kontrolü başladığında iptal edemiyordum.


Benzer durumlarda Registry'den disk kontrolünü iptal etmek için aşağıdaki anahtarı değiştirmeniz yeterli olacaktır.


My Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\SessionManager\BootExecute


kaydındaki " autocheck autochk * " dışındaki tüm bilgileri silerek disk kontrolünün başlamasını engelleyebilirsiniz.

Pazar, Ocak 31, 2010

Link : Top 20 Most Valued Backup Exec Articles


Symantec tarafından çeşitli değerlendirmeler sonucunda en fazla rağbet gören ve yararlı olduğu kullanıcılar tarafından en çok onaylanan 20 Backup Exec makalesi.

https://www-secure.symantec.com/connect/node/1123091

Cuma, Ocak 29, 2010

Link : My 10 UNIX Command Line Mistakes

Bir UNIX yöneticisinin gerçek hayat deneyimleri. Eğlenceli bir yazı. Dikkate alınacak çok fazla kısmı da var kesinlikle.


http://www.cyberciti.biz/tips/my-10-unix-command-line-mistakes.html



Jboss SMF hizmet delegasyonu (delegation) ve RBAC (1.kısım)

Solaris 10 üzerinde çalışan Jboss hizmetinin yönetimini (kapatmak, açmak ve askıya almak) root dışında başka bir kullanıcıya verme ihtiyacı bir süredir üzerinde konuştuğumuz bir konuydu. İlk etapta hizmeti SMF biçimine dönüştürmüştük. Şimdi de bu SMF metodunun yönetimini başkalarına delege etmek gerekiyordu.


Bu konuda ne yazık ki çok fazla kaynak yok. Sun'ın bir kaç belgesi ve bir kaç blog yazısı dışında bir şeye rastlayamadım. Ancak olanları derleyerek aşağıdaki yönteme ulaştım. Bu yöntemin çalışabilmesi için hizmetin SMF'e dönüştürülmüş olması, network/jboss olarak kayıt edilmiş olması ve hizmeti devredecek 'jboss ' adında bir hesap açmış olmanız gerekiyor.



# vi /etc/security/auth_attr
                  dosya içinde en son satıra eklenir > solaris.smf.manage.network/jboss:::Jboss servisi


# usermod -A solaris.smf.manage.network/jboss jboss
# svcprop -p general network/jboss
# svccfg -s network/jboss setprop general/action_authorization=astring: solaris.smf.manage.network/jboss
# svcadm refresh network/jboss
# svcprop -p general network/jboss


Buraya kadar olan kısımı uyguladığınızda servisi yeniden başlatma yetkisini kullanıcıyı devretmiş oldunuz. Bundan sonrasını uyguladığınızda ise servisi enable / disable etme yetkisini de devrediyorsunuz.


# svccfg -s network/jboss setprop general/value_authorization=astring: solaris.smf.manage.network/jboss

Bu yöntemi uyguladığınızda RBAC metoduna girmeden yalnızca tek bir kişi ve hizmet için delegasyonu sağlayabiliyorsunuz. Aynı işin RBAC ile nasıl yapılacağını bir sonraki yazımda anlatacağım. Bitirmeden önce bu konuda fayda sağlayacak bir iki kaynak adresi de ekte vermek istiyorum.

Restricting Service Administration in the Solaris™ 10 Operating System

Salı, Ocak 26, 2010

64bit Windows 2003, SQL 2005 ve MSXML6.0 problemi

64bit Windows 2003 server üzerine SQL 2005 yüklemek isterken MSXML 6.0 ile ilgili probleme rastlamış olabilirsiniz. Ben de karşılaştım ve deneyimledim :) 


Çözüm aşağıdaki makalede.


error 3 : bad or corrupt data while decompressing file

Solaris 10 U7 bir sunucumuzda yüksek oranda hesaplamaya dayanan tomcat ve mysql tabanlı bir uygulamamız vardı. Bu uygulama için kurulan yeni sunucuda JVM ayarlarıyla ilgili yapılan bir hata nedeniyle core dump oluşmaya başladı ve süratle sunucunun diskini doldurdu.


Kapatıp açtıktan sonra , açılış sırasında aşağıdaki nahoş hatayı almaya başladık ve işletim sistemini yükleyemez hale geldik.


error 3 : bad or corrupt data while decompressing file


Yaptığım kısa bir araştırmadan sonra bunu çözmenin basit bir yolu olduğunu öğrendim. Aşağıda paylaşıyorum.


Sunucu failsafe modda açıldıktan sonra aşağıdaki komutlar çalıştırılır.


sh> rm -f /a/platform/i86pc/boot_archive
sh> bootadm update-archive -R /a
sh> reboot


Salı, Ocak 19, 2010

Tomcat 6 SMF servisi oluşturma (Solaris 10)


Tomcat 6.0'ı Solaris 10 üzerinde SMF servisi olarak çalıştırmak için hazırda bir kaynak bulamadım. Yaptığım araştırmalarda da net olarak bir XML dosyası elde edemedim. Dolayısıyla iş başa düştü. Sırayla tüm adımları aşağıda gönderiyorum.

1- Java 1.6 yüklenir ( /opt/jdk1.6)
2- Tomcat 6.0 yüklenir (/opt/apache-tomcat6)
3- Tomcat XML oluşturulur ve /var/svc/manifest/network altına tomcat.xml olarak kopyalanır.
4- /opt/apache-tomcat6/bin altındaki tüm çalıştırılabilir dosyalara +x (execute) hakkı verilir.
5- tomcat için bir kullanıcı hesabı ve grup oluşturulur.
6- /opt/apache-tomcat6/log klasörünün sahipliği tomcat:tomcat grubuna verilir.
7- svccfg import /var/svc/manifest/network/tomcat.xml ile servis hazırlanır.
8- Java, /usr/bin'den farklı bir yere yüklenmiş olduğu için sembolik link oluşturulur.

ln -s /opt/jdk1.6/java /usr/bin/java

9- /opt/apache-tomcat6/bin/startup.sh içine JAVA_HOME=/opt/jdk1.6 eklenir.

Aşağıda bir Jboss XML'den devşirerek oluşturduğum XML dosyasını bulabilirsiniz (Neden metin olarak yüklemediğimi sorarsanız, Blogger koda kızdığı ve ben de bunu nasıl aşacağımı bilmediğim için böyle yaptım. Tekrar yazmak zorunda kalacaklar kızabilirler ama malesef böyle.. :) )





Çarşamba, Ocak 13, 2010

BackupExec 12.5, Windows 2008 ve file system caching


BackupExec 12.5 kullandığımızdan bu yana en büyük sorunlarımızdan biri, BE sunucusunda 64 bit Windows 2008 kullanmamıza rağmen yüksek File Caching Service bellek tüketimiydi. Bu tüketim çoğunlukla öyle noktalara çıkıyordu ki, uygulamanın performansını etkilemesi bir yana, 0 byte serbest bellek nedeniyle korkunç miktarda sayfalama hatalarıyla (paging) sunucunun performansını bile düşürmekteydi.

Bir süre agentlarla ilgili testler vs. yaptık ancak sonuçta farkettik ki, konunun agentlarla ilgisi yoktu. Windows 2008 64bit işletim sisteminde file caching'i kontrol altına alabilmek için başka bir yöntem bulmak zorundaydık.

Bir süre araştırdıktan sonra aşağıdaki MSDN blogunu ve uygulamayı bulduk.


Bu uygulamayı Windows 2008'e servis olarak kayıt ettirdikten sonra caching hizmetinin tükettiği belleğin kontrol altına girdiğini gördük. Parametrelerle oynayarak caching'in azami ne kadar bellek tüketeceğini sınırlamak mümkün. Ancak bellek talep eden uygulama olmadığı takdirde dinamik bellek yönetimi belleği caching'e bırakıyor. Şimdilik gözlemlerim bu yönde.

Uygulamayı kullandığımızdan bu yana yedekleme sisteminin performansında azımsanmayacak iyileşmeler gördük. Gerçi daha çok iyileşmeye ihtiyacı var ancak bir sorunu daha halletmiş olmaktan memnunuz.

Pazartesi, Aralık 14, 2009

Solaris 10'da disk kotasını etkin hale getirmek

Kota uygulamasını UFS dosya sistemlerinde etkin hale getirmek oldukça kolay. Bİr kaç komutla çalıştırılabiliyor. Aşağıda örnek bir uygulama göstermek istiyorum.

- kota uygulanacak her dosya sistemininin kökünde 'quotas' dosyası yaratılır.

# touch /app/quotas /quotas

- dosyanın yetkileri root hesabıyla düzenlenir.

# chmod 600 /app/quotas /quotas

- kota uygulanacak tüm dosya sistemleri için /etc/vfstab dosyasında 'options' alanına 'rq' kaydı eklenir. Bu işlem sonrasında sunucunun yeniden başlatılması gerekmemektedir.

# vi /etc/vfstab

- Kota etkin hale getirilir.

# quotaon -va

- Hangi kullanıcı için kota belirlenecekse , bu kullanıcı için ilgili komut çalıştırılır.

# edquota test01

- Eğer birden fazla kullanıcı için kota uygulanacaksa, bir kullanıcı hesabı şablon olarak seçilebilir. Aşağıdaki komuttaki ilk kullanıcı şablona esas alınacak kullanıcıdır.

# edquota -p test01 test02 test03


Cuma, Kasım 20, 2009

NFS automount problemi Solaris 10

Sol10 makinelerinde kullandığımız nfs disk bölümlerini /etc/vfstab içine yazmama rağmen bir türlü automount olmadığını görünce biraz araştırma yaptım ve aşağıdaki yazışmayı buldum.

İlginç bir bilgi olduğunu düşünerek yayınlıyorum.


Özetle, nfs disk bölmesinin otomatik yüklenmesi için nfs SMF servisinin online durumda olması gerekiyor. Bendeki durumu kontrol ettiğimde gerçekten de disable durumda olduğunu gördüm. :)

Link : Solaris 10 yama yönetiimi

Solaris'de yama yönetimi konusunda en iyi uygulamaları gösteren bir web hizmeti .

Defunct process'leri öldürmek

Orphaned (defunct) process'leri öldürmek için güzel bir yöntem.

/usr/bin/preap $(ps -ef | grep defunct | awk '{ print $2 }' | xargs)

Çarşamba, Kasım 18, 2009

Güvenli Apache kurulumu (1) : Not

Kurulum adımları doğru takip edilmesine rağmen httpd servisi hala "daemon" hesabıyla çalışıyorsa edindiğim deneyimlere göre, /usr/local/apache2/logs altındaki bir dosyanın sahipliği webservd hesabına geçmemiş olabilir.

Farklı zamanlarda yaptığım iki kurulumda aynı sorun ve dosyayı gördüm. Her ikisinde de httpd.pid dosyasının sahibi hala root:root idi. Dosyanın sahibini webservd olarak değiştirerek servisi yeniden başlatınca, Apache servisi olması gerektiği gibi "webservd" hesabı altında çalıştı.


Cuma, Kasım 13, 2009

Güvenli Apache kurulumu (1)

Solaris 10 sunucularımızda Apache 2.2.x sürümlerini çalıştırmak için hazırlık yapıyoruz. Elbette güvenli kurulumun üzerinde yine aynı şekilde güvenli modda çalışan uygulamalar istediğimiz için Apache web server'ın da güvenli kurulumuna dair araştırmalar yapmaya başladık.

Bu ilk kısımda Sun'ın bu konuda yayınlanmış belgelerini referans alarak Apache'nin kısıtlı yetkilerle kontrollü çalıştırılmasına dair bulduklarımı özetlemeye çalışacağım.

Apache'nin SMF servisi olarak nasıl çalıştırılacağını daha önceki bir yazımda açıklamıştım.

Apache SMF dönüşüm

SMF servisi olarak başlattıktan sonra servisin deamon veya root gibi kullanıcı hesapları yerine, kısıtlı yetkilere sahip webservd hesabıyla çalıştırılabilmesi için aşağıdaki komutların takip edilmesi yeterlidir.

# svccfg -s apache2
svc:/network/http:apache2> setprop start/user = astring: webservd
svc:/network/http:apache2> setprop start/group = astring: webservd

Apache servisinin minimum yetki seviyesinde çalıştırılması için gereken ayarlamalar yapılıyor.

svc:/network/http:apache2> setprop start/privileges = astring: basic,!proc_session,!proc_info,!file_link_any,net_privaddr
svc:/network/http:apache2> setprop start/limit_privileges = astring: :default
svc:/network/http:apache2> setprop start/use_profile = boolean: false
svc:/network/http:apache2> setprop start/supp_groups = astring: :default
svc:/network/http:apache2> setprop start/working_directory = astring:
:default
svc:/network/http:apache2> setprop start/project = astring: :default
svc:/network/http:apache2> setprop start/resource_pool = astring: :default
svc:/network/http:apache2> end

Bu noktada servisi yeniden enable etmek gerekiyor.

# svcadm -v enable -s apache2
svc:/network/http:apache2 enabled.

Eğer servis daha önceden çalıştırılmışsa /usr/local/apache2 dizininin sahipliği bin:bin olarak düzenlenmiştir. Bu durumda webservd hesabı log dosyalarını okuyamayacağı için aşağıdaki hata mesajını alabilirsiniz.

# cat /var/svc/log/application-web-apache2:default.log

[ Nov 13 14:46:31 Executing start method ("/usr/local/apache2/bin/apachectl start") ]
(13)Permission denied: httpd: could not open error log file /usr/local/apache2/logs/error_log.

Bu durumda klasör sahipliğini webservd hesap ve grubuna devretmek gerekiyor.

# chown -R webservd:webservd /usr/local/apache2/

Daha sonra sunucuyu yeniden başlattığınızda httpd servisinin yalnızda bu kullanıcı hesabıyla çalıştığını kontrol etmelisiniz.

# ps -ef|grep http|grep -v grep

webservd 714 459 0 15:12:56 ? 0:00 /usr/local/apache2/bin/httpd -k start

# ppriv -S 714

714: /usr/local/apache2/bin/httpd -k start

flags =

E: net_privaddr,proc_exec,proc_fork

I: net_privaddr,proc_exec,proc_fork

P: net_privaddr,proc_exec,proc_fork

L: all

Vmware Tools 4.0 ve Solaris 10

Vsphere 4.0'a geçtiğimizden bu yana sanal Solaris 10 sunucularının vmware tools paketlerini değiştirmek için fırsat kolluyordum. Geçen hafta sonu bir kaç makinede bu işlemi yapıp yeni VM tools'u yükledikten sonra servisin kendiliğinden kapandığını farkettim. Makine açılışında servis açılıyor ancak daha sonra kapanıyordu. Bu konuyla ilgili küçük bir araştırmadan sonra UTF-8 locale ile ilgili aşağıdaki paketin yüklenmesi gerektiğini öğrendim. Paket yüklendikten sonra sunucular sorunsuz olarak VM tools'u çalıştırmaya başladılar.

VMware Tools does not start on a Solaris guest

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1014683

Perşembe, Kasım 05, 2009

Solaris 10 güvenli kurulum (1)

Güvenli bir Solaris 10 kurulumu hazırlamaya çalışıyorum. Olabildiğince az servis ve uygulama yüklü olması tercihim. Gereken her türlü ortamda minimum saldırı yüzeyine sahip, kullanışlı bir işletim sistemi. Üzerinde bayağı zamandır çalışıyorum ve bu konuda bir yordam hazırladığımı söyleyebilirim.

Temel paket olarak Core Networking (SUNWcreq) paketini kullandım. Aşağıda gerekli olduğunu düşündüğüm ve ek olarak yüklediğim paketler bulunuyor.

  • Automated Security Enhancment Tools (SUNWast)
  • Audit Service Implementation (SUNWaudit)
  • Basic Audit Reporting Tools (SUNWbart)
  • Documentation Tools (SUNWdoc )
  • Freeware other utilities (SUNWCfwutil)
  • Freeware shells (SUNWCfwshl)
  • On-line manual pages (SUNWman)
  • Secure Shell (SUNWCssh)

Daha sonra sıra yamalamaya geldi. PCA (Patch check advanced) scriptini kullanarak sunucumun yamalarını yükledim. Bu yükleme için yalnızca Perl'e ve wget'e ihtiyaç duyuluyor. Perl mevcut kurulumda gelmekte. wget ise

  • GNU wget (SUNWCwget)
  • Bağımlılık - Common GNU package (gcmn)

paketlerinin yüklenmesiyle hazır hale geliyor. PCA'nın aktif hale gelmesi için sunucunuzu doğrudan HTTPS ile Internet'e çıkabilir hale getirmek gerekli. Çalıştığında 60'a yakın yama buluyor ancak bende bunlardan yalnızca 20'sini yükledi.

http://www.par.univie.ac.at/solaris/pca/intro.html

Bu işlemler bittikten sonra da sunucuya Solaris Security Toolkit (SUNWjass) ile bazı ilave düzenlemeler yaptım. SUNWjass'ı http://www.sun.com/software/security/jass/ sayfasından indirebilirsiniz. Araç hakkında detaylı bilgiye bu blogdan ulaşmak mümkün.

SUNWjass çalıştırıldığında /etc/hosts.deny dosyasına ALL kaydını ekliyor. Dolayısıyla başta ayarları özelleştirmezseniz bir sonraki açılışta sunucuya SSH bağlantısı yapamayacaksınız anlamına geliyor. Bu nedenle uygulamadan önce test sistemlerinde çalıştırmak ve özelleşmiş ayarlarla prod sistemlerine geçmek en doğrusu.


Salı, Eylül 29, 2009

BackupExec 12.5 ve Solaris 10 yedekleme sorunu

Yedekleme yazılımımızı BrightStore'dan Symantec BackupExec 12.5'a geçirdiğimizden bu yana enteresan sorunlarla karşılaşıyoruz. Geniş bir platform ve farklı sistemlerin olduğu bir ortamda böyle bir değişikliğin sancısız olmayacağının farkındaydık ama bu kadar da enteresan şeyler göreceğimizi açıkçası pek sanmıyordum.

Anlatmaya çalıştığım sorunumuz şu : Solaris 10 U7 sunucularda BackupExec agent'ını yükleyerek çalıştırdıktan sonra BE'nin yönetim konsolunda normal olarak sunucuyu görmemiz gerekir. Ancak farklı yöntemler denememize rağmen bir türlü sunucuyu BE'ye tanıtmayı başaramadık.

Agent'ın debug modunu açtığımızda da hep aynı mesajı alıyorduk ;

NrdsAdvertiserThread: EnumSelfDLE for file system 22 returned -1(0xFFFFFFFF) and 0 DLEs

Symantec'le yaptığımız yazışmalar ve açılan "case" sonucunda bize, ipe sapa gelmeyen aşağıdaki açıklamayı gönderdiler.

http://seer.entsupport.symantec.com/docs/316840.htm

Özetle, Solaris'teki NIC cihaz adının ortasında (başı ve sonu değil) rakam bulunuyorsa BE 12.5 sunucusu bu agentı tanımıyor, agent kendisini BE'ye tanıtamıyor gibi garip bir durum vardı. (Ör : e1000g0 çalışmıyor, fge0 çalışıyor).

Tabi bu durumu önceleri biraz gülerek ama zaman ilerledikçe ve işler aksadıkça kızarak ve sonrasında da ciddi öfke patlamaları şeklinde karşılamaya başladık. İşin kötü yanı , NIC device name'ler henüz Solaris 10'da değiştirilemiyor. Ortamımızda tüm Solaris sunucuları Vmware ESX 3.5 üzerinde çalışıyor ve ESX hostlarda yalnızca e1000g sürücüsünü kullanan Ethernet kartları tanımlı. Dolayısıyla kartları değiştirerek de "device name"leri değiştirme imkanımız yok.

Cihaz ismini değiştirme seçeneği yalnızca Open Solaris 'de dladm rename-link komutu ile desteklenmekte.

http://www.sun.com/bigadmin/sundocs/articles/vnamingsol.jsp

http://www.opensolaris.org/os/project/clearview/docs/vnameoverview.pdf

Ama en sonunda biraz (itiraf ediyorum birazdan daha fazla :) ) kastırınca ve Sun Microsystems Türkiye'den de küçük bir destek alarak sorunumuzu çözdük.

Yaptığımız işlem basitçe Solaris ve BE'yi kandırmak. Mevcut ismi değiştiremeyince biz de içinde tek NIC'in bulunduğu bir Link aggregation yaratarak BE'nin muhatap olduğu NIC'in seveceği türden (!) bir isminin olmasını sağladık. Aşağıda bu işlemi nasıl yaptığımızı gösteren komutlar bulunuyor.

# ifconfig e1000g0 down unplumb (bu komutu kullanmadan dladm çalıştırılırsa 'cihaz kullanılıyor' hatası veriyor)
# dladm create-aggr -d e1000g0 1
# ifconfig aggr1 plumb up
# mv /etc/hostname.e1000g0 /etc/hostname.aggr1

Not : Sun Microsystems Türkiye'den Serkan Berk'e yardımları için bu vesileyle teşekkür ediyoruz.

Çarşamba, Eylül 09, 2009

Salı, Eylül 08, 2009

Solaris 10, Apache V2 SMF düzenleme

Projelerden biri için iki adet Solaris 10 (u7) sunucu üzerine medya ile birlikte gelen Apache’nin kurulması gerekiyordu. Kurduk :) Ama daha sonra yazılımcılar en az V2 ile çalışmak istediklerini belirtip V1.3′ten vazgeçtiler.

Herhangi bir yazılımcının istek ve karar değişiklikleri asla bitmeyeceği için bir süre sonra bunu da yeterli görmeyip V2.2 ile çalışmak istediklerini belirttiler.

Solaris medyası ile V2 geldiği için V2.2.12′ yi ancak www.sunfreeware.com’dan bulabildim.

http://www.sunfreeware.com/programlistintel10.html#gcc33

Apache’nin bu sürümü beraberinde bir çok ek paketin de yüklenmesini istiyor. Özellikle prod sunucularına GCC kurmak istemeyenler için libgcc.3-4-6 tavsiye edilmiş.

Kurulumlar tamamlandığında elimizde çalışır halde Apache v2 sunucuları vardı ve yazılımcıların tüm isteklerini karşılıyordu ama bu sefer de yönetim sorunları ortaya çıktı.

Yüklemede kullandığım stream data package anladığım kadarıyla Apache için SMF servisi oluşturmamıştı. Bu durumda ancak ilgili klasörün içinden apachectl’yi elle çalıştırarak hizmeti başlatabiliyorduk.

Aslında bu durum işime de gelmedi değil. Ne kadar zamandır SMF hakkında pratik yapmayı planlıyordum ve bu sayede el alışkanlığımı da geliştirmiş oldum.

Apache V2 için SMF servisi oluşturmanın yolu çok basit.

1- Sun’ın aşağıdaki belgesi oldukça açıklayıcı

http://www.sun.com/bigadmin/features/articles/id_manager_service.html

2- Buradan mevcut XML dosya örneğini alıp üzerinde bazı küçük değişiklikler yaptım ve bahsedildiği gibi bir klasör altına yerleştirdim.

3- Aşağıdaki komutları çalıştırdım ve Voila ! Servis hazırdı.

bash-3.00# svccfg validate apache2.xml
bash-3.00# svccfg import apache2.xml

SMF ile ilgilenenler için açıklayıcı bir forum topiğini de ekte yayınlıyorum.

http://www.unix.com/sun-solaris/32936-solaris-10-add-new-svc.html


Çarşamba, Ağustos 12, 2009

Process Maker ve iş akışı yazmak


Process Maker’ ın, açık kaynak yazılımlar içinde uzun zamandır işime doğrudan olumlu etki eden en faydalı yazılım olduğunu düşünüyorum.

Eğer çalıştığınız ortamda iş akışı uygulamaları geliştirme ihtiyacınız varsa, hiç programlama bilgisine sahip olmadan bile geliştirme yapabileceğiniz bir yazılım ve grafik arayüzünü kullanarak profesyonel görünüme oldukça yakın formlar ve akış diyagramları elde edebilirsiniz. Üstelik bu akışları çok kısa zamanda ortam ve işinize adapte edebilirsiniz.

Yazılımla ilgili bu kısa girişi yaptıktan sonra, kullanırken edindiğim deneyimlerimden biraz bahsetmek istiyorum.

Kendi ortamımda yazılımı sürekli Windows platformunda denedim. İlk olarak söyleyebileceğim şeylerden biri, (henüz çözmeyi başaramadım) ilk denemem kendi PC’me kurarak (Win XP İng. SP2) yaptığım denemeydi ve uygulama içinden PHPMail kullanarak gönderdiğim e-postalarda Türkçe karakter sorunu çıkmıyordu. Ne zaman ki, uygulamayı daha ciddi bir ortama taşımaya karar verdim ve Windows 2003 sunucuya geçtim, giden e-postalarda Türkçe karakter sorunu çıktı. Halen çözümünü araştırıyorum ama şimdilik ciddi bir sorun değil benim için.

Bunun dışında Process maker’i Linux ortamında çalıştırmak isteyenler varsa, Ubuntu’da nasıl yapılacağı aşağıdaki blogda tarif ediliyor.

http://blog.evolutioncreations.com/2008/11/installing-process-maker-on-ubuntu-804.html

İkinci zorluk, Active Directory entegrasyonundaydı. Önce test çalışmalarımı yerel hesaplarla sürdürdüm ama ne zaman ki gerçek ortama geçtik, AD sorunu ortaya çıktı. Bunu da aşağıdaki forum yazışmasını takip ederek çözebilirsiniz. Tamamiyle basit bir “trick”i var.

http://forum.processmaker.com/viewtopic.php?f=5&t=1157&start=0&st=0&sk=t&sd=a

Bir iş akışı uzmanı değilim ama ihtiyaçlarım bu konuda bazı deneyimleri kazanmamı sağladı. Süreçlerini iş akışlarına çevirmek isteyenler için naçizane aşağıdaki önerilerde bulunmak isterim.

  • Bir süreci PM ile iş akışına dönüştürmek istiyorsanız, öncelikle kağıt üstünde bir çalışma yapmak iyi olacaktır. Tercihen, Visio vs. ortamlarda hazır akışlarınız varsa işiniz çok daha kolay olacaktır. Yoksa önce süreci tasarlamak için de zaman harcamak zorunda kalacaksınız.
  • Küçük adımlarla başlayın. Kredi kartı talep sürecinin tamamını sistemin içine almak yerine önce talep bildirimi gibi daha küçük süreç(çik)leri halledin. Zamanla deneyim kazandıkça, başta birkaç gün harcadığınız bir iş, tam bir günden daha kısa süre içinde bitebiliyor.
  • Geliştirme yaparken, kullandığınız anahtar alanları bir yere not edin. Daha sonra salt-okunur olarak başka formlarda bu alanları görüntülemek istediğinizde hatırlamadığınız bir alan adı için geri dönmek zor olabiliyor.
  • Uygulamanın içinde “field name” diyeceğimiz alanlar için kesinlikle Türkçe karakterler kullanmayın. “Display name” olarak belirtebileceğimiz alanların görünür isimleri için TR sorunu yok ama bahsettiğim noktalarda aman dikkat !
  • Açık kaynak bir yazılım olması itibariyle, kararlılığının her an %100 garantisi yok. Mutlaka sık sık yedekleyerek çalışın. Ummadığınız bir yerde tasarladığınız form uçabilir. Nadir görülüyor ama olası bir durum.

Sonuç olarak 10 gün içinde biri 24 adımlı, diğeri 13 adımlı ve bir kaç tane de irili ufaklı olmak üzere 9 farklı süreci iş akışı sistemine aktarmayı başardım. Elimde daha önce bunların çoğunun Word veya Visio olarak hazırlanmış çizimleri vardı, bu nedenle yalnızca uygulamaya yoğunlaşabildim.


Farklı nedenleri ve / veya endişeleri yüzünden iş akışı alemine girmek isteyenlere Process Maker’ı şiddetle tavsiye ederim.

http://www.processmaker.com/