原文はこちら。
https://blogs.oracle.com/WebLogicServer/entry/create_weblogic_server_domain_withOracle WebLogic Server 12.2.1ではMultitenancyをサポートしています。WebLogic Server Multitenancyでは、WebLogic Serverをドメインだけでなく、一つ以上のパーティションを使って構成することができます。パーティションにはWebLogic Server Multitenancyで導入された新たな要素(リソースグループ、リソースグループテンプレート、仮想ターゲットなど)が含まれています。パーティションを持つドメインを構成する場合、通常のWebLogicドメインの構成に比べて追加の手順が必要です。こうした新しいWebLogic Server Multitenancyに関連するコンセプトは、末尾のReferencesセクションに記載のドキュメントをご覧ください。
OracleはFusion Middleware Control(FMWC)で(Restricted JRFテンプレートを使い)WebLogicドメインを作成することを推奨していますが、WLSTを使ってWebLogic Serverこのエントリでは、2個のパーティションを持つWebLogicドメインをWLSTで作成する方法をご紹介します。
Using Fusion Middleware Control to Manage WebLogic Server
http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/wls/12c/manage_wls_fmc/obe.html
Oracle® Fusion Middleware Domain Template Reference 12c (12.2.1)
Oracle Restricted JRF Template
https://docs.oracle.com/middleware/1221/wls/WLDTR/fmw_templates.htm#WLDTR524
Oracle® Fusion Middleware Oracle WebLogic Scripting Tool 12c Release 1 (12.1.1)
Creating WebLogic Domains Using WLST Offline
http://docs.oracle.com/cd/E24329_01/web.1211/e24491/domains.htm#WLSTG156
1.Domain Topology
このエントリでは、以下のような構成のドメインを作成します。- adminという1個の管理サーバと、パーティションcoke、パーティションpepsiがある
- パーティションcokeには、リソースグループcoke-rg1があり、仮想ターゲットcoke-vtに向けられている
- パーティションpepsiには、リソースグループpepsi-rg1があり、仮想ターゲットpepsi-vtに向けられている
- アプリケーションhelloTenant.earをドメイン、パーティションcokeのリソースグループcoke-rg1、パーティションpepsiのリソースグループpepsi-rg1にデプロイする。
- ドメイン
- セキュリティ構成
- レルム:myrealm
- レルム:coke_realm
- レルム:pepsi_realm
- Server: admin(管理サーバ)
- 仮想ターゲット:coke-vt
- 仮想ターゲット:pepsi-vt
- パーティション:coke
- リソースグループ:coke-rg1
- アプリケーションデプロイメント:helloTenant-coke
- デフォルトターゲット:coke-vt
- パーティション:pepsi
- リソースグループ:pepsi-rg1
- アプリケーションデプロイメント:helloTenant-pepsi
- デフォルトターゲット:pepsi-vt
- アプリケーションデプロイメント:helloTenant
2. Create a domain with partitions
上記のトポロジーを有するドメインを作成するには、以下の手順が必要です。- 通常のWebLogicドメインを作成
- ドメインを起動
- ドメインにパーティションを作成
- パーティション用セキュリティレルムを作成
- パーティション用のユーザーを作成
- セキュリティレルムのグループにユーザーを追加
- 仮想ターゲットを作成
- パーティションを作成
- リソースグループの作成
- 仮想ターゲットをデフォルトターゲットに設定
- パーティション用のセキュリティIDD(アイデンティティドメイン)を設定
- サーバを再起動
- パーティションの開始
2.1 Create a traditional WLS domain
構成ウィザードを使って通常のWebLogicドメインを作成することができます。コマンドスクリプトから構成ウィザードを起動します。設定はすべてデフォルトですが、ドメイン名、管理者ユーザー名、パスワードは以下のものを使います。sh $MW_Home/oracle_common/common/bin/config.sh
- ドメイン名:base_domain
- 管理者ユーザ名:weblogic
- 管理者ユーザのパスワード:welcome1
2.2 Start the domain
cd $MW_Home/user_projects/domains/base_domain/ sh startWebLogic.sh
2.3 Create a partition: coke in a domain
WLSTを開始するには以下の手順が必要です。以下のコマンドでWLSTを起動します。管理サーバadminに管理ユーザweblogicとその資格証明を使って接続してから、以下のWLSTコマンドのすべてを実行できます。sh $MW_Home/oracle_common/common/bin/wlst.sh
これで、パーティションcokeのセットアップのためのWLSTコマンド実行の準備ができました。パーティションcokeには以下の設定を使います。connect("weblogic", "welcome1", "t3://localhost:7001")
- パーティション名:coke
- パーティション管理者ユーザ名:mtadmin1
- パーティション管理者ユーザのパスワード:welcome1
2.3.1 Create a security realm for the partition
標準的なWebLogic ServerのAPIを使ってセキュリティレルムを作成します。edit() startEdit() realmName = 'coke_realm' security = cmo.getSecurityConfiguration() print 'realm name is ' + realmName realm = security.createRealm(realmName) # ATN atnp = realm.createAuthenticationProvider( 'ATNPartition','weblogic.security.providers.authentication.DefaultAuthenticator') atna = realm.createAuthenticationProvider( 'ATNAdmin','weblogic.security.providers.authentication.DefaultAuthenticator') # IA ia = realm.createAuthenticationProvider( 'IA','weblogic.security.providers.authentication.DefaultIdentityAsserter') ia.setActiveTypes(['AuthenticatedUser']) # ATZ/Role realm.createRoleMapper( 'Role','weblogic.security.providers.xacml.authorization.XACMLRoleMapper') realm.createAuthorizer( 'ATZ','weblogic.security.providers.xacml.authorization.XACMLAuthorizer') # Adjudicator realm.createAdjudicator('ADJ','weblogic.security.providers.authorization.DefaultAdjudicator') # Auditor realm.createAuditor('AUD','weblogic.security.providers.audit.DefaultAuditor') # Cred Mapper realm.createCredentialMapper( 'CM','weblogic.security.providers.credentials.DefaultCredentialMapper') # Cert Path realm.setCertPathBuilder(realm.createCertPathProvider( 'CP','weblogic.security.providers.pk.WebLogicCertPathProvider')) # Password Validator pv = realm.createPasswordValidator('PV', 'com.bea.security.providers.authentication.passwordvalidator.SystemPasswordValidator') pv.setMinPasswordLength(8) pv.setMinNumericOrSpecialCharacters(1) save() activate()
2.3.2 Add a user and group to the security realm for the partition
ユーザを作成し、ユーザをレルムのセキュリティグループに追加します。このユースケースでは、パーティションcokeの管理ユーザ名とパスワードはmtadmin1 と welcome1です。edit() startEdit() realmName = 'coke_realm' userName = 'mtadmin1' groupName = 'Administrators' print 'add user: realmName ' + realmName if realmName == 'DEFAULT_REALM': realm = cmo.getSecurityConfiguration().getDefaultRealm() else: realm = cmo.getSecurityConfiguration().lookupRealm(realmName) print "Creating user " + userName + " in realm: " + realm.getName() atn = realm.lookupAuthenticationProvider('ATNPartition') if atn.userExists(userName): print "User already exists." else: atn.createUser(userName, '${password}', realmName + ' Realm User') print "Done creating user. ${password}" print "Creating group " + groupName + " in realm: " + realm.getName() if atn.groupExists(groupName): print "Group already exists." else: atn.createGroup(groupName, realmName + ' Realm Group') if atn.isMember(groupName,userName,true) == 0: atn.addMemberToGroup(groupName, userName) else: print "User is already member of the group." save() activate()
2.3.3 Create a virtual target for the partition
この仮想ターゲットは管理サーバをターゲットにします。UriPrefixは /coke です。このurl接頭辞は、WebLogic ServerのMBeanServerへのJMX接続を作成するために使われます。edit() startEdit() vt = cmo.createVirtualTarget("coke-vt") vt.setHostNames(array(["localhost"],java.lang.String)) vt.setUriPrefix("/coke") as = cmo.lookupServer("admin") vt.addTarget(as) save() activate()
2.3.4 Create the partition: coke
パーティション名はcokeです。パーティションcokeを仮想ターゲットcoke-vtにターゲット指定します。edit() startEdit() vt = cmo.lookupVirtualTarget("coke-vt") p = cmo.createPartition('coke') p.addAvailableTarget(vt) p.addDefaultTarget(vt) rg=p.createResourceGroup('coke-rg1') rg.addTarget(vt) realm = cmo.getSecurityConfiguration().lookupRealm("coke-realm") p.setRealm(realm) save() activate()
2.3.5 Setup IDD for the partition
パーティションのプライマリ・アイデンティティドメイン(IDD)を設定します。edit() startEdit() sec = cmo.getSecurityConfiguration() sec.setAdministrativeIdentityDomain("AdminIDD") realmName = 'coke_realm' realm = cmo.getSecurityConfiguration().lookupRealm(realmName) # ATN defAtnP = realm.lookupAuthenticationProvider('ATNPartition') defAtnP.setIdentityDomain('cokeIDD') defAtnA = realm.lookupAuthenticationProvider('ATNAdmin') defAtnA.setIdentityDomain("AdminIDD") # Partition pcoke= cmo.lookupPartition('coke') pcoke.setPrimaryIdentityDomain('cokeIDD') # Default realm realm = sec.getDefaultRealm() defAtn = realm.lookupAuthenticationProvider('DefaultAuthenticator') defAtn.setIdentityDomain("AdminIDD") save() activate()
2.3.6 Restart the Server
セキュリティ設定の変更を反映するため、WebLogic Serverを再起動します。2.3.7 Start the partition
パーティションがリクエストを受け付けるようにするために、以下の手順が必要です。edit() startEdit() partitionBean=cmo.lookupPartition('coke') # start the partition (required) startPartitionWait(partitionBean) save() activate()
2.4 Create another partition: pepsi in a domain
2.3の手順を繰り返し、別のパーティションpepsiを作成します。ただし、以下の値はパーティションcokeと違うものを使います。- パーティション名:pepsi
- パーティション管理者名:mtadmin2
- パーティション管理者のパスワード:welcome2
- セキュリティレルム:pepsi_realm
- アイデンティティドメイン名:pepsiIDD
- 仮想ターゲット名:pepsi-vt
- リソースグループ名:pepsi-rg1
2.5 Deploy User Application
これでドメインが利用できるようになりましたので、アプリケーションのearファイルをデプロイしましょう。今回はhelloTenant.earというアプリケーションをWebLogic Serverドメイン、パーティションcoke、パーティションpepsiにデプロイします。edit() startEdit() deploy(appName='helloTenant',target='admin,path='${path-to-the-ear-file}/helloTenant.ear') deploy(appName='helloTenant-coke',partition='coke',resourceGroup='coke-rg1',path='${path-to-the-ear-file}/helloTenant.ear') deploy(appName='helloTenant-pepsi',partition='pepsi',resourceGroup='pepsi-rg1',path='${path-to-the-ear-file}/helloTenant.ear') save() activate()
2.6 Domain config file sample
すべての手順が完了したら、$DOMAIN_HOME/config/config.xml(ドメイン構成ファイル)にはドメインやパーティションに必要なすべての情報が含まれています。以下はconfig.xmlのパーティションcokeに関連するスニペットの例です。パーティションpepsiの場合、パーティションpepsiに対応する<virtual-target>要素と<partition>要素がconfig.xmlに追加されています。<server> <name>admin</name> <listen-address>localhost</listen-address> </server> <configuration-version>12.2.1.0.0</configuration-version> <app-deployment> <name>helloTenant</name> <target>admin</target> <module-type>ear</module-type> <source-path>${path-to-the-ear-file}/helloTenant.ear</source-path> <security-dd-model>DDOnly</security-dd-model> <staging-mode xsi:nil="true"></staging-mode> <plan-staging-mode xsi:nil="true"></plan-staging-mode> <cache-in-app-directory>false</cache-in-app-directory> </app-deployment> <virtual-target> <name>coke-vt</name> <target>admin</target> <host-name>localhost</host-name> <uri-prefix>/coke</uri-prefix> <web-server> <web-server-log> <number-of-files-limited>false</number-of-files-limited> </web-server-log> </web-server> </virtual-target> <admin-server-name>admin</admin-server-name> <partition> <name>coke</name> <resource-group> <name>coke-rg1</name> <app-deployment> <name>helloTenant-coke</name> <module-type>ear</module-type> <source-path>${path-to-the-ear-file}/helloTenant.ear</source-path> <security-dd-model>DDOnly</security-dd-model> <staging-mode xsi:nil="true"></staging-mode> <plan-staging-mode xsi:nil="true"></plan-staging-mode> <cache-in-app-directory>false</cache-in-app-directory> </app-deployment> <target>coke-vt</target> <use-default-target>false</use-default-target> </resource-group> <default-target>coke-vt</default-target> <available-target>coke-vt</available-target> <realm>coke_realm</realm> <partition-id>2d044835-3ca9-4928-915f-6bd1d158f490</partition-id> <primary-identity-domain>cokeIDD</primary-identity-domain> </partition>
これで、2個のパーティションを持つドメインを作成し、リクエストを受け付ける準備ができました。ユーザーはこのドメインにデプロイしたアプリケーションにアクセスすることができます。WebLogic Server 12.2.1 Multitenancy環境のMBeanServersに登録されたアプリケーションMBeanにアクセスする方法については、以下のエントリをご覧ください。
Application MBeans Visibility in Oracle WebLogic Server 12.2.1
https://blogs.oracle.com/WebLogicServer/entry/application_mbeans_visibility_in_oracle
3. Debug Flags
ドメイン作成時にエラーが発生した場合、以下のデバッグフラグを使って、エラーの切り分けが可能です。- セキュリティレルムの設定に関連するエラーの場合、以下のデバッグフラグを使ってWebLogic Serverを再起動します。
-Dweblogic.debug.DebugSecurityAtn=true -Dweblogic.debug.DebugSecurity=true -Dweblogic.debug.DebugSecurityRealm=true
- ドメインでのBean構成エラーに関連するエラーの場合、以下のデバッグフラグを使ってWebLogic Serverを再起動します。
-Dweblogic.debug.DebugJMXCore=true -Dweblogic.debug.DebugJMXDomain=true
- 編集セッションの問題に関連するエラーの場合、以下のデバッグフラグを使ってWebLogic Serverを再起動します。
-Dweblogic.debug.DebugConfigurationEdit=true -Dweblogic.debug.DebugDeploymentService=true -Dweblogic.debug.DebugDeploymentServiceInternal=true -Dweblogic.debug.DebugDeploymentServiceTransportHttp=true
4. Conclusion
Oracle WebLogic Server 12.2.1のドメインにはパーティションを含めることができます。パーティションを持つドメインを作成するには、通常のWebLogicドメインを作成する手順に加え、さらに追加の手順が必要です。このエントリではWLSTを使ったドメイン作成方法をご紹介しました。パーティション付きのドメイン作成は、Fusion Middleware Controlを使って作成することも可能です。パーティション付きのドメイン作成方法は、Referencesセクションに列挙したドキュメントやエントリをご確認ください。5. References
Oracle® Fusion Middleware Installing and Configuring Oracle WebLogic Server and Coherence 12c (12.2.1)
Creating and Configuring the WebLogic Domain
http://docs.oracle.com/middleware/1221/core/WLSIG/GUID-4AECC00D-782D-4E77-85DF-F74DD61391B4.htm#WLSIG283
Domain Partitions for Multi-tenancy in WebLogic Server 12.2.1
https://blogs.oracle.com/WebLogicServer/entry/domain_partitions_for_multi_tenancy
http://orablogs-jp.blogspot.jp/2015/11/domain-partitions-for-multi-tenancy-in.html
Using Fusion Middleware Control to Manage WebLogic Server
http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/wls/12c/manage_wls_fmc/obe.html
Oracle® Fusion Middleware Installing and Configuring the Oracle Fusion Middleware Infrastructure 12c (12.2.1)
Creating Database Schemas
https://docs.oracle.com/middleware/1221/core/INFIN/GUID-CA80A6E9-8903-4E19-81D7-A3647A11D0A6.htm#INFIN356
Oracle® Fusion Middleware Oracle WebLogic Scripting Tool 12c Release 1 (12.2.1)
Creating WebLogic Domains Using WLST Offline
http://docs.oracle.com/middleware/1221/wls/WLSTG/domains.htm#WLSTG156
Oracle® Fusion Middleware Domain Template Reference 12c (12.2.1)
Oracle Restricted JRF Template
https://docs.oracle.com/middleware/1221/wls/WLDTR/fmw_templates.htm#WLDTR524
Oracle® Fusion Middleware Administering Security for Oracle WebLogic Server 12.2.1 12c (12.2.1)
Configuring Security for a WebLogic Domain
http://docs.oracle.com/middleware/1221/wls/SECMG/conf-security-for-domain.htm#SECMG777
Oracle® Fusion Middleware Deploying Applications to Oracle WebLogic Server 12c (12.2.1)
Understanding WebLogic Server Deployment
https://docs.oracle.com/middleware/1221/wls/DEPGD/understanding.htm#DEPGD114
WebLogic Server Debug Flags
http://weblogic-wonders.com/weblogic/2010/11/18/weblogic-server-debug-flags/
0 件のコメント:
コメントを投稿