best practices for using virtualization in development environments

43
This information is confidential and was prepared by Knowledge Management Associates solely for the use of our client; it is not to be relied on by any 3rd party without KMA’s prior written con Best Practices for Using Virtualization in Development Environments Liz Hatch and Chris McNulty

Upload: knowledge-management-associates-llc

Post on 17-Jan-2015

7.103 views

Category:

Technology


6 download

DESCRIPTION

.net User Group presentation from Liz Hatch & Chris McNulty on best practices for using virtualization in development environments

TRANSCRIPT

Page 1: Best Practices For Using Virtualization In Development Environments

This information is confidential and was prepared by Knowledge Management Associates solely for the use of our client; it is not to be relied on by any 3rd party without KMA’s prior written consent.

Best Practices for Using Virtualization in Development Environments

Liz Hatch and Chris McNulty

Page 2: Best Practices For Using Virtualization In Development Environments

2

Our Focus

• We are presenting:– Practical use and issues– Business experiences – Development scenarios– Sample configurations– Available resources

• We’re not presenting:

– In-depth vendor comparisons– Production environment virtualization– Future roadmap– Licensing

Page 3: Best Practices For Using Virtualization In Development Environments

3

What’s happening in your development environment now?

• Is virtualizing the development environment old news to you?• How many currently working in virtualized environment?• Server-centric or decentralized on clients?

• Are you using it for:– Software Development (Test scenarios) – Quality Assurance – Software support where it’s important to be able to quickly and easily

reproduce a relatively large number of environments. – Demo centers / demo scenarios

Page 4: Best Practices For Using Virtualization In Development Environments

4

Development Scenarios

• Best case scenario• Flexible development and testing configurations• Development staffs can create and test a wide variety of scenarios in a safe, self-

contained environment that accurately approximates the operation of physical servers and clients.

• Development team can test the latest version of an application on multiple platforms with a variety of virtual hardware capabilities

• Customer data is data protected• Explicit separation of development and production environments

• Current scenario on developer machines• Multiple versions of development tools• Multiple versions of enterprise applications such as SQL Server• Customer data on developer machines• Intermingling of development and production environments

Page 5: Best Practices For Using Virtualization In Development Environments

5

What Is Virtualization?

• “…A technique for hiding the physical characteristics of computing resources from the way in which other systems, applications, or end users interact with those resources.

• This includes making a single physical resource (such as a server, an operating system, an application, or storage device) appear to function as multiple logical resources; or it can include making multiple physical resources (such as storage devices or servers) appear as a single logical resource." (http://en.wikipedia.org/wiki/Virtualization)

• Types of virtualization– Platform (often called “Server”)– Resource

Page 6: Best Practices For Using Virtualization In Development Environments

6

History of Virtualization• The first hypervisor providing full virtualization was IBM's CP-40, a one-off research system that began

production use in January 1967, and which became the first version of IBM's CP/CMS operating system. With CP-40, the hardware's supervisor state was virtualized as well, allowing multiple operating systems to run simultaneously.

• CP/CMS was part of IBM's attempt to build robust time-sharing systems for its mainframe computers. By running multiple operating systems simultaneously, the hypervisor increased system robustness and stability.

• IBM's System/370 series was announced in 1970 without any virtualization features, but these were added to the series in 1972, and have appeared in all successor systems.

• The major UNIX vendors, including Sun Microsystems, HP, IBM, and SGI, have been selling virtualized hardware since before 2000.

• Multiple host operating systems have been modified to run as guest OSes on Sun's Logical Domains Hypervisor. As of late 2006, Solaris, Linux (Ubuntu and Gentoo), and FreeBSD have been ported to run on top of Hypervisor (and can all run simultaneously on the same processor, as fully-virtualized independent guest OSes).

• One of the early PC hypervisors was the commercial VMware, introduced in 1998. Parallels, Inc. introduced Parallels Workstation, which is primarily used on PCs, in 2005 and Parallels Desktop for Mac, which runs on Mac OS X, in 2006.

• In June 2008, Microsoft delivered a new Type 1 hypervisor called Hyper-V (codenamed "Viridian" and previously referred to as Windows Server virtualization); the design features OS integration at the lowest level.[3] New versions of the Windows operating system beginning with Windows Vista include extensions to boost performance when running on top of the Viridian hypervisor.

Page 7: Best Practices For Using Virtualization In Development Environments

7

Virtualization Approaches

• A hosted approach provides partitioning services on top of a standard operating system and supports the broadest range of hardware configurations. – Installs and runs as an application– Relies on host OS for device support and physical resource management

• A hypervisor architecture is the first layer of software installed on a clean x86-based system. Since it has direct access to the hardware resources, a hypervisor is more efficient than hosted architectures, enabling greater scalability, robustness and performance.– Lean virtualization-centric kernel– Service Console for agents and helper applications

• Para-virtualization– An enhancement where a guest operating system or application is ‘aware’ that it

is running within a virtualized environment, and has been modified to exploit this.

Page 8: Best Practices For Using Virtualization In Development Environments

8

Benefits

• Managing data centers / server rooms– Space– Savings in hardware and energy costs

• Security and Continuity– Backups of entire image– Quick re-deployment – Easier to limit access to resources outside scope of project

• Managing hardware resources more efficient– Quick movement of virtual clients and servers among physical hosts– Faster deployment– More flexible infrastructure

Page 9: Best Practices For Using Virtualization In Development Environments

9

Cons / Risks

• Internal resistance of staff• Time to reorganize and consolidate developments clients and

servers• Mistaken deletion of VPCs images in development

environment as well as libraries and archives• Performance: bottle-necks, resource allocation, memory, disk

I/O, network• Support: increased impact of server failures, maintenance

affects all virtualized systems at same time• New skill set needed to deploy, maintain and support

Page 10: Best Practices For Using Virtualization In Development Environments

KMA Case Study

Page 11: Best Practices For Using Virtualization In Development Environments

11

Our Company

• Microsoft Gold Partner founded in 1995• Clients range from local mid-market firms to New

England Fortune 1000 companies• Our business– Product – Mekko Graphics

• PowerPoint plug-in for financial charting• Customization of product

– Consulting• SharePoint• .NET Custom development• Systems integration

Page 12: Best Practices For Using Virtualization In Development Environments

12

Virtualization of Development at KMA

• Led by infrastructure team– Driven by interest of staff– Team came up with solution– Architecture / Hardware / Solution– Continued commitment: reason, focus, risks,

scope• Supported by ownership and management– Incremental growth acknowledged

Page 13: Best Practices For Using Virtualization In Development Environments

13

Deployment at KMA in 2006

Page 14: Best Practices For Using Virtualization In Development Environments

14

Deployment at KMA in 2009

Page 15: Best Practices For Using Virtualization In Development Environments

15

Architecture of Environment

• Development Domain– Added development domain untrusted by production– One domain controller on physical box for development domain which includes

development Exchange server– Multiple physical host servers

• Virtual Server with 3• Virtual Server with 5• Virtual Server with 3, Hyper-V with 3

– Two NAS devices for storage of archived staff and project VPCs with RAID 5– SQL Server 2000, 2005, 2008 on physical boxes – reused old boxes– Originally planned to swap host servers for re-use in organization but have realized not

practical

• Production Domain– Connect to machines using remote desktop with reference to machine name– All projects stored in production VSS which is backed up– All other project materials stored in production environment

Page 16: Best Practices For Using Virtualization In Development Environments

16

Results

• Virtualized:– All development on the consulting side of– Builds for product side of business

• No need for high-powered developer machines since development is on VPCs

• All development servers in locked server room, need to have domain access to get to machines

• Needed to have commitment by internal staff to support and business to invest – we had both

Page 17: Best Practices For Using Virtualization In Development Environments

Day-to-Day Usage and Issues

Page 18: Best Practices For Using Virtualization In Development Environments

18

Day to Day Concerns

• Typical problems and approaches:– Security– Compliance– Management

• Reliability and stability are essential: for development, the “dev region” IS production

Page 19: Best Practices For Using Virtualization In Development Environments

19

Remember 2003?

Page 20: Best Practices For Using Virtualization In Development Environments

20

Remember 2003?

• Big developer PCs• All server, development and client software

consolidated• Incompatible configurations led to multiple PCs• Servers outside datacenter not maintained• Extra servers kept for legacy

development/troubleshooting/version management

Page 21: Best Practices For Using Virtualization In Development Environments

21

The Developer Desktop(source: equiknox.com)

Page 22: Best Practices For Using Virtualization In Development Environments

22

Design considerations

• Project vs. staff VPCs– Multi-instance apps like MOSS can reduce number of servers

• Client vs. server placement - consistency• All virtual machines joined to the development domain so share resources• What should be virtualized• Naming conventions

– E.g. CFMMOSSDEV04-V– Indicate project/owner– Standard server naming (purpose, location, region)– Portability make virtual host references obsolete– May Distinguish V from P

• Snapshots in Hyper-V, Undo disks in Virtual Server• Developers competing for resources – have to set standards

– RAM consumption– Always on vs. on demand

• Hypervisors vs. full OS – ease of administration

Page 23: Best Practices For Using Virtualization In Development Environments

23

Usage Considerations

• Microsoft has made it easier to update product keys for Windows and other applications to ensure license compliance

• Use for demos (VPN remote access preferred)• KMA “gold” images for development – we call

our “base” images [preconfigured]

Page 24: Best Practices For Using Virtualization In Development Environments

24

Issues

• How much memory required by host• Anti-virus licenses• TrendMicro & XML files: registry key

Page 25: Best Practices For Using Virtualization In Development Environments

25

Tips and Tricks

• Host Server– Turn on hardware-assisted virtualization in BIOS

• Virtual Servers– Turn on PING for ICMP on all virtual machines– Install Integration Services on each VPC– Migrations must remove old virtual server

extensions from guest before installing Hyper-V support

Page 26: Best Practices For Using Virtualization In Development Environments

26

Enterprise application concerns

• Exchange 2007• SQL Server 2008• Virtualizable with “best practices”– Hardware assisted virtualization– Spindle isolation

Page 27: Best Practices For Using Virtualization In Development Environments

27

Supported Guest OS’s with Windows Server 2008 R2 Hyper-V RC:

• Windows Server 2000 Server and Advanced Server with SP4 (uniprocessor)• Windows XP SP3 32 bit (uniprocessor)• Windows Vista SP1 32 & 64 bit (uniprocessor) • Windows 7 client 32 & 64 bit (uniprocessor)• Windows 7 client 32 & 64 bit (multiprocessor, two virtual processors)• Windows Server 2003 SP2 32 & 64 bit (uniprocessor)• Windows Server 2003 SP2 32 & 64 bit (multiprocessor, two virtual processors)• Windows Server 2003 R2 SP2 32 & 64 bit (uniprocessor)• Windows Server 2003 R2 SP2 32 & 64 bit (multiprocessor, two virtual processors)• Windows Server 2008 32 & 64 bit (uniprocessor)• Windows Server 2008 32 & 64 bit (multiprocessor, four virtual processors)• Windows Server 2008 R2 32 & 64 bit (uniprocessor)• Windows Server 2008 R2 32 & 64 bit (multiprocessor, four virtual processors)• SUSE Linux Enterprise Server 10 (x86/x64) (uniprocessor, no integration components)

Page 28: Best Practices For Using Virtualization In Development Environments

Development Scenario Demos

Page 29: Best Practices For Using Virtualization In Development Environments

29

Virtual Network and Domain

• Project– 1 Server• Domain controller• Exchange server 2003• COM+ event sinks using exoledb• Windows service for remoting to singleton object for

caching

– 2 Clients• Outlook 2003 and VS 2005• Outlook 2007

Page 30: Best Practices For Using Virtualization In Development Environments

30

Virtual Server with MOSS

• Win 2003 x32 / x64 or Win 2008 x64– Joined to development domain and can be

accessed from any other machines at KMA– SQL on same box or different box–VS 2005 or 2008

• Integration with Development Domain– Group, user and service accounts configured in AD– Exchange server

Page 31: Best Practices For Using Virtualization In Development Environments

31

Microsoft Trial VHDs

• Microsoft Office SharePoint Server 2007 VHD (10/17/2008)– Microsoft® Windows Server® 2003 R2 Enterprise Edition

• Active Directory

– Microsoft SQL Server 2005 Enterprise Edition with SP1– Microsoft Office Professional 2007– Microsoft Office SharePoint Designer 2007– Microsoft Windows SharePoint Services 3.0– Microsoft Office SharePoint Server 2007– Microsoft .NET Framework 2.0– Microsoft .NET Framework 3.0

• Parameters

– 30-day expiration, downloaded size 4G, will require about 10G hard drive space and 1024MB memory, runs on Virtual Server 2005 R2 which is available as free download

• Login Credentials:– Username: Administrator– Password: pass@word1

Page 32: Best Practices For Using Virtualization In Development Environments

Technical Information

Page 33: Best Practices For Using Virtualization In Development Environments

33

Virtual Disk Formats

• Two predominant formats– Microsoft – VHD (also used by XenSource)– VMware – VMDK

• New management utilities can work with both VMWare and Microsoft VPCs

Page 34: Best Practices For Using Virtualization In Development Environments

34

Hardware Concerns

• Hardware concerns (CPU, RAM, hard drive specs, requirement supports hardware virtualization)

• RAM– Lab server overhead = 6% to 20 %– Competing VPC use

• Hard Drive – Redundancy, Speed– Use RAID 1/0 – Avoid Raid 5 due to parity– SATA (Serial ATA)

• CPU – At least dual• Preferably dual power (most likely to fail) and dual NICs• Do NOT use old hardware

Page 35: Best Practices For Using Virtualization In Development Environments

35

Vendors

• EMC: ESX Server or VMWare server (hosted on Windows)

• Microsoft: Hyper-V Server or hosted with Windows 2008 / Windows 7

• Citrix’s XenServer, partnering with Microsoft on management solutions

Page 36: Best Practices For Using Virtualization In Development Environments

36

Virtualization Options with Microsoft

• Servers– Hyper-V Server 2008– Windows Server 2008– Windows Server 2008 R2– Terminal Server

• Windows 7– Virtual PC (RC)– Windows XP Mode (RC)

• Windows Server 2008 and Windows 7– Native VHD Support – Virtual and Physical

Page 37: Best Practices For Using Virtualization In Development Environments

37

Native VHD Support

• Servers and Clients– Windows Server 2008– Windows 7

• Functionality– Create– Manage

• Provides for development and testing on physical or virtual machine

• Can be used to configure clients and servers with multiple boot options

Page 38: Best Practices For Using Virtualization In Development Environments

38

Microsoft Hyper-V Options

Page 39: Best Practices For Using Virtualization In Development Environments

39

Microsoft System Center Virtual Machine Manager 2008 R2

Screenshots from eWeek

Page 40: Best Practices For Using Virtualization In Development Environments

40

Remote Server Hyper-V Administration Tool

• Runs on:– Windows 2008– Windows 7

Page 41: Best Practices For Using Virtualization In Development Environments

41

Windows 7

• Utilities include:– Remote Hyper-V Administration Tool– Virtual PC (RC)– VHD Management using DISKPART and Disk

Management Utility

Page 42: Best Practices For Using Virtualization In Development Environments

42

Resources

• Microsoft Virtualization – Training Portal - http://www.microsoft.com/learning/en/us/training/virtualization.aspx

• Virtualization "How Do I?" Videos - http://technet.microsoft.com/en-us/virtualization/dd353206.aspx

• Virtualization Resources – White papers, solution accelerators, learning

• http://www.microsoft.com/virtualization/resources/default.mspx • Virtualization Licensing for OS and enterprise apps• http://www.microsoft.com/licensing/about-licensing/virtualizatio

n.aspx

• Microsoft Trial VHDs• http://technet.microsoft.com/en-us/bb738372.aspx

Page 43: Best Practices For Using Virtualization In Development Environments

Thank you!