December, 2011

  • Waar vind ik mijn technische informatie?

    Deze post is een aangepaste post van twee jaar terug. Ik kreeg onlangs de vraag waar men informatie (specifiek informatie over patches) vandaan kan halen, dus ik dacht ik breng deze wederom onder de aandacht J

    Mijn persoonlijke tip: Gebruik RSS feeds! Zie verderop in het document waar je de beschikbare feeds vindt!

     

    Vinden 1.0

    Ik krijg vaak te horen dat men door de grote hoeveelheid informatie niet kan vinden wat men zoekt, of dat de structuur van onze sites onhandig is. Ik ben het hier niet helemaal mee eens en wil laten zien in onderstaande post, dat zonder Google Bing de informatie ook prima te vinden is.

    Bijna alle informatie over onze producten is te vinden op Microsoft.com. Het probleem met Microsoft.com is dat er zo verschrikkelijk veel informatie voor handen is, en er zo veel mensen content editen, dat het lastig kan zijn informatie terug te vinden. Toch vind ik dat er op zich een goede structuur is, en met de juiste methoden de informatie prima te vinden is. Mensen beginnen gewoon op de verkeerde manier met informatie zoeken.

    Waarschijnlijk 9 op de 10 mensen zal hun favoriete zoekmachine openen en via zoektermen proberen de vereiste informatie boven water te toveren. Dit werkt vaak goed, maar het kan vaak makkelijker. Het probleem met zoeken is dat men veelal niet kort kan verwoorden wat men precies zoekt, waardoor het moeilijk in zoektermen te vatten is. Vaak kom je net zo makkelijk aan informatie zonder een zoekmachine te gebruiken. Net als bij bijna elk ander bedrijf start het internetavontuur bij een internet portal, in dit geval http://www.microsoft.com

    Zoals elke portal is dit de toegang tot alle informatie in het microsoft.com domein. Afhankelijk van het type informatie dat je zoekt, kan je kiezen voor een categorie en bijhorende site. Ik neem meestal het product als uitgangspunt en ga van daaruit verder, maar mocht jij een persoon zijn die op een andere manier navigeert, bijvoorbeeld vanuit het type informatie waarnaar je op zoek bent, kun je via bijvoorbeeld Solutions en Support ook bij dezelfde informatie komen. Ik ben van mening dat de keuze van de topbar bij de Microsoft site erg sterk is.
    In mijn geval kies ik dus voor Products en kies daar mijn product. In het geval van SharePoint moeten we even een tussenstop maken via de sitemap, en komen we alsnog bij de SharePoint portal. De menu's hier spreken ook voor zich, en via 'Informatiebronnen > Voor IT – Professionals' kom ik weer een stap dichter bij wat ik zoek. De daarop volgende informatie biedt wederom allerlei keuzen om verder te komen.

    Had ik nu een meer functionele vraag of een developer vraag, dan had ik hier waarschijnlijk een andere keuze gemaakt. Dit nogmaals om te benadrukken dat de weg via de verschillende portals prima te volgen is, als je maar bij de bron begint, namelijk Microsoft.com.

    Vinden 2.0

    Als je al ervaring hebt met onze sites dan weet je dat er een aantal bekende (sub)portals zijn, en vaak zal dat je startpunt zijn, maar van daaruit werkt het eigenlijk weer hetzelfde. Via de top navigatie en een aantal hops over verschillende pagina's kom je waar je zijn moet. De meest bekende portals zijn:

    • MSDN – Alles voor ontwikkelaars.
    • Technet – Alle technische product informatie die de verschillende IT rollen, betrokken bij het plannen, uitrollen, en beheren van technische platformen, ondersteunen.
    • Download – Download center voor downloads zoals producten, tools, whitepapers, updates, you name it!
    • Connect – Feedback tool voor producten.
    • Support – De portal voor support vraagstukken, waar onder andere de knowledge base is ondergebracht.
    • Security – Alles rondom security.

    Als het puur om technische informatie gaat zoals informatie over het installeren of configureren van software, dan is Technet 'the place to be'. Sinds enige tijd maakt Technet gebruik van TechCentres, wat subsites zijn voor specifieke producten. Binnen een TechCentre is veelal de informatie heel netjes gegroepeerd, zoals te zien is op het Sharepoint TechCentre waar je via de producten heel snel al bij Resource Centers komt die gegroepeerd zijn op fases in de lifecycle van jouw infrastructuur. Ben je aan het plannen of uitrollen, zit je goed bij Plan & Deploy. Zoek je iets gerelateerd aan beheer, zit je goed bij Operate. Het spreekt allemaal voor zich!

    Mocht het via deze weg toch nog niet mogelijk zijn de informatie te vinden, heeft Technet (en de meeste andere Microsoft.com sites) ook nog de zoekoptie, welke gebaseerd is op Bing:

    Nu kan het zijn dat je de informatie die je zoekt niet kan vinden. Voornamelijk wanneer je met een specifiek vraagstuk zit, wat net even anders is dan gebruikelijk, loop je tegen de beperkingen aan van online documentatie. In zulke gevallen wil je terugvallen op lotgenoten en experts. Gelukkig zijn daar genoeg mogelijkheden voor. Communities hebben binnen microsoft.com een prominente plek onder http://www.microsoft.com/communities/default.mspx . Zo zijn er veel informatiebronnen als blogs, nieuwsgroepen, chats en community sites terug te vinden. Op elk van deze bronnen is het mogelijk in contact te komen met andere IT-pro's waaronder veel Microsoft medewerkers en MVPs. Voornamelijk de nieuwsgroepen en fora zijn veelbezochte locaties. Mocht je dus met vragen zitten of op de hoogte willen blijven van wat er voor problemen en vraagstukken spelen bij collega IT-ers, zorg dan dat je regelmatig een kijkje neemt op de nieuwsgroepen en fora.

    Het op de hoogte blijven met de ontwikkelingen op bepaalde gebieden kan veel tijd in beslag nemen. Ook hier zijn er een aantal mogelijkheden, die dit een stuk makkelijker maken. Zo zijn er newsletters ,RSS feeds en zelfs tijdschriften waarop geabonneerd kan worden.
    Email newsletters kunnen aangevraagd worden via https://profile.microsoft.com/RegSysProfileCenter/SubCntDefault.aspx . Hier heb je de mogelijkheid te registreren voor heel veel verschillende newsletters, ook in de eigen taal.

    Voor de RSS feeds bestaat er de Feeds directory op http://support.microsoft.com/selectindex/?target=rss , waar je kan registreren voor de laatste KB artikelen voor bepaalde technologieën of de Microsoft Security Bulletins. Even registreren in Outlook en.. VOILA! Binnen een paar seconden ben je op de hoogte van de laatste nieuwe content van bijvoorbeeld Age of Empires III – The warchiefs J

    Zoals gezegd zijn er ook tijdschriften waarop geabonneerd kunnen worden. Microsoft Nederland heeft een aantal tijdschriften, die gratis zijn voor IT-pro's. Dit zijn MSDN .Net Magazine en Technet Magazine. Abonneren kan via:

    .NET Magazine:
    https://profile.microsoft.com/RegSysProfileCenter/wizard.aspx?wizid=d7805d54-2171-4601-b654-55537eefb3bc&lcid=1033&fu=/belux/msdn/nl/community/netmagazine/subscribed.mspx

    TechNet Magazine:
    http://technet.microsoft.com/nl-nl/cc514308.aspx

    Zo zie je. Er zijn genoeg bronnen voor informatie, en als je weet wat je doet kan je prima de informatie vinden die je zoekt. Neem af en toe de tijd om je kennis bij te spijkeren en vergeet vooral de blogs op http://blogs.microsoft.nl, http://blogs.msdn.com en http://blogs.technet.com niet!

     

     

     

  • El Cheapo iSCSI oplossing voor je testomgeving

    Als je clustert heb je shared resources, waaronder meestal ook storage. Ik heb geen dure hardware waarmee ik dat thuis voor elkaar kan boksen, dus de goedkoopste optie is iSCSI. Wij leveren gratis iSCSI software (het komt uit Storage Server) voor testomgevingen en kleine productieomgevingen.

    iSCSI Software Target levert een software-based and hardware-onafhankelijk iSCSI disk subsystem, en maakt van elke windows server een storage device wat shared block-level storage levert over een IP netwerk.

    In deze blog post laat ik zien hoe je snel een iSCSI disk beschikbaar stelt aan je cluster nodes. Ik ga niet in op recommended practices rondom Windows- en cluster inrichting, want dat laat ik over aan de Platform specialisten; ik ben maar een SharePoint nerd J.

    iSCSI Target

    Eerst bouw ik de iSCSI target, wat gewoon een normale Windows Server 2008 R2 installatie is met de iSCSI target software. Ik ga ervan uit dat jij als lezer snapt hoe je een Windows Server installeert. Zo niet, dan is deze post niet voor jou geschreven.

    De configuratie is iets lastiger. Ik laat hier een voorbeeld zien van een enkele disk, maar je kunt er natuurlijk veel meer maken:

    • Ga naar Administrative Tools > Microsoft iSCSI Software Target
    • Kies Create iSCSI Target in het context menu van iSCSI Targets. Met een iSCSI target bepalen we welke nodes in het netwerk verbinding mogen maken met onze storage devices die we aan de target koppelen.
    • Doorloop de verschillende schermen:

      iSCSI Target Name en Description bepalen de naam en omschrijving van onze target.


      Bij de iSCSI Initiators Identifiers geef je aan welke nodes een verbinding mogen maken. Dit kan op basis van een speciaal iSCSI Id, welke je op de nodes kunt vinden en configureren binnen de initiator software (de client kant van onze iSCSI oplossing).

      Wanneer je voor advanced kiest, kun je ook een DNS naam of IP adres opgeven.

      Ik voeg hier twee IP adressen op (voor elke cluster node 1). Je krijgt dan een waarschuwing, maar dat kun je negeren.
    • Creëer een nieuwe Virtual Disk door in het context menu van de nieuwe iSCSI target te kiezen voor Create Virtual Disk for iSCSI target en volg de schermen. Deze spreken voor zich. Belangrijk om te onthouden is, dat de disk dynamisch is, en dus niet meteen de ruimte claimt die je instelt als grootte:

    De iSCSI target is nu gereed om gebruikt te worden.

    Cluster node configuratie

    Om de target te kunnen benaderen moeten we de beide nodes configureren.
    Windows 2008 R2 wordt geleverd met standaard iSCSI initiator software welke te benaderen is via Administrative Tools > iSCSI Initiator.

    Op beide nodes:

    1. Start de iSCSI Initiator.
    2. Selecteer Yes wanneer Windows vraagt de service te starten.
    3. Vul in op de Targets tab het IP van de target in, en selecteer Quick Connect… Het device wordt automatisch gekoppeld aan de node.
    4. Op de Volumes and Devices tab, selecteer Auto Configure.
    5. Selecteer OK om af te sluiten.

    Alleen op Node 1:

    1. Breng via Disk Management de shared disk online, initialize hem (zelfde context menu).
    2. Partitioneer de disk, en formateer deze,

    Voila, uw iSCSI volume is klaar om gebruikt te gaan worden. Succes!!

  • SQL 2008 R2 cluster via command line

    Ik ben momenteel bezig bij een klant om het mogelijk te maken een SharePoint farm inclusief SQL server volledig unattended te deployen.
    Deze post laat een voorbeeld zien, hoe een SQL Server 2008 R2 cluster met de database engine via command line te installeren.

    Er zijn uiteraard meerdere wegen naar Rome, en daarnaast vele zaken waar je bij productiesystemen rekening mee moet houden. Zaken die ik niet beschrijf om deze post kort en bondig te houden. Deze post is puur bedoeld als voorbeeld, waar vanuit verder gewerkt kan worden.

    Meer informatie over SQL clustering is te vinden op: http://msdn.microsoft.com/en-us/library/ms189134.aspx

    Voorbereiden cluster

    Een SQL server cluster maakt gebruik van de Windows Server clustering features, en voordat je een SQL cluster kunt installeren, moet er een Windows Cluster zijn met de volgende eigenschappen:

    • Een of meerdere Windows Server failover cluster nodes
    • Een cluster resource group met:
      • Network name
      • IP addresses
      • Shared disks voor SQL Server data en logs

    Verder hebben we het volgende nodig:

    • Vier static IPs (twee voor de nodes, twee voor het cluster).
    • Een DNS A record voor het cluster.
    • Twee domain accounts voor de SQL Server en SQL Agent services.
    • Een setup account met local administrator rechten op beide nodes, de userrights SeBackupPrivilege, SeDebugPrivilege en SeSecurityPrivilege (http://support.microsoft.com/default.aspx?scid=kb;en-US;2000257 )

    Ik ga er vanuit dat je weet hoe je twee servers installeert, en IP adressen, domain accounts en DNS records regelt.
    Zodra je dit alles hebt geregeld, maken we van beide Windows servers een cluster d.m.v. Powershell, gebruik makend van het setup account.

    Eerst installeren we de cluster features en –tools op beide servers:

    Import-Module ServerManager
    Add-WindowsFeature Failover-Clustering,RSAT-Clustering

    Vervolgens testen we of de systemen gereed zijn om een cluster te vormen:

    Import-Module FailoverClusters
    Test-Cluster server1,server2

    In mijn geval kan ik wel een cluster vormen, maar heb ik warnings gekregen op bepaalde tests rondom disk en netwerk,
    wat klopt, want ik had nog geen Shared storage toegevoegd en heb slechts een enkele NIC (wat dus een single point of failure is voor de nodes).
    Voor meer informatie kan je kijken in het report, waar erg veel waardevolle informatie in staat rondom de tests en uitkomsten.

    Nu kan ik het cluster gaan vormen, maar om een disk resource te kunnen maken in een clustergroup moet ik natuurlijk wel een disk hebben.
    Lees mijn blogpost @ voor een voorbeeld iSCSI implementatie.

    Om het cluster te maken voeren we de volgende commando's uit:

    Import-Module FailoverClusters
    New-Cluster –Name ClusterNaam1 -Node server1,server2 –StaticAddress x.x.x.x [-IgnoreNetwork x.x.x.x/xx] –NoStorage
    $q = Get-ClusterAvailableDisk | Sort Size | Select -First 1
    Get-ClusterAvailableDisk | Add-ClusterDisk
    Set-ClusterQuorum -NodeAndDiskMajority $q.name

    New-Cluster zal standaard proberen alle Shared Volumes meteen toe te voegen als cluster resource, en daarnaast voor elk beschikbaar netwerk een IP vragen om als resource op te voeren. Via –NoStorage kun je de disks later toevoegen, en via –IgnoreNetwork, kunt je netwerken negeren. Voor elke netwerk wat niet is opgenomen in de ignore list, moet je een shared IP opgeven in –StaticAddress.

    Om een Node en Disk majority Quorum te kunnen maken, sorteer ik alle beschikbare disken op grootte en gebruik de kleinste voor het Quorum (volgens de boeken is 512MB genoeg, dus zo groot maak ik mijn Quorum disk, waardoor deze altijd de kleinste is [waarvoor zou je anders een kleine shared disk gebruiken??]).

    Het cluster is nu gereed voor de SQL installatie.

    Installatie SQL Server

    SQL Server heeft .NET 3.5 SP1 nodig, dus voordat we de setup draaien voegen we eerste de juiste Windows Feature toe:

        Import-Module ServerManager
        Add-WindowsFeature AS-NET-Framework

    Om de SQL clustergroup te maken draaien we vervolgens de setup van het SQL installatie medium met de juiste parameters (ik heb een voorkeur voor het gebruik van een config file).

    We maken op een textbestand aan met de volgende inhoud:

    [SQLSERVER2008]
    QUIET="True"
    ACTION="InstallFailoverCluster"
    FEATURES="SQLENGINE,SSMS,ADV_SSMS"
    INSTANCENAME="SharePoint"
    INSTANCEID="SharePoint"
    INSTANCEDIR="C:\Program Files\Microsoft SQL Server"
    INSTALLSHAREDWOWDIR="C:\Program Files (x86)\Microsoft SQL Server"
    INSTALLSHAREDDIR="C:\Program Files\Microsoft SQL Server"
    SQLSVCACCOUNT="HOME\sa.SqlSvc"
    AGTSVCACCOUNT="HOME\sa.SqlAgent"
    SQLSVCPASSWORD="P@ssw0rd!"
    AGTSVCPASSWORD="P@ssw0rd!"
    INSTALLSQLDATADIR= "X:\SQLData"
    SQLCOLLATION="Latin1_General_CI_AS_KS_WS"
    FAILOVERCLUSTERGROUP="SQL Cluster Group"
    FAILOVERCLUSTERDISKS="Cluster Disk 1"
    FAILOVERCLUSTERIPADDRESSES="IPv4;192.168.1.46;Cluster Network 1;255.255.255.0"
    FAILOVERCLUSTERNETWORKNAME="CLUSTERNAAM2"
    SQLSYSADMINACCOUNTS="DOMEIN\USER"

    In een nutshell vertel ik setup een installatie moet doen met alleen de database engine, management tools (advanced), de services onder bepaalde domain accounts moeten draaien, en het een cluster moet vormen. De parameters betekenen in het kort:

    INSTANCENAME

    Naam van de SQL instance

    INSTANCEID

    Instance ID wat gebruikt wordt in namen van folders en configuratie

    INSTANCEDIR

    De configuratiedirectory van de instance

    INSTALLSHAREDWOWDIR

    De installatiedirectory for 32 bit componenten

    INSTALLSHAREDDIR

    De installatiedirectory for 64 bit componenten

    SQLSVCACCOUNT

    SQL Server Service account

    AGTSVCACCOUNT

    SQL Agent Service account

    SQLSVCPASSWORD

    Password voor SQL Server Service account

    AGTSVCPASSWORD

    Password voor SQL Agent Service account

    INSTALLSQLDATADIR

    De default directory voor de database data

    SQLCOLLATION

    De default collation

    FAILOVERCLUSTERGROUP

    De naam van de clustergroup die SQL aanmaakt

    FAILOVERCLUSTERDISKS

    De shared disks die toegevoegd worden aan de cluster group

    FAILOVERCLUSTERIPADDRESSES

    Een nieuw shared IP adres en een verwijzing naar een bestaand cluster netwerk resource

    FAILOVERCLUSTERNETWORKNAME

    De clusternaam die SQL gaat gebruiken

    SQLSYSADMINACCOUNTS

    Accounts die toegevoegd dienen te worden aan sysadmin

    Voor meer informatie over de beschikbare parameters zie: http://msdn.microsoft.com/en-us/library/ms144259.aspx

    Ik heb hier gewoon wat waarden ingezet, maar wil je volledige automatisch deployed, zul je je config file moeten genereren, en wat logica in je scripts moeten bakken, zodat bijvoorbeeld de FAILOVERCLUSTERDISKS en FAILOVERCLUSTERIPADDRESSES, automatisch gevuld wordt met de juiste disks en NICS.
    Mijn gotcha's waren:

    • Dat de parameter FAILOVERCLUSTERGROUP een unieke naam moet hebben. Bij het configureren van het initiële cluster zijn de namen "Cluster Group" en "Available Storage" al geclaimd.
    • De FAILOVERCLUSTERNETWORKNAME een bestaande WINS of DNS naam moet zijn, en verwijzen naar het een ander nieuw IP adres, en een andere naam zijn dan diegene die je gebruikt hebt bij het initieel aanmaken van het Windows Cluster. Je gebruikt dus in totaal 4 IP adressen (2 private voor de nodes, en 2 cluster adressen).

    Op de eerste node draaien we dan vervolgens:

        ./Setup.exe /configurationfile=padnaarconfigfile.ini /IndicateProgress /IAcceptSQLServerLicenseTerms

    De SQLSetup.log file is te vinden onder %temp%, maar persoonlijk had ik meer aan de logs onder padnaarsqlinstalldir \100\Setup Bootstrap\xxxxxxxx_xxxxxx\*.log.

    Zodra de SQL installatie succesvol is afgerond, maak je op de andere Node ook een configuratiebestand aan. Ik gebruik hier als voorbeeld:

    [SQLSERVER2008]
    QUIET="True"
    ACTION="AddNode"
    INSTANCENAME="SharePoint"
    SQLSVCACCOUNT="HOME\sa.SqlSvc"
    AGTSVCACCOUNT="HOME\sa.SqlAgent"
    SQLSVCPASSWORD="P@ssw0rd!"
    AGTSVCPASSWORD="P@ssw0rd!"

    Voor meer informatie over de beschikbare parameters zie: http://msdn.microsoft.com/en-us/library/ms144259.aspx

    Op deze node draaien we vervolgens wederom:

        ./Setup.exe /configurationfile=padnaarconfigfile.ini /IndicateProgress /IAcceptSQLServerLicenseTerms

    Voila, het cluster is gereed. Wat nu rest is ervoor zorgen dat het A-record voor de clusternaam gewijzigd mag worden door het computer account wat voor het cluster is aangemaakt in AD. Als DNS AD integrated is, geef je het cluster computer account (dus niet de afzonderlijke nodes) via de DNS Server mmc snap-in FULL CONTROL op het A-record.

    Appendix

    Aangezien ik in deze post alleen een installatie van de database engine behandel, hebben we geen Distributed Transaction Coordinator nodig. Ik kwam bij mijn zoektocht naar informatie echter een script tegen op http://www.sqlha.com/2009/09/02/creating-a-clustered-distributed-transaction-coordinator-msdtcdtc-using-powershell-method-1/ waarvan ik dacht COPY PASTE… Voor het geval ik of jij het ooit nodig heeft. Ik heb het niet getest, dus garantie tot de virtuele deur…

    $clunm = "Windows failover cluster name"

    $dtcdisknm = "Name of the disk resource to use with DTC"

    $dtcdnsnm = "Name for DTC in DNS"

    $dtcgrpnm = "Name of the DTC resource group"

    $dtcipaddr = "IP address for DTC"

    $dtcsubnet = "Subnet mask for DTC"

    $dtcipresnm = "Name of the DTC IP address resource"

    $dtcnetnm = "Name of the DTC network name resource"

    $dtcresnm = "Name of the DTC resource name"

     

    Add-ClusterGroup $dtcgrpnm -Cluster $clunm

    Add-ClusterResource $dtcipresnm -ResourceType "IP Address" -Cluster $clunm -Group $dtcgrpnm

    $ipres = Get-ClusterResource $dtcipresnm

    $ipaddr = New-Object Microsoft.FailoverClusters.PowerShell.ClusterParameter $ipres,Address,$dtcipaddr

    $subnet = New-Object Microsoft.FailoverClusters.PowerShell.ClusterParameter $ipres,Address,$dtcsubnet

    $setparams = $ipaddr,$subnet

    $setparams | Set-ClusterParameter

    Add-ClusterResource $dtcnetnm -ResourceType "Network name" -Cluster $clunm -Group $dtcgrpnm

    $nnres = Get-ClusterResource $dtcnetnm

    $netnm = New-Object Microsoft.FailoverClusters.PowerShell.ClusterParameter $nnres,Address,$dtcdnsnm

    $netnm | Set-ClusterParameter

    Add-ClusterResourceDependency $dtcnetnm $dtcipresnm -Cluster $clunm

    Add-ClusterResource $dtcresnm -ResourceType "Distributed Transaction Coordinator" -Cluster $clunm -Group $dtcgrpnm

    Add-ClusterResourceDependency $dtcresnm $dtcnetnm -Cluster $clunm

    Move-ClusterResource $dtcdisknm -Cluster $clunm -Group $dtcgrpnm

    Add-ClusterResourceDependency $dtcresnm $dtcdisknm -Cluster $clunm