Everytime I work on new project there is a need of creation of the clustered domain. From my past experiences collected all basic requirements together list them over here.
- AdminServer configuration includes Name, Listen Address, ListenPort
- User credentials username, password
- After writing basic domain going for create machine which include Name, type of machine
- Nodemaager includes NMTypes such as plain, ssl, hosted node, nodemanager port
- Managed servers have Name, ListenAddress, ListenPort, set machine
- Cluster includes name, ClusterAddress, Servers part of the cluster interesting part here
Assumptions for this task:
In the script as per my convenience some of them are hardcoded, My hardcoded values:
| WLST Configuring WebLogic Cluster Domain |
In the script as per my convenience some of them are hardcoded, My hardcoded values:
- Managed Server list
- Cluster list
In this script lots of Python sequence functions are used.
Lets begin the fun of WLST HERE...
- List index,
- Dictionary keys
- String startwith
Lets begin the fun of WLST HERE...
# purpose: Create the domian with the one Admin Server along with the
# two managed servers in each cluster. app_cluster, web_cluster
# Assumption here all managed servers runs on the same machine
# Modified date: 07-April-2017
# File name : create_clusterdomain.py
# Dependencies : cluster_domain.properties
# Note this names of managed servers, cluster, hostname all hard coded
#
def printline(s):
print "-"*10 + s
loadProperties('/u01/app/software/scripts/pybin/cluster_domain.properties')
# Created a Cluster and assaign the servers to that cluster
# Create a domain from the weblogic domain template
WLHOME=os.environ["WL_HOME"]
readTemplate(WLHOME+'/common/templates/wls/wls.jar')
printline("reading template completed")
# Configure the Administration Servers with out using SSL Port
cd('Servers/AdminServer')
set('ListenAddress',WLSAdminIP)
set('ListenPort', int(AdminPort))
printline("AdminServer ListenAddress, port set")
cd('/')
cd('Security/base_domain/User/weblogic')
cmo.setPassword(AdminPasswd)
printline("User credentials set")
setOption('OverwriteDomain', 'true')
writeDomain(DomainPath+'/'+DomainName)
printline("Domain creation done.")
closeTemplate()
readDomain(DomainPath+'/'+DomainName)
machines={'myM100':'192.168.33.100', 'myM110':'192.168.33.110'}
for m in machines.keys():
cd('/')
create(m, 'UnixMachine')
cd('Machine/' + m)
create(m, 'NodeManager')
cd('NodeManager/' + m)
set('ListenAddress', machines[m])
set('NMType','ssl')
# Create the Managed Servers and configuration them
ManagedServerList=['app01','app02','web01','web02']
app_ca=""
web_ca=""
for s in ManagedServerList:
cd('/')
create(s,'Server')
cd('Server/'+s)
i=ManagedServerList.index(s)
lp=8101+i
set('ListenPort', int(lp))
j=int(s[-1])
m=machines.keys()[j-1]
set('ListenAddress', machines[m])
set('Machine', m)
if s.startswith('app') :
if j%2==0:
app_ca+=','
app_ca+=machines[m]+':'+str(lp)
elif s.startswith('web'):
if j%2==0:
web_ca+=','
web_ca+=machines[m]+':'+str(lp)
printline("Managed server :"+s+" created")
printline("configured managed servers done.")
printline("app cluster address:"+app_ca)
printline("Web cluster address:"+web_ca)
# Create and Configure a Cluster and assian the Managed Servers to that cluster
clusters={'app_clustr1':'app01,app02', 'web_clustr1':'web01,web02'}
clstrs=clusters.keys()
for c in clstrs:
cd('/')
create(c,'Cluster')
assign('Server', clusters[c],'Cluster', c)
cd('Clusters/'+c)
set('ClusterMessagingMode','multicast')
if c.startswith('app'):
set('ClusterAddress',app_ca)
elif c.startswith('web'):
set('ClusterAddress',web_ca)
set('MulticastAddress','237.0.0.101')
set('MulticastPort',7200+clstrs.index(c))
printline("cluster "+c+" created")
printline("Configured clusters and assigned managed servers done.")
#Write the domain and Close the domain template
updateDomain()
closeDomain()
printline("Task completed successfully, exiting!!!")
exit()
Now the properties file which you can enhance with your limitations
WLSAdminIP=192.168.33.100 AdminPort=8001 AdminPasswd=welcome1 DomainPath=/u01/app/oracle/domains DomainName=uat_domain
Lets have the execution screen for you: