Saturday, December 19, 2009
I/O data gathering and I/O analysis
Monday, November 30, 2009
Ideas on IT (Infrastructure) vendor selection / How to select an IT (Infrastructure) vendor
This post is about a business aspect of IT Infrastructure. IT vendor selection process is becoming more and more complicated with technology advances and stiff competition between vendors.
Here is sample process I used to pick and choose an IT infrastructure vendor while I was working for a Telecom client.
Architecture Suitability Criteria
Architecture of the Main Solution
Architecture of the Backup Solution
Architecture of the DR Solution
End of Life (EOL) and End of Support (EOS) of systems
Platform and System Familiarity
Vendor Suitability Criteria
Technical Support
Human Resource pool (Technical)
Reference Sites
Past experience with us
Commercial Evaluation Criteria
Hardware and Implementation
Maintenance (5 years NPV)
Implementation Time
Support & Maintenance Mechanism
Support for Version Upgrades and New Modules
Wednesday, November 18, 2009
SAP IT Infrastructure Landscape – Example Design (Cont.)
- N (Eg:- 3) tier architecture
- N (Eg:- 3) systems landscape
- Application load balancing
- High Availability
- Scalability (Horizontal and Vertical)
- Seamless upgrades and expansions
Nice thing about the SAP’s architecture is that, if you size correctly with future buffers, expanding a SAP IT landscape is seamless. Such an example scenario is given here in this post – “SAP IT Infrastructure Landscape – Example Design”
Sun (Solaris) Cluster Compliance
Server (Hardware) Compliance:-
Sun Servers:-
Most of the Sun servers (even some models of Sun Blades) are supported -http://www.sun.com/software/solaris/cluster/specs.xml
Third party (non Sun) Servers:-
According to “Solaris Cluster Open Hardware Program” -http://www.sun.com/software/cluster/ohp/index.jsp
Only a set of “HP ProLiant x64” are supported - http://www.sun.com/software/cluster/ohp/hp_proliant_interop.jsp
In short “Solaris Cluster is currently not supported on IBM, DELL, Intel servers. Only some of the HP ProLiant x64 servers supported” by November 2009.
Storage (Hardware) Compliance:-
Saturday, November 14, 2009
Sample set of parameters - Solaris I/O - UFS Tuning
- set maxusers=2048 <- Number of concurrent users on the system determining the amount of physical memory allocated to the kernel (lot of memory and relatively few running processes can save system memory when the default value of maxusers is reduced)
- set ncsize=12000000 <- Defines the number of entries in the directory name look-up cache(DNLC) , use the kstat -n dnlcstats command to determine when entries have been removed from theDNLC because it was too small
- set maxphys=8388608 <- the maximum size of physical I/O requests. If a driver encounters a request larger than this size, the driver breaks the request into maxphys sized chunks
- set pt_cnt=4096 <- When you want to explicitly control the number of users who can remotely log in to the system.
- set npty=176 <- npty limits the number of BSD ptys
- set sadcnt=8192 <- nautopush should be set to twice sadcnt
- set nautopush=4096 <- Set to twice the value of pt_cnt
- set rlim_fd_max=1048576 <- Hard limit on the open file descripters for a single process
- set autoup=600 <- Controls the frequency in seconds of entire physical memory to be scanned for dirty pages
- set tune_t_fsflushr=1 <-Reduces fsflush daemon overhead
- set ufs <-ufs_HW=67108864 <- Limit the amount of I/O that may be outstanding to a single file on a system-wide basis
- set ufs <-ufs_LW=4194304 <- When ufs_HW bytes are outstanding, I/O requests will sleep until less than ufs_LW bytes are outstanding
- set rlim_fd_cur=524288 <- the "soft" limit on file descriptors that a single process can have open
- set segspt_minfree=12500 <- Identifies pages of system memory that cannot be allocated for ISM shared memory
- set maxpgio=65536 <-maximum number of page I/O requests that can be queued by the paging system
- set fastscan=65536 <- maximum number of pages per second that the system looks at when memory pressure is highest
- set segmap_percent=32 <- Amount of memory used, to hold file system pages, % from the physical memory
Thursday, October 29, 2009
Friday, July 31, 2009
Solaris Cluster and Zones
Summary to remember,
FAILOVER ZONE/HA ZONE:
- zone failover from one cluster node to the other
- application running inside the zone has to switch with the zone
- application monitoring has to be done by SMF inside the zone, Sun Cluster agents are not monitoring the applications (more appropriate for legacy applications with no proven cluster agents)
- It supports branded zones (Solaris 8, Solaris 9 and lx branded zones (Linux branded)) apart from native zone (Solaris 10)
- Read more - http://docs.sun.com/app/docs/doc/819-2664/6n4uhp5gq?a=view
- Example - http://www.sun.com/bigadmin/content/submitted/ha_containers_zfs.jsp
ZONE NODE:
- zones to be treated like physical nodes to be part of Resource Groups
- It is best for applications which are supported with containers and have a Sun Cluster agent
- application running inside the zone can failover to other zone or physical node
- It supports only native zone as a zone node
- it is more useful,
o applications which are scalable and have to hosted exclusively in zones
o application running in a combination of physical nodes and zones
- Read more - http://docs.sun.com/app/docs/doc/819-2969/gcbkf?a=view
ZONE CLUSTER:
- introduces a new brand of zone called "cluster”
- A single physical cluster can be partitioned and many virtual clusters can be created for hosting different applications/isolate the application and data
- Still have a specific usage for Deploying Oracle RAC in Zone Clusters.
- clzonecluster is the utility for configurations
- Read more - http://docs.sun.com/app/docs/doc/820-4677/ghcoa?a=view
Monday, July 27, 2009
LDAP Failover for Messaging Server / Calendar Server / Multi-Plexor / Access Manager / Communications Express / Instant Messaging / Sun Convergence
LDAP Failover Messaging Server 6.x
----------------------------------
Change following parameters,
/opt/SUNWmsgsr/sbin
/opt/SUNWmsgsr/sbin/configutil -o local.ugldaphost -v "ldap1.example.com ldap2.example.com:389"
/opt/SUNWmsgsr/sbin/configutil -o local.service.pab.ldaphost -v "ldap1.example.com ldap2.example.com:389"
/opt/SUNWmsgsr/sbin/configutil -o local.service.pab.alwaysusedefaulthost -v "yes"
/opt/SUNWmsgsr/sbin/imsimta cnbuild
/opt/SUNWmsgsr/sbin/stop-msg
/opt/SUNWmsgsr/sbin/start-msg
LDAP Failover for Calendar Server 6.x
--------------------------------------
Edit the ics.conf file (Eg: /etc/opt/SUNWics5/config/ics.conf)
Change following parameters,
local.authldaphost="ldap1.example.com ldap2.example.com:389"
local.ugldaphost="ldap1.example.com ldap2.example.com:389"
Restart Calendar services:
/opt/SUNWics5/cal/sbin/stop-cal
/opt/SUNWics5/cal/sbin/start-cal
LDAP Failover for Messaging Multi-Plexor 6.x
---------------------------------------------
vi /var/opt/SUNWmsgsr/config/ImapProxyAService.cfg
Change following parameters,
default:LdapUrl "ldap://ldap1.example.com:389 ldap2.example.com:389/o=internet"
vi /var/opt/SUNWmsgsr/config/PopProxyAService.cfg
Change following parameters,
default:LdapUrl "ldap://ldap1.example.com:389 ldap2.example.com:389/o=internet"
/opt/SUNWmsgsr/sbin/stop-msg mmp
/opt/SUNWmsgsr/sbin/start-msg mmp
LDAP Failover for Access Manager 7.x
--------------------------------------
vi /etc/opt/SUNWam/config/serverconfig.xml
Add a line like this after 'Server1' line in the name="default" ServerGroup:
Stop and start the web container
1. Log into amconsole (http://
2. Click on "Service Configuration" tab
3. Click on the triangle next to the "LDAP" Service name
4. Scroll down to "Secondary LDAP Server:" in the right-hand pane
5. Add the server ldap2.example.com:389, click add, then scroll up and click 'Save'
6. Click on the "Identity Management" tab
7. From the drop-down box in the left-hand menu, select "Services"
8. Click on the triangle next to the "LDAP" Service name
9. Scroll down to "Secondary LDAP Server:" in the right-hand pane
10. Add the server ldap2.example.com:389, click add, then scroll up and click 'Save'
LDAP Failover for Communications Express (UWC)
-----------------------------------------------
vi /var/opt/SUNWuwc/WEB-INF/config/uwcauth.properties
Change following parameters,
ldapusersession.ldaphost = ldap1.example.com,ldap2.example.com:389
Stop and start the web container
Communications Express (UWC) - Addressbook
Edit /var/opt/SUNWuwc/WEB-INF/config/corp-dir/db_config.properties
Change following parameters,
defaultserver.ldaphost=ldap1.example.com,ldap2.example.com:389
Edit /var/opt/SUNWuwc/WEB-INF/config/ldappstore/db_config.properties
Change following parameters,
defaultserver.ldaphost=ldap1.example.com,ldap2.example.com:389
LDAP Failover for Instant Messaging 7.x
----------------------------------------
No changes needed if Access Manager is configured for Authentication and Configuration storage.
Note: User and Group lookup functionality will be non-operational whilst the primary LDAP server is unavailable.
If direct LDAP authentication and local storage of configuration is used, then LDAP fail-over support is not available. LDAP fail-over support is scheduled for the next release.
LDAP Failover for Delegated Administrator 6.x
----------------------------------------------
Delegated Administrator 6.x does not support LDAP failover.
LDAP Failover for Sun Convergence 6.x
--------------------------------------
To configure Convergence for LDAP failover, type the following command:
iwcadmin -u
If your LDAP hosts are configured for SSL, all the failover LDAP servers in the failover mechanism are also in SSL mode.
Each host does not have a separate SSL flag. All the LDAP servers should have the same privileged userid and password.
All the LDAP servers should run in Master-Master replication mode.
HA Zpool in Sun Cluster
----------------
zpool create store-zpool /dev/did/dsk/d5s2
(d5 is the did number of the disk device to use in zpool)
Create file systems required in the above pool, set all settings like size, compression ..etc (zfs properties, see man zfs)
---------------------------------------------------------------------------------------------------------------------------
zfs create store-zpool/msg-config
zfs set mountpoint=/jes/mail/config store-zpool/msg-config
zfs create store-zpool/cal-config
zfs set mountpoint=/jes/cal/config store-zpool/cal-config
Create the resource group
---------------------------
clresourcegroup create store-rg
(store-rg is the name of the resource group)
Register the resource type for Highly Available Storge into Sun Cluster
-----------------------------------------------------------------------
clresourcetype register SUNW.HAStoragePlus
Create the resource
---------------------
clresource create -g store-rg -t SUNW.HAStoragePlus -p Zpools=store-zpool store-fs-rs
(store-fs-rs is the resource name)
Online the resource/resource group
-----------------------------------
clresourcegroup manage store-rg
clresourcegroup online store-rg
Wednesday, July 8, 2009
Tuning UFS
----------------
All the tuning parameters must be verified against tuning parameter guides of respective OS versions.
Look for “Solaris Tunable Parameters” in docs.sun.com for details, following are some of the tips for UFS.
• forcedirectio — File systems were mounted with forcedirectio enabled.
The use of direct I/O is appropriate for sequential I/O on very large files, especially
files that are significantly larger than an operating system’s RAM file cache. This can
improve performance by reducing the overhead of a file cache. Direct I/O is not
recommended for all workloads, for instance operations with random I/O patterns
(such as sorts) for the most part are much faster with a file cache. A file cache is a
primary mechanism to hide disk latency, so by default it is always on.
forcedirectio
• maxphys —The maxphys parameter in the /etc/system file, which controls
the maximum number of bytes that a device driver read or writes at any one time
was modified from the default value of 128K to 8 MB by adding the following line:
set maxphys=0x800000
• ssd_max_xfer_size — The Fibre Channel disk maximum transfer parameter
was modified to 8 MB to reflect the change in maxphys. The ssd driver enables
large transfers for a specific file by checking the ssd_max_xfer_size definition
in the /kernel/drv/ssd.conf file. If this definition does not exist, the driver
uses the default value, which is 1024 x 1024 bytes. The following line needs to added
to the /kernel/drv/ssd.conf file.
ssd_max_xfer_size=0x800000;
• sd_max-xfer_size — The SCSI disk maximum transfer parameter was modified
to 8 MB to correspond with maxphys. This parameter works similarly to the Fibre
Channel disk maximum transfer parameter. The following line needs to be added to
the /kernel/drv/sd.conf file.
sd_max_xfer_size=0x800000;
• To increases about n% of RAM available for file system buffer cache instead of the default of 12%.
segmap_percent=n
• If ufs_WRITES is non-zero, the number of bytes outstanding for writes on a file is checked.
See ufs_HW subsequently to determine whether the write should be issued or should be deferred
until only ufs_LW bytes are outstanding. The total number of bytes outstanding is tracked
on a per-file basis so that if the limit is passed for one file, it won't affect writes to other files.
ufs:ufs_WRITES=0
• In order to put the full contents of the large into the filesystem cache,
we need to make sure the filesystem cache is large enough to hold the file and we need to adjust
freebehind to allow ungoverned population of the filesystem cache
ufs:freebehind=0
OS is 64-bit or 32-bit ? , Kernel Compliant ?
--------
# isainfo -v
64-bit sparcv9 applications
32-bit sparc applications
Which Architecture is booted ?
--------------------------------------
# isainfo -kv
64-bit sparcv9 kernel modules
# isalist - display the native instruction sets executable on this platform
# uname -a
UltraSparc processors are capable of 64-bit computing, the OS release level may be the limiting factor
SunOS5.7 or greater is 64-bit compliant
Solaris 2.7 or greater is 64-bit compliant
AIX
----
# getconf -a grep KERN
KERNEL_BITMODE: 64
or
# file /usr/lib/boot/unix*
/usr/lib/boot/unix_64
Linux
------
# uname -a
x86_64 x86_64 x86_64 GNU/Linux or ia64 ia64 ia64 GNU/Linux
------ -----
Windows
-------
Start -> Run, and type dxdiag
x64_edition
Mac OS
-------
select About This Mac from the Apple menu
Mac OS X 10.4 offers 64-bit support to console applications
Thursday, June 4, 2009
detailed statistics on the HBA
New fcinfo
--------------
(root)> fcinfo hba-port -l
HBA Port WWN: 210100e08ba0147a
OS Device Name: /dev/cfg/c4
Manufacturer: QLogic Corp.
Model: 375-3108-xx
Firmware Version: 3.3.26
FCode/BIOS Version: fcode: 1.13;
Type: N-port
State: online
Supported Speeds: 1Gb 2Gb
Current Speed: 2Gb
Node WWN: 200100e08ba0147a
Link Error Statistics:
Link Failure Count: 0
Loss of Sync Count: 0
Loss of Signal Count: 0
Primitive Seq Protocol Error Count: 0
Invalid Tx Word Count: 0
Invalid CRC Count: 0
(root)> fcinfo remote-port -p 210100e08ba0147a
Remote Port WWN: 50060482d52d2e76
Active FC4 Types: SCSI
SCSI Target: yes
Node WWN: 50060482d52d2e76
Remote Port WWN: 50060e8004769000
Active FC4 Types: SCSI
SCSI Target: yes
Node WWN: 50060e8004769000
Check it out! Its the same 50060482d52d2e76 we saw twice before with the WWN of the port we’re plugged into the fabric with.
Throw in a -s, and it’ll return all SCSI targets with their LUN Number.
(root)> fcinfo remote-port -p 210100e08ba0147a -s
Remote Port WWN: 50060482d52d2e76
Active FC4 Types: SCSI
SCSI Target: yes
Node WWN: 50060482d52d2e76
LUN: 0
Vendor: EMC
Product: SYMMETRIX
OS Device Name: /dev/rdsk/c4t50060482D52D2E76d0s2
LUN: 69
Vendor: EMC
Product: SYMMETRIX
OS Device Name: /dev/rdsk/c20t60060480000190100665533030344539d0s2
LUN: 70
Vendor: EMC
Product: SYMMETRIX
OS Device Name: /dev/rdsk/c20t60060480000190100665533030344639d0s2
LUN: 71
Vendor: EMC
Product: SYMMETRIX
OS Device Name: /dev/rdsk/c20t60060480000190100665533030353039d0s2
LUN: 72
Vendor: EMC
Product: SYMMETRIX
OS Device Name: /dev/rdsk/c20t60060480000190100665533030353139d0s2
LUN: 73
Vendor: EMC
Product: SYMMETRIX
OS Device Name: /dev/rdsk/c20t60060480000190100665533030353239d0s2
Old commands
--------------
To find HBA WWPN/WWN:
1) luxadm –e port
2) luxadm –e dump_map /dev/pci@6,400/SUNW,qlc@2/fp@0,0:devctl
3) grep qlc /etc/path_to_instgrep 6,400
4) cfgadm –al
5) cfgadm –al –o show_FCP_dev
Tuesday, May 12, 2009
steps to resize vxfs,ufs file systems on Veritas volumes
-----------------------------------------------------------
fsadm -F vxfs [-b newsize] [-r rawdev] mount_point
1. Verify free space on underlying device:
# vxdg -g "datavol" free
2. Expand the volume using vxassist:
# vxassist -g "datadg" growto "myvol" "newsize"
example: #vxassist -g testdg growto datavol 1024000
3. Expand the file system using fsadm:
# fsadm -F vxfs -b "newsize" \-r /dev/vx/rdsk/testdg/datavol /datavol
4. Verify that the file system was resized by using df:
# df -k /datavol
for ufs: file system growing
-------------------------------------------------------
# vxresize -b -F ufs -g "name_dg" "volume" +"MB"
example:
# vxresize -b -F ufs -g rootdg rootvol1 +20000m
# vxresize -g mitdg -F ufs myvol1 +1g
Tuesday, March 24, 2009
Steps to configure SSL for Sun Java Enterprise System (messaging and web servers)
Generate CSR for messaging server
--------------------------------------------------------------------------------------------
/jes/opt/SUNWmsgsr/sbin/msgcert request-cert --name netra.millenniumit.com --org millenniumit --org-unit eng_dept --city colombo --country LK -F ascii -o /tmp/27-06-08-request-cert
Add New Cert [ Eg:- Take netscape --> apache from the go-daddy or Thawate or any other CA ]
--------------------------------------------------------------------------------------------
/jes/opt/SUNWmsgsr/sbin/msgcert add-cert -C Server-Cert /mit/do_config_here/SSL_Certs_Godaddy/msg/2008/netra.millenniumit.com.crt
Make SSL for Sun Java Webserver
###################################################
Go to the admin-server http://host.domain.com:
then renew cert there oR you can add new cert matching old CSR OR you can generate a new CSR for new cert and then install it
Thursday, February 12, 2009
Create a global file system using SVM in Sun cluster 3.2
--------------------------------------------------------------
--------------------------------------------------------------
01 Create the metaset
--------------------------------------------------------
# metaset -s
Eg:-
# metaset -s app-dg -a -h phys-schost-1 phys-schost-2
# metaset -s
Eg:-
# metaset -s app-dg
02 Identify the disk device to add to metaset
--------------------------------------------------------
# cldevice show grep Device (or use # didadm -L)
Eg:-
# cldevice show grep Device
DID Device Name: /dev/did/rdsk/d1
Full Device Path: app-dg:/dev/rdsk/c0t0d0DID Device Name: /dev/did/rdsk/d2
Full Device Path: app-dg:/dev/rdsk/c0t6d0DID Device Name: /dev/did/rdsk/d3
03 Make sure just created metaset switches between nodes
---------------------------------------------------------
# cldegivegroup switch -n
Eg:-
# cldegivegroup switch -n phys-schost-1 app-dg
# cldegivegroup switch -n phys-schost-2 app-dg
04 Add just identified disk device to metaset
---------------------------------------------------------
# metaset -s
Eg:-
# metaset -s app-dg -a /dev/did/rdsk/d1 /dev/did/rdsk/d2
# metaset -s
Eg:-
# metaset -s app-dg
05 Add disk configuration for recording/creating purpose
----------------------------------------------------------
Eg:-
# vi /etc/lvm/md.tab (Edit in all nodes)
app-dg/d0 -m app-dg/d10 app-dg/d20app-dg/d10 1 1 /dev/did/rdsk/d1s0app-dg/d20 1 1 /dev/did/rdsk/d2s0
06 Create meta devices in the metaset
----------------------------------------------------------
Eg:-
# metainit -s app-dg -a
07 Add mediator hosts (if mediators required only)
----------------------------------------------------------
Eg:-
phys-schost# metaset -s app-dg -a -m phys-schost-1
phys-schost# metaset -s app-dg -a -m phys-schost-2
08 Create pxfs file system and mount
----------------------------------------------------------
Eg:-
phys-schost# newfs /dev/md/app-dg/rdsk/d1
...
phys-schost# mkdir -p /global/oracle (Make in all the nodes)
phys-schost# vi /etc/vfstab (Edit in all nodes)
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
/dev/md/app-dg/dsk/d1 /dev/md/app-dg/rdsk/d1 /global/oracle ufs 2 no global,logging
...
phys-schost# sccheck
phys-schost# mount /global/oracle
phys-schost# mount
Friday, January 23, 2009
Cluster Interconnect redundancy for Oracle RAC - Unix/Solaris OS
If the RAC nodes are also Sun Cluster nodes,
clprivnet0 interface can be used for RAC interconnects as well with inbuilt redundancy.
Eg:-
clprivnet0: flags=1009843
ether 0:0:0:0:0:1
# cat /etc/hosts
# Internet host table
#
::1 localhost
127.0.0.1 localhost
192.168.2.125 node1 node1.domain.lk loghost
192.168.2.126 node2 node2.domain.lk
# Oracle RAC Public
192.168.2.129 ora-vip-1
192.168.2.130 ora-vip-2
# Oracle RAC Interconnects
172.16.4.1 ora-prip-1
172.16.4.2 ora-prip-2
Else we have to use Solaris level network redundancy.