martes, 21 de noviembre de 2017

Configuración de Heap Size en WebSphere Applicataion Server CLUSTER usando wsadmin

Configuración de Heap Size en WebSphere Applicataion Server CLUSTER usando wsadmin

Para aquellos casos en donde es importante configurar la memoria inicial o máxima de los miembros de un cluster y no tener que batallar tanto cuando el cluster es demasiado grande, aquí les dejo un script para hacer esto en cuestión de minutos.

Pasos.

1. Crea un archivo llamado modifyHeapsPerCluster.py en el bin del profile del DMGR y agrega las siguientes líneas:
def showClusters():
  clusters=AdminConfig.list('ServerCluster').split(java.lang.System.getProperty("line.separator"))
  print "[INFO] Listing all Clusters . . ."
  for clr in clusters:
    cluster = clr.split('(')
    print " " * 15 + "Cluster Name = " + cluster[0]

def showNodes():
  cells = AdminConfig.list('Cell').split()
  for cell in cells:
    nodes = AdminConfig.list('Node', cell).split()
    lista = ['1','2','3','4','5','6']
    listaNodos = []
    global listaNodos
    num = 0
    for node in nodes:
      nombreNodo = AdminConfig.showAttribute(node, 'name')
      print " " * 15 + nombreNodo + " (" + lista[num] + ")"
      listaNodos.append(nombreNodo )
      num = num + 1

def showClusterMems(clsName):
  print "[INFO] Show Cluster Members: " + clsName
  cluster = AdminConfig.getid("/ServerCluster:" +clsName+"/")
  clusterName = AdminConfig.showAttribute(cluster, "name")
  members = AdminConfig.showAttribute(cluster, "members")
  members = AdminUtilities.convertToList(members)
  global listMemembers
  global listNodeMembers
  listMemembers = []
  listNodeMembers = []
  if len(members) > 0:
    AdminUtilities.infoNotice("cluster " + clusterName + " has %s members" % (len(members)))
    for member in members:
      mname = AdminConfig.showAttribute(member, "memberName")
      nname = AdminConfig.showAttribute(member, "nodeName")
      AdminUtilities.infoNotice("Cluster member: " + mname + " " + nname)
      listMemembers.append(mname)
      listNodeMembers.append(nname)

def modifyHeapsPerCluster():
  showClusters()
  clusterName = raw_input("Introduce the name of the clulster: ")
  showClusterMems(clusterName)
  showNodes()
  nodeName = raw_input("Introduce the name of the node's Cluster: ")
  if ( nodeName == "1" ):
    nodeName = listaNodos[0]
  else:
    nodeName = listaNodos[1]

  cluster = AdminConfig.getid("/ServerCluster:" +clusterName+"/")
  clrtName = AdminConfig.showAttribute(cluster, "name")
  members = AdminConfig.showAttribute(cluster, "members")
  members = AdminUtilities.convertToList(members)
  HeapMin = raw_input("\t Introduce the Heap Min: []: ")
  HeapMax = raw_input("\t Introduce the Heap Max: []: ")
  if len(members) > 0:
    miembros = len(members)
    for member in members:
      mname = AdminConfig.showAttribute(member, "memberName")
      print "[INFO] Changing configuration of instance: " + mname
      serverJVM=AdminConfig.getid('/Node:'+nodeName+'/Server:'+mname+'/')
      jvm = AdminConfig.list('JavaVirtualMachine', serverJVM)
      AdminConfig.modify(jvm, [['maximumHeapSize', HeapMax]])
      AdminConfig.modify(jvm, [['initialHeapSize', HeapMin]])
      AdminConfig.save()

modifyHeapsPerCluster()
Una vez hecho lo anterior ejecutalo de la siguiente manera:


{WAS_DMGR_Profile}/bin/wsadmin.sh -lang jython -f modifyHeapsPerCluster.py
Si tienes habilitada la seguridad y no la tienes configurada en el soap.client.properties te solicitara que introduzcas los datos de usuario y password.

Ejemplo:


/WebSphere85/AppServer/profiles/Dmgr01/bin # ./wsadmin.sh -lang jython -f modifyHEapsPerCluster.py -username wasadmin -password *********

WASX7209I: Connected to process "dmgr" on node lcwacmbanxmx02NodeManager01 using SOAP connector; The type of process is: DeploymentManager

[INFO] Listing all Clusters . . .
Cluster Name = Cluster_sire
Cluster Name = Cluster_webfocus82
Introduce the name of the clulster: Cluster_sire
[INFO] Show Cluster Members: Cluster_sire
Cluster Cluster_sire has 2 members
Cluster member: sire lcwacmbanxmx02Node01
Cluster member: sire_cl2 lcwacmbanxmx02Node01
lcwacmbanxmx02Node01 (1)
lcwacmbanxmx02NodeManager01 (2)
Introduce the name of the node's Cluster: 1
Introduce the Heap Min: []: 256
Introduce the Heap Max: []: 512
Changing configuration of instance: sire
Changing configuration of instance: sire_cl2
Change Complete
NOTA. Recuerda ejecutarlo por cada Nodo de miembros que exista dentro del cluster.

Este script está probado en versiones 6.1,7,8,8.5 y 8.5.5.

Deja tus comentarios.