High Volume Services notes
From Computing Project Repository
| Table of contents |
Terminology
Explain the difference between the following?
- High Performance Computing
- High Volume Services
- High Availability Services
Hardware, software redundancy - clustered environment. Monitoring take action on node/service failure. Load-balancing
HPC
- High Performance Computing*
HPC is the term used to describe the use of networked clusters of computers to take a large computational (usually scientific, number crunching) problem, divide it into to smaller chunks, distribute those chunks to the nodes in the cluster(s), and then solve those chunks in parallel. HPC sometimes requires very high-bandwidth and/or low-latency interconnects between nodes to address the target problems. High Performance computinga also refers to the use of supercomputers and computer clusters that is, computing systems comprised of multiple processors linked together in a single system.
Grid computing - combining resources of (heterogeneous) IT components into one pool of shared resources.
HVS
- High Volume Services*
Applications or services that are designed to handle a large number of requests/operations. This is achieved by implementing strategies to share the volume/load betweeen separete service hosts (load balancing), often based on queuing theory priciples.
HVS is focused on serving large amounts of requests, and therefore scalability. A typical concern here is having appropriately large network throughput but server resources must also be scaled to provide the resources to answer the requests. Load-balancing is often used in this context to attain a high-efficiency processing of requests among a pool of resources. There is often a discussion of certain metric objectives (e.g. response time).
This includes the management of services, the economics and the performance tuning of services. The ability to deliver reliable service levels depends on both the resources that are available in the data centre and the pattern of demand driven by the users.
Can cope with high loads, i.e a webserver which gets alot of requests, may cope with high load using webfarms.
HAS
- High Availability Services*
Applications or services designed for "mission-critical" situations, where it is of the essence that the service always is available for the clients. To achieve this a mixture of redundancy and failure detection are implemented in the system responsible for delivering the service.
Services that have to be redundant. Services that always have to be available. HAS is about ensuring that a service is available according to a certain target service level. This takes the form of redundancy at some level to accommodate for failures of individual components. Load-balancing is often used in this context to route requests to an available server. There is often a discussion of what "available" means in terms of metric goals (e.g. response time) here as well. High availability Service: refers to service offering a high level of service uptime with assured quality.
Also called "RAS" (reliability, availability, serviceability) or "fault resilient," it refers to a multiprocessing system that can quickly recover from a failure. There may be a minute or two of downtime while one system switches over to another, but processing will continue. This is not the same as fault tolerant, in which redundant components are designed for continuous processing without skipping a heartbeat.
High availability also refers to being able to service a component in the system without shutting down the entire operation. See clustering and hot fix. http://www.pcmag.com/encyclopedia_term/0,2542,t=high+availability&i=44246,00.asp This term gets more and more related to Virtual servers it seems. - IBM (http://www-935.ibm.com/services/us/index.wss/offerfamily/its/a1000424) Nice Link: http://www.linuxvirtualserver.org/HighAvailability.html
Resource Sharing
The essence of high performance and therefore high volume is resource management. What resources are being referred to in the names above?
Technologies
We want to utilize/share
- CPU
- Disk
- Memory
- Network
between different tasks/users/processes. What technologies are available to do this in each of the three cases above?
General
P2P - e.g. bittorrent, distributed data dissemination
Live server migration - virtualization for seamless service
Load-balancing clusters operate by having all workload come through one or more load-balancing front ends, which then distribute it to a collection of back end servers. Although they are primarily implemented for improved performance, they commonly include high-availability features as well. Such a cluster of computers is sometimes referred to as a server farm.
The term "Grid Engine" often pops up in this context. Grid engines differs from clusters by being able to work alone (no one element is purely shared), adding power or new items if it needs to
CPU
For sharing CPU, a job distribution system (often associated with HPC clusters) is often used.
- Beowulf cluster
- GridEngine for parallel computing.
- Load balancer to balance requests to multiple servers.
- Multitasking at OS level.
- MPI (Message Passing Interface)
- Parallel systems (blade racks)
- Mainframe computing
- CPU caching
Putting CPUs into a single computer and have all of them work together simultaneously to solve problems. This procedure is now known as parallel computing. Machines providing the highest level of performance today are all parallel computers, not sequential machines.
Disk
- SAN
- NAS
- RAID
Filesystems and filesystem attributes are used to share disks. On a network level, you can create a storage area network or use network-attached storage to provide a single pool of disk to a large number of clients. Various RAID levels can be used to achieve certain results, an example is striping which can improve read/write operations. Distributed storage techniques are in development which some believe hold promise for moving the challenge of storage from the edge into the network.
Distributed filesystems (http://en.wikipedia.org/wiki/Distributed_file_system)
Storage Area Network(SAN) (low level - disk appears as locally attached) nfs/samba (high level - mounted over network) network-attached storage(nas - os provides only filesharing)
http://en.wikipedia.org/wiki/SCSI#SCSI_interface_overview Max devices, speeds etc.
http://en.wikipedia.org/wiki/Fiber_channel Fibre Channel Protocol (FCP) is the interface protocol of SCSI on the Fibre Channel. Topology, Protocols etc.
Network
- Routing policies.
- QoS parameters
- Providing (Provisioning)
- Use the time multiplexing property in ethernet (Maximum transmission unit)
- Gb Ethernet, Infiniband, ++
Might be required to use fast connection such as fiber( connecting to a SAN storage for example). Redundant links.
- SAN (Storage Area Network) - uses a protocol (e.g. ISCSI - SCSI over IP) to make it look as though network disks are attached
Why would we do this? If the internal bus is faster than the IP network? Does size matter?
What are the limits of storage on a regular SCSI bus? See above. But with ISCSI we can have unlimited number. Depends on te implementation of the ISCSI client. In Linux uses 16M for caching which limits the number of devices that can be connected in practice,
We can also use Fibre channel. How does this work?
A SAN is normally connected to a different interface than the regular network. (Not always, but should be?) e.g. ISCSI can run on regular ethernet, so a second net card on the computer. Or fibre interface.
This is a lower level protocol resource management. Looks like a local device to the computer rather than a network service. Here you need something in the kernel to support to this.
- NAS (Network Attached Storage) This is a service running over a regular network protocol, e.g. sambda, NFS, NetApp, Firewire, shared drives.
Normally this would run over the same network interface as normal traffic (but does not have to).
This is more high level resource management. High level service. AFS, DFS. Distributed file system. Don't need anything special in the kernel (except standard service drivers).
Is there a clear distinction between a SAN/NAS?
Backup
SAN is more flexible for backup, since we don't *have* to hvae a filesystem. A NAS would "always" be a mounted filesystem. So we can so "dump" to a SAN?
Server Technology
What is a service?
Buzzword? Usually over network? A service is a "process" at any level .e.g at OS level, or business level? A running application (application level services)? Network level services. A daemon? Work done by one entity for another?
Culture difference -- ISPs think of everythign exxcept the infrastructure as a service. UNix admins think of a service as a daemon (app. service).
We can be flexible.
What is the difference between a server and a workstation?
A workstation needs a graphics card, colour screen, sound, ... keyboard
A server is not necessarily about peformance, but saving money on the above.
So servers are usually more expensive - why? Expensive hardware. (RAM - registered RAM, fault tolerant, faster, error correction) (MTBF longer?) (Disk -- two classes of disk. Disks are tested at the factory and the higher reliability/performance ones are sold differently with higher spec. So we have some guarantees)
Physical size? (Not necessarily). Server - longer lifetime, more fault tolerant, Low level redundancy IBM sell their mainframes for low level redundancy Server serves more people, higher importance (subjective view) Greater requirements for server. Cost - workstation should be (can be) cheaper
Is is question of scale? How often can we afford to replace hardware? If we split into two tiers, servers and workstations, we can change workstations more often (cheaper) than servers.
Is this a strategy for the vendors to sell to us, or a strategy for us to solve our problems?
- Why do we need clusters?
We can extend them rather than replace them. Cheaper. Cost of maintaining a cluster built from ad hoc.
Power supplies - power factors are better for expensive hardware than for
cheap. We can reduce the electricity bill.
What is the reason for server-blade design? What is wrong with a regular PC?
- Blades are small, can fit a lot into a small space
- Hot swappable
- Power distribution (common to all blades in a chassis)
- Common switch, internal network
- We can make local VLANs internally in a chassis, or link to outside network
- Designed for redundancy - two of everything (power, switch, ...)
- Separate network for management console
Bottlenecks?
- Network - sharing common network - how does the speed internally compare to link externally? Gb ethernet? Could be a bottleneck?
What is faster than Gb ether? Infiniband - high speed, short distance. Each technology has its own design trade-offs. Short distance/long distance. PIck a tech that works "Best".
- Disk
- Memory
- CPU
Questions for next time
- Uptime Institution Tier Level System??? Ranking for datacentres?
- VPNs what roles to these play in a data centre?
- What role does a SLA play in data centre?
- How do queues apply? Where are they? Can we use queueing theory?