PivotalGemFireregforPivotalCloudFoundry17
copyCopyrightPivotalSoftwareInc2013-2018
234
1215151516162023254040404141414244464646
TableofContents
TableofContentsPivotalGemFireforPivotalCloudFoundryReleaseNotesforGemFireforPivotalCloudFoundryOverviewInstallingGemFireforPivotalCloudFoundryPrerequisitesServiceConfigurationDefaultsInstallationStepsSelf-SignedandInternalSSLCertificatesCreatingGemFireServicePlansApplicationSecurityGroupsUsingGemFireforPivotalCloudFoundryUsingtheGemFireforCloudFoundryCLIPlug-inInstallationOverviewBrokerHTTPUsernameandPasswordexport-gemfirerestart-gemfireshow-wan-config-urlTroubleshootingUninstallingGemFireforPivotalCloudFoundryPrerequisitesUninstalling
copyCopyrightPivotalSoftwareInc2013-2018 2 17
PivotalGemFireforPivotalCloudFoundry
ThisdocumentationdescribeshowtoinstallconfigureanduseGemFireforPivotalCloudFoundry (PCF)
ProductSnapshotCurrentGemFireforPivotalCloudFoundryDetails
Version170ReleaseDate19thSeptember2016SoftwarecomponentversionGemFire821SpringDataGemFire182Java8(JDKJRE8u60)CompatibleOpsManagerVersion(s)17x18xCompatibleElasticRuntimeVersion(s)17x18xCompatibleJavaBuildpackVersion(s)36371vSpheresupportYesAWSsupportYesIPSecsupportYes
UpgradingtotheLatestVersionThisversionofPivotalGemFireforPivotalCloudFoundrysupportsupgradingfromallthepreviousversionsoftheproductRunningserviceinstancesareautomaticallyupgradedonenodeatatimeIfyouconfiguredyourclusterswithdataredundancythentheupgradeprocessrequiresnodowntimeandresultsinnodataloss
NoteUpgradesfromAlphaorBetaversionsofthesoftwarearenotsupported
DocumentationIndexThedocumentationcontainsthefollowingtopics
ReleaseNotes
Overview
InstallingGemFireforPivotalCloudFoundry
UsingGemFireforPivotalCloudFoundry
Troubleshooting
FormoreinformationaboutPivotalGemFireseethePivotalGemFireDocumentation
FormoreinformationaboutPivotalCloudFoundryseethePivotalCloudFoundryDocumentation
NOTEThisproducthasbeendiscontinued
copyCopyrightPivotalSoftwareInc2013-2018 3 17
ReleaseNotesforGemFireforPivotalCloudFoundry
OverviewGemFireforPivotalCloudFoundry (PCF)supportsthedeploymentofmultiplePivotalGemFireclusterconfigurationstoPCFtosupportGemFireapplicationdevelopmentanddeploymentGemFireforPCFenablesadministratorstocustomizethreedifferentclusterconfigurationstoprovidecoarsecontroloverthenumberoflocatorsandserversavailableineachGemFireinstanceInadditiondeveloperscancustomizetheGemFireinstancethatisboundtotheirappusingGemFireclusterconfigurationcommandsoranewCloudFoundryCLIinterface
YourfeedbackiswelcomePleaseprovideanybugsfeaturerequestsorquestionseithertoPivotalCustomerSupportathttpssupportpivotalio oremailpivotal-cf-feedbackpivotalio
v1720
ReleaseDate30thJanuary2017
NewinthisRelease
Securityfixes
Runsgfshprocessasthe vcap userinsteadofthe root user
v1660
ReleaseDate30thJanuary2017
NewinthisRelease
Securityfixes
Runsgfshprocessasthe vcap userinsteadofthe root user
v1710
ReleaseDate29thDecember2016
NewinthisRelease
StemcellAWS32336patchesUbuntuCVEs
StemcellAzure32337patchesUbuntuCVEs
Securityfixes
RemovepublicroutethatexposedWANreplicationcredentials[CVE-2016-8220]Addauthenticationtobrokerendpoints[CVE-2016-9880]
v1650
copyCopyrightPivotalSoftwareInc2013-2018 4 17
ReleaseDate29thDecember2016
NewinthisRelease
StemcellAWS32336patchesUbuntuCVEs
StemcellAzure32337patchesUbuntuCVEs
Securityfixes
RemovepublicroutethatexposedWANreplicationcredentials[CVE-2016-8220]Addauthenticationtobrokerendpoints[CVE-2016-9880]
v1640
ReleaseDate11thNovember2016
Newinthisrelease
Bugfixes
Upgradedgolangtov17
v1630
ReleaseDate28thOctober2016
Newinthisrelease
StemcellAWS323217patchesUbuntuCVEs
CompatibilityfixesforPCFv17runningonvSphereandAzure
v1700
ReleaseDate19thSeptember2016
NewinthisRelease
CompatibilityreleaseforPCFv17andPCFv18TheGemFireforPCFservicenowinstallsonbothPCFv17andPCFv18withoutsupportforspecificfeaturessuchasmultipleavailabilityzones
IPsecsupportTheGemFireforPCFtilenowsupportsIPsec
LogformatchangedfromfreetexttoJSON
Bugfixes
DBsynchissuesUpgradedgolangtov17UsecryptolibraryforcertificatechaindiscoveryUseofCF_DIAL_TIMEOUTServiceinstanceroutearenowuniqueacrossorgsandspaces
StemcellAWS323217patchesUbuntuCVEs
StemcellAzure323217patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xv35xToresolvethisusethelatestJavabuildpack
CurrentlytilesupportsonlyasingleAvailabilityZone(AZ)
copyCopyrightPivotalSoftwareInc2013-2018 5 17
v162
ReleaseDate28thJuly2016
NewinthisRelease
CompatibilityreleaseforPCFv17TheGemFireforPCFservicenowinstallsonPCFv17withoutsupportforPCFv17ndashspecificfeaturessuchasmultipleavailabilityzones
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34x35xToresolvethisusethelatestJavabuildpack
v161
ReleaseDate22ndJuly2016
NewinthisRelease
StemcellAWS323213patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34xand35xToresolvethisupdateJavabuildpackto36 InJavabuildpack34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1600
ReleaseDate31stMay2016
NewinthisRelease
StemcellAWS32324patchesUbuntuCVEs
StemcellAzure32325patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1500
ReleaseDate9thMay2016
NewinthisRelease
ThepackagedGemFireisupgradedfromv8205tov82014
The enable-network-partition-detection propertyisnowenabled topreventagainstdatacorruptioninsplit-brainscenarios
Clusterstabilityhasbeenimprovedduringrestartsandduringserviceinstancedeletions
Defaulttimeoutof cf restart-gemfire hasbeenincreasedfrom120secondsto900secondstoaccommodateslower-than-expectedstartupofserversandlocators
copyCopyrightPivotalSoftwareInc2013-2018 6 17
WhenrunningonAzureGemFireserverswillhaveredundancyzones tieddirectlytoAzurersquosfaultdomains sothatredundancyforpartitionedregionsissatisfiedacrossmultiplevirtualserverracks
The cf export-gemfire commandnowgivesfeedbackaboutmissingargumentsmakingiteasiertoexportyourGemFirelogsclusterconfigsandproperties
UpgradeWarningDowntimeRequired
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeployment
Sincethe enable-network-partition-detection=true propertymustbesetontheentireclusteratthesametimeweareunabletodoarollingupgradePreviouslydeployedappsandserviceinstanceswillcontinuetofunctionnormallyaftertheupgradethoughGemFireforPCFwillbeunavailableduringtheupgrade
ForOpsManager-deployedtiles
1 Uploadthev1500GemFireforPCFtiletoOpsManager
2 UnderAvailableProductsgtPivotalGemFireclickAdd
3 boshtarget yourOpsManager-deployedboshdirector
4 boshstop yourpreviouslydeployedGemFireforPCFtileThiswillstoptheGemFireforPCFservicebrokerandallserviceinstances
5 InOpsManagerclickApplyChanges
Forbosh-deployedreleases
1 bosh upload thereleasescontainedinthistile
2 bosh stop yourexistingGemFiredeployment
3 bosh deploy themanifestcontainedinthistile
4 bosh start yournewdeployment
copyCopyrightPivotalSoftwareInc2013-2018 7 17
KnownIssuesandLimitations
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeploymentasdetailedintheprevioussection
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1400
ReleaseDate4thApril2016
NewinthisRelease
AddssupportforusingCLIpluginwithahttpproxyToenableproxyusagefollowthesameinstructionsfortheCLI
EnablesbestpracticeOStuningsettingsforserverandlocatorVMsIncludessettingsfor
fsfile-max
vmswappiness
netcoresomaxconn
netcorenetdev_max_backlog
netcorermem_max
netcorewmem_max
netipv4tcp_wmem
netipv4tcp_rmem
netipv4tcp_syncookies
netipv4tcp_max_syn_backlog
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1300
ReleaseDate18thMarch2016
NewinthisRelease
Addsupportforasynchronousserviceinstanceallocationanddeallocation
AddbasicauthforGemfireagentendpoints
Improveerrorhandlingandreportingduringserviceinstancedeallocation
Includestacktracesinerrorlogsfortheservicebroker
IntroduceloglevelsfortheservicebrokerFornowtheyareonlyconfigurableatthereleaselevelandsetto info bydefaultTheyarenotexposedinthetileatthispoint
Increasethedefaultlimitforfiledescriptorsto32000fortheGemFireVM
EnsurethattheJVMis kill edwhenitisOutofMemory
Upgradestemcellto314610patchingUSN-2929-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
copyCopyrightPivotalSoftwareInc2013-2018 8 17
v1230
ReleaseDate4thFebruary2016
NewinthisRelease
Stemcell31466patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1220
ReleaseDate22ndJanuary2016
NewinthisRelease
Stemcell31465resolvesCVE-2016-0728
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1210
ReleaseDate12thJanuary2016
NewinthisRelease
Stemcell31462resolvesCVEUSN-2857-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1200
ReleaseDate1stDecember2015
NewinthisRelease
SupportforGemFiremulti-site(WAN)replication
SupportfortheldquoTrustedCertificatesrdquofeatureinOpsManagerThecertificatesfromldquoTrustedCertificatesrdquoaredeployedtoallGemFirenodesandtotheGemFireservicebrokerNoteonself-signedandinternalCAsignedcertificatesIfyouareusingaself-signedcertificateoracertificatesignedbyaninternalorothernotknowncertificateauthority(CA)youmustaddthecertificate(orcertificatechain)totheldquoTrustedCertificatesrdquoinOpsManager
GemFireupgradedtov8205
copyCopyrightPivotalSoftwareInc2013-2018 9 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
234
1215151516162023254040404141414244464646
TableofContents
TableofContentsPivotalGemFireforPivotalCloudFoundryReleaseNotesforGemFireforPivotalCloudFoundryOverviewInstallingGemFireforPivotalCloudFoundryPrerequisitesServiceConfigurationDefaultsInstallationStepsSelf-SignedandInternalSSLCertificatesCreatingGemFireServicePlansApplicationSecurityGroupsUsingGemFireforPivotalCloudFoundryUsingtheGemFireforCloudFoundryCLIPlug-inInstallationOverviewBrokerHTTPUsernameandPasswordexport-gemfirerestart-gemfireshow-wan-config-urlTroubleshootingUninstallingGemFireforPivotalCloudFoundryPrerequisitesUninstalling
copyCopyrightPivotalSoftwareInc2013-2018 2 17
PivotalGemFireforPivotalCloudFoundry
ThisdocumentationdescribeshowtoinstallconfigureanduseGemFireforPivotalCloudFoundry (PCF)
ProductSnapshotCurrentGemFireforPivotalCloudFoundryDetails
Version170ReleaseDate19thSeptember2016SoftwarecomponentversionGemFire821SpringDataGemFire182Java8(JDKJRE8u60)CompatibleOpsManagerVersion(s)17x18xCompatibleElasticRuntimeVersion(s)17x18xCompatibleJavaBuildpackVersion(s)36371vSpheresupportYesAWSsupportYesIPSecsupportYes
UpgradingtotheLatestVersionThisversionofPivotalGemFireforPivotalCloudFoundrysupportsupgradingfromallthepreviousversionsoftheproductRunningserviceinstancesareautomaticallyupgradedonenodeatatimeIfyouconfiguredyourclusterswithdataredundancythentheupgradeprocessrequiresnodowntimeandresultsinnodataloss
NoteUpgradesfromAlphaorBetaversionsofthesoftwarearenotsupported
DocumentationIndexThedocumentationcontainsthefollowingtopics
ReleaseNotes
Overview
InstallingGemFireforPivotalCloudFoundry
UsingGemFireforPivotalCloudFoundry
Troubleshooting
FormoreinformationaboutPivotalGemFireseethePivotalGemFireDocumentation
FormoreinformationaboutPivotalCloudFoundryseethePivotalCloudFoundryDocumentation
NOTEThisproducthasbeendiscontinued
copyCopyrightPivotalSoftwareInc2013-2018 3 17
ReleaseNotesforGemFireforPivotalCloudFoundry
OverviewGemFireforPivotalCloudFoundry (PCF)supportsthedeploymentofmultiplePivotalGemFireclusterconfigurationstoPCFtosupportGemFireapplicationdevelopmentanddeploymentGemFireforPCFenablesadministratorstocustomizethreedifferentclusterconfigurationstoprovidecoarsecontroloverthenumberoflocatorsandserversavailableineachGemFireinstanceInadditiondeveloperscancustomizetheGemFireinstancethatisboundtotheirappusingGemFireclusterconfigurationcommandsoranewCloudFoundryCLIinterface
YourfeedbackiswelcomePleaseprovideanybugsfeaturerequestsorquestionseithertoPivotalCustomerSupportathttpssupportpivotalio oremailpivotal-cf-feedbackpivotalio
v1720
ReleaseDate30thJanuary2017
NewinthisRelease
Securityfixes
Runsgfshprocessasthe vcap userinsteadofthe root user
v1660
ReleaseDate30thJanuary2017
NewinthisRelease
Securityfixes
Runsgfshprocessasthe vcap userinsteadofthe root user
v1710
ReleaseDate29thDecember2016
NewinthisRelease
StemcellAWS32336patchesUbuntuCVEs
StemcellAzure32337patchesUbuntuCVEs
Securityfixes
RemovepublicroutethatexposedWANreplicationcredentials[CVE-2016-8220]Addauthenticationtobrokerendpoints[CVE-2016-9880]
v1650
copyCopyrightPivotalSoftwareInc2013-2018 4 17
ReleaseDate29thDecember2016
NewinthisRelease
StemcellAWS32336patchesUbuntuCVEs
StemcellAzure32337patchesUbuntuCVEs
Securityfixes
RemovepublicroutethatexposedWANreplicationcredentials[CVE-2016-8220]Addauthenticationtobrokerendpoints[CVE-2016-9880]
v1640
ReleaseDate11thNovember2016
Newinthisrelease
Bugfixes
Upgradedgolangtov17
v1630
ReleaseDate28thOctober2016
Newinthisrelease
StemcellAWS323217patchesUbuntuCVEs
CompatibilityfixesforPCFv17runningonvSphereandAzure
v1700
ReleaseDate19thSeptember2016
NewinthisRelease
CompatibilityreleaseforPCFv17andPCFv18TheGemFireforPCFservicenowinstallsonbothPCFv17andPCFv18withoutsupportforspecificfeaturessuchasmultipleavailabilityzones
IPsecsupportTheGemFireforPCFtilenowsupportsIPsec
LogformatchangedfromfreetexttoJSON
Bugfixes
DBsynchissuesUpgradedgolangtov17UsecryptolibraryforcertificatechaindiscoveryUseofCF_DIAL_TIMEOUTServiceinstanceroutearenowuniqueacrossorgsandspaces
StemcellAWS323217patchesUbuntuCVEs
StemcellAzure323217patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xv35xToresolvethisusethelatestJavabuildpack
CurrentlytilesupportsonlyasingleAvailabilityZone(AZ)
copyCopyrightPivotalSoftwareInc2013-2018 5 17
v162
ReleaseDate28thJuly2016
NewinthisRelease
CompatibilityreleaseforPCFv17TheGemFireforPCFservicenowinstallsonPCFv17withoutsupportforPCFv17ndashspecificfeaturessuchasmultipleavailabilityzones
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34x35xToresolvethisusethelatestJavabuildpack
v161
ReleaseDate22ndJuly2016
NewinthisRelease
StemcellAWS323213patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34xand35xToresolvethisupdateJavabuildpackto36 InJavabuildpack34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1600
ReleaseDate31stMay2016
NewinthisRelease
StemcellAWS32324patchesUbuntuCVEs
StemcellAzure32325patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1500
ReleaseDate9thMay2016
NewinthisRelease
ThepackagedGemFireisupgradedfromv8205tov82014
The enable-network-partition-detection propertyisnowenabled topreventagainstdatacorruptioninsplit-brainscenarios
Clusterstabilityhasbeenimprovedduringrestartsandduringserviceinstancedeletions
Defaulttimeoutof cf restart-gemfire hasbeenincreasedfrom120secondsto900secondstoaccommodateslower-than-expectedstartupofserversandlocators
copyCopyrightPivotalSoftwareInc2013-2018 6 17
WhenrunningonAzureGemFireserverswillhaveredundancyzones tieddirectlytoAzurersquosfaultdomains sothatredundancyforpartitionedregionsissatisfiedacrossmultiplevirtualserverracks
The cf export-gemfire commandnowgivesfeedbackaboutmissingargumentsmakingiteasiertoexportyourGemFirelogsclusterconfigsandproperties
UpgradeWarningDowntimeRequired
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeployment
Sincethe enable-network-partition-detection=true propertymustbesetontheentireclusteratthesametimeweareunabletodoarollingupgradePreviouslydeployedappsandserviceinstanceswillcontinuetofunctionnormallyaftertheupgradethoughGemFireforPCFwillbeunavailableduringtheupgrade
ForOpsManager-deployedtiles
1 Uploadthev1500GemFireforPCFtiletoOpsManager
2 UnderAvailableProductsgtPivotalGemFireclickAdd
3 boshtarget yourOpsManager-deployedboshdirector
4 boshstop yourpreviouslydeployedGemFireforPCFtileThiswillstoptheGemFireforPCFservicebrokerandallserviceinstances
5 InOpsManagerclickApplyChanges
Forbosh-deployedreleases
1 bosh upload thereleasescontainedinthistile
2 bosh stop yourexistingGemFiredeployment
3 bosh deploy themanifestcontainedinthistile
4 bosh start yournewdeployment
copyCopyrightPivotalSoftwareInc2013-2018 7 17
KnownIssuesandLimitations
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeploymentasdetailedintheprevioussection
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1400
ReleaseDate4thApril2016
NewinthisRelease
AddssupportforusingCLIpluginwithahttpproxyToenableproxyusagefollowthesameinstructionsfortheCLI
EnablesbestpracticeOStuningsettingsforserverandlocatorVMsIncludessettingsfor
fsfile-max
vmswappiness
netcoresomaxconn
netcorenetdev_max_backlog
netcorermem_max
netcorewmem_max
netipv4tcp_wmem
netipv4tcp_rmem
netipv4tcp_syncookies
netipv4tcp_max_syn_backlog
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1300
ReleaseDate18thMarch2016
NewinthisRelease
Addsupportforasynchronousserviceinstanceallocationanddeallocation
AddbasicauthforGemfireagentendpoints
Improveerrorhandlingandreportingduringserviceinstancedeallocation
Includestacktracesinerrorlogsfortheservicebroker
IntroduceloglevelsfortheservicebrokerFornowtheyareonlyconfigurableatthereleaselevelandsetto info bydefaultTheyarenotexposedinthetileatthispoint
Increasethedefaultlimitforfiledescriptorsto32000fortheGemFireVM
EnsurethattheJVMis kill edwhenitisOutofMemory
Upgradestemcellto314610patchingUSN-2929-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
copyCopyrightPivotalSoftwareInc2013-2018 8 17
v1230
ReleaseDate4thFebruary2016
NewinthisRelease
Stemcell31466patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1220
ReleaseDate22ndJanuary2016
NewinthisRelease
Stemcell31465resolvesCVE-2016-0728
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1210
ReleaseDate12thJanuary2016
NewinthisRelease
Stemcell31462resolvesCVEUSN-2857-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1200
ReleaseDate1stDecember2015
NewinthisRelease
SupportforGemFiremulti-site(WAN)replication
SupportfortheldquoTrustedCertificatesrdquofeatureinOpsManagerThecertificatesfromldquoTrustedCertificatesrdquoaredeployedtoallGemFirenodesandtotheGemFireservicebrokerNoteonself-signedandinternalCAsignedcertificatesIfyouareusingaself-signedcertificateoracertificatesignedbyaninternalorothernotknowncertificateauthority(CA)youmustaddthecertificate(orcertificatechain)totheldquoTrustedCertificatesrdquoinOpsManager
GemFireupgradedtov8205
copyCopyrightPivotalSoftwareInc2013-2018 9 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
PivotalGemFireforPivotalCloudFoundry
ThisdocumentationdescribeshowtoinstallconfigureanduseGemFireforPivotalCloudFoundry (PCF)
ProductSnapshotCurrentGemFireforPivotalCloudFoundryDetails
Version170ReleaseDate19thSeptember2016SoftwarecomponentversionGemFire821SpringDataGemFire182Java8(JDKJRE8u60)CompatibleOpsManagerVersion(s)17x18xCompatibleElasticRuntimeVersion(s)17x18xCompatibleJavaBuildpackVersion(s)36371vSpheresupportYesAWSsupportYesIPSecsupportYes
UpgradingtotheLatestVersionThisversionofPivotalGemFireforPivotalCloudFoundrysupportsupgradingfromallthepreviousversionsoftheproductRunningserviceinstancesareautomaticallyupgradedonenodeatatimeIfyouconfiguredyourclusterswithdataredundancythentheupgradeprocessrequiresnodowntimeandresultsinnodataloss
NoteUpgradesfromAlphaorBetaversionsofthesoftwarearenotsupported
DocumentationIndexThedocumentationcontainsthefollowingtopics
ReleaseNotes
Overview
InstallingGemFireforPivotalCloudFoundry
UsingGemFireforPivotalCloudFoundry
Troubleshooting
FormoreinformationaboutPivotalGemFireseethePivotalGemFireDocumentation
FormoreinformationaboutPivotalCloudFoundryseethePivotalCloudFoundryDocumentation
NOTEThisproducthasbeendiscontinued
copyCopyrightPivotalSoftwareInc2013-2018 3 17
ReleaseNotesforGemFireforPivotalCloudFoundry
OverviewGemFireforPivotalCloudFoundry (PCF)supportsthedeploymentofmultiplePivotalGemFireclusterconfigurationstoPCFtosupportGemFireapplicationdevelopmentanddeploymentGemFireforPCFenablesadministratorstocustomizethreedifferentclusterconfigurationstoprovidecoarsecontroloverthenumberoflocatorsandserversavailableineachGemFireinstanceInadditiondeveloperscancustomizetheGemFireinstancethatisboundtotheirappusingGemFireclusterconfigurationcommandsoranewCloudFoundryCLIinterface
YourfeedbackiswelcomePleaseprovideanybugsfeaturerequestsorquestionseithertoPivotalCustomerSupportathttpssupportpivotalio oremailpivotal-cf-feedbackpivotalio
v1720
ReleaseDate30thJanuary2017
NewinthisRelease
Securityfixes
Runsgfshprocessasthe vcap userinsteadofthe root user
v1660
ReleaseDate30thJanuary2017
NewinthisRelease
Securityfixes
Runsgfshprocessasthe vcap userinsteadofthe root user
v1710
ReleaseDate29thDecember2016
NewinthisRelease
StemcellAWS32336patchesUbuntuCVEs
StemcellAzure32337patchesUbuntuCVEs
Securityfixes
RemovepublicroutethatexposedWANreplicationcredentials[CVE-2016-8220]Addauthenticationtobrokerendpoints[CVE-2016-9880]
v1650
copyCopyrightPivotalSoftwareInc2013-2018 4 17
ReleaseDate29thDecember2016
NewinthisRelease
StemcellAWS32336patchesUbuntuCVEs
StemcellAzure32337patchesUbuntuCVEs
Securityfixes
RemovepublicroutethatexposedWANreplicationcredentials[CVE-2016-8220]Addauthenticationtobrokerendpoints[CVE-2016-9880]
v1640
ReleaseDate11thNovember2016
Newinthisrelease
Bugfixes
Upgradedgolangtov17
v1630
ReleaseDate28thOctober2016
Newinthisrelease
StemcellAWS323217patchesUbuntuCVEs
CompatibilityfixesforPCFv17runningonvSphereandAzure
v1700
ReleaseDate19thSeptember2016
NewinthisRelease
CompatibilityreleaseforPCFv17andPCFv18TheGemFireforPCFservicenowinstallsonbothPCFv17andPCFv18withoutsupportforspecificfeaturessuchasmultipleavailabilityzones
IPsecsupportTheGemFireforPCFtilenowsupportsIPsec
LogformatchangedfromfreetexttoJSON
Bugfixes
DBsynchissuesUpgradedgolangtov17UsecryptolibraryforcertificatechaindiscoveryUseofCF_DIAL_TIMEOUTServiceinstanceroutearenowuniqueacrossorgsandspaces
StemcellAWS323217patchesUbuntuCVEs
StemcellAzure323217patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xv35xToresolvethisusethelatestJavabuildpack
CurrentlytilesupportsonlyasingleAvailabilityZone(AZ)
copyCopyrightPivotalSoftwareInc2013-2018 5 17
v162
ReleaseDate28thJuly2016
NewinthisRelease
CompatibilityreleaseforPCFv17TheGemFireforPCFservicenowinstallsonPCFv17withoutsupportforPCFv17ndashspecificfeaturessuchasmultipleavailabilityzones
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34x35xToresolvethisusethelatestJavabuildpack
v161
ReleaseDate22ndJuly2016
NewinthisRelease
StemcellAWS323213patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34xand35xToresolvethisupdateJavabuildpackto36 InJavabuildpack34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1600
ReleaseDate31stMay2016
NewinthisRelease
StemcellAWS32324patchesUbuntuCVEs
StemcellAzure32325patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1500
ReleaseDate9thMay2016
NewinthisRelease
ThepackagedGemFireisupgradedfromv8205tov82014
The enable-network-partition-detection propertyisnowenabled topreventagainstdatacorruptioninsplit-brainscenarios
Clusterstabilityhasbeenimprovedduringrestartsandduringserviceinstancedeletions
Defaulttimeoutof cf restart-gemfire hasbeenincreasedfrom120secondsto900secondstoaccommodateslower-than-expectedstartupofserversandlocators
copyCopyrightPivotalSoftwareInc2013-2018 6 17
WhenrunningonAzureGemFireserverswillhaveredundancyzones tieddirectlytoAzurersquosfaultdomains sothatredundancyforpartitionedregionsissatisfiedacrossmultiplevirtualserverracks
The cf export-gemfire commandnowgivesfeedbackaboutmissingargumentsmakingiteasiertoexportyourGemFirelogsclusterconfigsandproperties
UpgradeWarningDowntimeRequired
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeployment
Sincethe enable-network-partition-detection=true propertymustbesetontheentireclusteratthesametimeweareunabletodoarollingupgradePreviouslydeployedappsandserviceinstanceswillcontinuetofunctionnormallyaftertheupgradethoughGemFireforPCFwillbeunavailableduringtheupgrade
ForOpsManager-deployedtiles
1 Uploadthev1500GemFireforPCFtiletoOpsManager
2 UnderAvailableProductsgtPivotalGemFireclickAdd
3 boshtarget yourOpsManager-deployedboshdirector
4 boshstop yourpreviouslydeployedGemFireforPCFtileThiswillstoptheGemFireforPCFservicebrokerandallserviceinstances
5 InOpsManagerclickApplyChanges
Forbosh-deployedreleases
1 bosh upload thereleasescontainedinthistile
2 bosh stop yourexistingGemFiredeployment
3 bosh deploy themanifestcontainedinthistile
4 bosh start yournewdeployment
copyCopyrightPivotalSoftwareInc2013-2018 7 17
KnownIssuesandLimitations
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeploymentasdetailedintheprevioussection
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1400
ReleaseDate4thApril2016
NewinthisRelease
AddssupportforusingCLIpluginwithahttpproxyToenableproxyusagefollowthesameinstructionsfortheCLI
EnablesbestpracticeOStuningsettingsforserverandlocatorVMsIncludessettingsfor
fsfile-max
vmswappiness
netcoresomaxconn
netcorenetdev_max_backlog
netcorermem_max
netcorewmem_max
netipv4tcp_wmem
netipv4tcp_rmem
netipv4tcp_syncookies
netipv4tcp_max_syn_backlog
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1300
ReleaseDate18thMarch2016
NewinthisRelease
Addsupportforasynchronousserviceinstanceallocationanddeallocation
AddbasicauthforGemfireagentendpoints
Improveerrorhandlingandreportingduringserviceinstancedeallocation
Includestacktracesinerrorlogsfortheservicebroker
IntroduceloglevelsfortheservicebrokerFornowtheyareonlyconfigurableatthereleaselevelandsetto info bydefaultTheyarenotexposedinthetileatthispoint
Increasethedefaultlimitforfiledescriptorsto32000fortheGemFireVM
EnsurethattheJVMis kill edwhenitisOutofMemory
Upgradestemcellto314610patchingUSN-2929-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
copyCopyrightPivotalSoftwareInc2013-2018 8 17
v1230
ReleaseDate4thFebruary2016
NewinthisRelease
Stemcell31466patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1220
ReleaseDate22ndJanuary2016
NewinthisRelease
Stemcell31465resolvesCVE-2016-0728
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1210
ReleaseDate12thJanuary2016
NewinthisRelease
Stemcell31462resolvesCVEUSN-2857-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1200
ReleaseDate1stDecember2015
NewinthisRelease
SupportforGemFiremulti-site(WAN)replication
SupportfortheldquoTrustedCertificatesrdquofeatureinOpsManagerThecertificatesfromldquoTrustedCertificatesrdquoaredeployedtoallGemFirenodesandtotheGemFireservicebrokerNoteonself-signedandinternalCAsignedcertificatesIfyouareusingaself-signedcertificateoracertificatesignedbyaninternalorothernotknowncertificateauthority(CA)youmustaddthecertificate(orcertificatechain)totheldquoTrustedCertificatesrdquoinOpsManager
GemFireupgradedtov8205
copyCopyrightPivotalSoftwareInc2013-2018 9 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
ReleaseNotesforGemFireforPivotalCloudFoundry
OverviewGemFireforPivotalCloudFoundry (PCF)supportsthedeploymentofmultiplePivotalGemFireclusterconfigurationstoPCFtosupportGemFireapplicationdevelopmentanddeploymentGemFireforPCFenablesadministratorstocustomizethreedifferentclusterconfigurationstoprovidecoarsecontroloverthenumberoflocatorsandserversavailableineachGemFireinstanceInadditiondeveloperscancustomizetheGemFireinstancethatisboundtotheirappusingGemFireclusterconfigurationcommandsoranewCloudFoundryCLIinterface
YourfeedbackiswelcomePleaseprovideanybugsfeaturerequestsorquestionseithertoPivotalCustomerSupportathttpssupportpivotalio oremailpivotal-cf-feedbackpivotalio
v1720
ReleaseDate30thJanuary2017
NewinthisRelease
Securityfixes
Runsgfshprocessasthe vcap userinsteadofthe root user
v1660
ReleaseDate30thJanuary2017
NewinthisRelease
Securityfixes
Runsgfshprocessasthe vcap userinsteadofthe root user
v1710
ReleaseDate29thDecember2016
NewinthisRelease
StemcellAWS32336patchesUbuntuCVEs
StemcellAzure32337patchesUbuntuCVEs
Securityfixes
RemovepublicroutethatexposedWANreplicationcredentials[CVE-2016-8220]Addauthenticationtobrokerendpoints[CVE-2016-9880]
v1650
copyCopyrightPivotalSoftwareInc2013-2018 4 17
ReleaseDate29thDecember2016
NewinthisRelease
StemcellAWS32336patchesUbuntuCVEs
StemcellAzure32337patchesUbuntuCVEs
Securityfixes
RemovepublicroutethatexposedWANreplicationcredentials[CVE-2016-8220]Addauthenticationtobrokerendpoints[CVE-2016-9880]
v1640
ReleaseDate11thNovember2016
Newinthisrelease
Bugfixes
Upgradedgolangtov17
v1630
ReleaseDate28thOctober2016
Newinthisrelease
StemcellAWS323217patchesUbuntuCVEs
CompatibilityfixesforPCFv17runningonvSphereandAzure
v1700
ReleaseDate19thSeptember2016
NewinthisRelease
CompatibilityreleaseforPCFv17andPCFv18TheGemFireforPCFservicenowinstallsonbothPCFv17andPCFv18withoutsupportforspecificfeaturessuchasmultipleavailabilityzones
IPsecsupportTheGemFireforPCFtilenowsupportsIPsec
LogformatchangedfromfreetexttoJSON
Bugfixes
DBsynchissuesUpgradedgolangtov17UsecryptolibraryforcertificatechaindiscoveryUseofCF_DIAL_TIMEOUTServiceinstanceroutearenowuniqueacrossorgsandspaces
StemcellAWS323217patchesUbuntuCVEs
StemcellAzure323217patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xv35xToresolvethisusethelatestJavabuildpack
CurrentlytilesupportsonlyasingleAvailabilityZone(AZ)
copyCopyrightPivotalSoftwareInc2013-2018 5 17
v162
ReleaseDate28thJuly2016
NewinthisRelease
CompatibilityreleaseforPCFv17TheGemFireforPCFservicenowinstallsonPCFv17withoutsupportforPCFv17ndashspecificfeaturessuchasmultipleavailabilityzones
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34x35xToresolvethisusethelatestJavabuildpack
v161
ReleaseDate22ndJuly2016
NewinthisRelease
StemcellAWS323213patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34xand35xToresolvethisupdateJavabuildpackto36 InJavabuildpack34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1600
ReleaseDate31stMay2016
NewinthisRelease
StemcellAWS32324patchesUbuntuCVEs
StemcellAzure32325patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1500
ReleaseDate9thMay2016
NewinthisRelease
ThepackagedGemFireisupgradedfromv8205tov82014
The enable-network-partition-detection propertyisnowenabled topreventagainstdatacorruptioninsplit-brainscenarios
Clusterstabilityhasbeenimprovedduringrestartsandduringserviceinstancedeletions
Defaulttimeoutof cf restart-gemfire hasbeenincreasedfrom120secondsto900secondstoaccommodateslower-than-expectedstartupofserversandlocators
copyCopyrightPivotalSoftwareInc2013-2018 6 17
WhenrunningonAzureGemFireserverswillhaveredundancyzones tieddirectlytoAzurersquosfaultdomains sothatredundancyforpartitionedregionsissatisfiedacrossmultiplevirtualserverracks
The cf export-gemfire commandnowgivesfeedbackaboutmissingargumentsmakingiteasiertoexportyourGemFirelogsclusterconfigsandproperties
UpgradeWarningDowntimeRequired
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeployment
Sincethe enable-network-partition-detection=true propertymustbesetontheentireclusteratthesametimeweareunabletodoarollingupgradePreviouslydeployedappsandserviceinstanceswillcontinuetofunctionnormallyaftertheupgradethoughGemFireforPCFwillbeunavailableduringtheupgrade
ForOpsManager-deployedtiles
1 Uploadthev1500GemFireforPCFtiletoOpsManager
2 UnderAvailableProductsgtPivotalGemFireclickAdd
3 boshtarget yourOpsManager-deployedboshdirector
4 boshstop yourpreviouslydeployedGemFireforPCFtileThiswillstoptheGemFireforPCFservicebrokerandallserviceinstances
5 InOpsManagerclickApplyChanges
Forbosh-deployedreleases
1 bosh upload thereleasescontainedinthistile
2 bosh stop yourexistingGemFiredeployment
3 bosh deploy themanifestcontainedinthistile
4 bosh start yournewdeployment
copyCopyrightPivotalSoftwareInc2013-2018 7 17
KnownIssuesandLimitations
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeploymentasdetailedintheprevioussection
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1400
ReleaseDate4thApril2016
NewinthisRelease
AddssupportforusingCLIpluginwithahttpproxyToenableproxyusagefollowthesameinstructionsfortheCLI
EnablesbestpracticeOStuningsettingsforserverandlocatorVMsIncludessettingsfor
fsfile-max
vmswappiness
netcoresomaxconn
netcorenetdev_max_backlog
netcorermem_max
netcorewmem_max
netipv4tcp_wmem
netipv4tcp_rmem
netipv4tcp_syncookies
netipv4tcp_max_syn_backlog
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1300
ReleaseDate18thMarch2016
NewinthisRelease
Addsupportforasynchronousserviceinstanceallocationanddeallocation
AddbasicauthforGemfireagentendpoints
Improveerrorhandlingandreportingduringserviceinstancedeallocation
Includestacktracesinerrorlogsfortheservicebroker
IntroduceloglevelsfortheservicebrokerFornowtheyareonlyconfigurableatthereleaselevelandsetto info bydefaultTheyarenotexposedinthetileatthispoint
Increasethedefaultlimitforfiledescriptorsto32000fortheGemFireVM
EnsurethattheJVMis kill edwhenitisOutofMemory
Upgradestemcellto314610patchingUSN-2929-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
copyCopyrightPivotalSoftwareInc2013-2018 8 17
v1230
ReleaseDate4thFebruary2016
NewinthisRelease
Stemcell31466patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1220
ReleaseDate22ndJanuary2016
NewinthisRelease
Stemcell31465resolvesCVE-2016-0728
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1210
ReleaseDate12thJanuary2016
NewinthisRelease
Stemcell31462resolvesCVEUSN-2857-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1200
ReleaseDate1stDecember2015
NewinthisRelease
SupportforGemFiremulti-site(WAN)replication
SupportfortheldquoTrustedCertificatesrdquofeatureinOpsManagerThecertificatesfromldquoTrustedCertificatesrdquoaredeployedtoallGemFirenodesandtotheGemFireservicebrokerNoteonself-signedandinternalCAsignedcertificatesIfyouareusingaself-signedcertificateoracertificatesignedbyaninternalorothernotknowncertificateauthority(CA)youmustaddthecertificate(orcertificatechain)totheldquoTrustedCertificatesrdquoinOpsManager
GemFireupgradedtov8205
copyCopyrightPivotalSoftwareInc2013-2018 9 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
ReleaseDate29thDecember2016
NewinthisRelease
StemcellAWS32336patchesUbuntuCVEs
StemcellAzure32337patchesUbuntuCVEs
Securityfixes
RemovepublicroutethatexposedWANreplicationcredentials[CVE-2016-8220]Addauthenticationtobrokerendpoints[CVE-2016-9880]
v1640
ReleaseDate11thNovember2016
Newinthisrelease
Bugfixes
Upgradedgolangtov17
v1630
ReleaseDate28thOctober2016
Newinthisrelease
StemcellAWS323217patchesUbuntuCVEs
CompatibilityfixesforPCFv17runningonvSphereandAzure
v1700
ReleaseDate19thSeptember2016
NewinthisRelease
CompatibilityreleaseforPCFv17andPCFv18TheGemFireforPCFservicenowinstallsonbothPCFv17andPCFv18withoutsupportforspecificfeaturessuchasmultipleavailabilityzones
IPsecsupportTheGemFireforPCFtilenowsupportsIPsec
LogformatchangedfromfreetexttoJSON
Bugfixes
DBsynchissuesUpgradedgolangtov17UsecryptolibraryforcertificatechaindiscoveryUseofCF_DIAL_TIMEOUTServiceinstanceroutearenowuniqueacrossorgsandspaces
StemcellAWS323217patchesUbuntuCVEs
StemcellAzure323217patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xv35xToresolvethisusethelatestJavabuildpack
CurrentlytilesupportsonlyasingleAvailabilityZone(AZ)
copyCopyrightPivotalSoftwareInc2013-2018 5 17
v162
ReleaseDate28thJuly2016
NewinthisRelease
CompatibilityreleaseforPCFv17TheGemFireforPCFservicenowinstallsonPCFv17withoutsupportforPCFv17ndashspecificfeaturessuchasmultipleavailabilityzones
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34x35xToresolvethisusethelatestJavabuildpack
v161
ReleaseDate22ndJuly2016
NewinthisRelease
StemcellAWS323213patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34xand35xToresolvethisupdateJavabuildpackto36 InJavabuildpack34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1600
ReleaseDate31stMay2016
NewinthisRelease
StemcellAWS32324patchesUbuntuCVEs
StemcellAzure32325patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1500
ReleaseDate9thMay2016
NewinthisRelease
ThepackagedGemFireisupgradedfromv8205tov82014
The enable-network-partition-detection propertyisnowenabled topreventagainstdatacorruptioninsplit-brainscenarios
Clusterstabilityhasbeenimprovedduringrestartsandduringserviceinstancedeletions
Defaulttimeoutof cf restart-gemfire hasbeenincreasedfrom120secondsto900secondstoaccommodateslower-than-expectedstartupofserversandlocators
copyCopyrightPivotalSoftwareInc2013-2018 6 17
WhenrunningonAzureGemFireserverswillhaveredundancyzones tieddirectlytoAzurersquosfaultdomains sothatredundancyforpartitionedregionsissatisfiedacrossmultiplevirtualserverracks
The cf export-gemfire commandnowgivesfeedbackaboutmissingargumentsmakingiteasiertoexportyourGemFirelogsclusterconfigsandproperties
UpgradeWarningDowntimeRequired
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeployment
Sincethe enable-network-partition-detection=true propertymustbesetontheentireclusteratthesametimeweareunabletodoarollingupgradePreviouslydeployedappsandserviceinstanceswillcontinuetofunctionnormallyaftertheupgradethoughGemFireforPCFwillbeunavailableduringtheupgrade
ForOpsManager-deployedtiles
1 Uploadthev1500GemFireforPCFtiletoOpsManager
2 UnderAvailableProductsgtPivotalGemFireclickAdd
3 boshtarget yourOpsManager-deployedboshdirector
4 boshstop yourpreviouslydeployedGemFireforPCFtileThiswillstoptheGemFireforPCFservicebrokerandallserviceinstances
5 InOpsManagerclickApplyChanges
Forbosh-deployedreleases
1 bosh upload thereleasescontainedinthistile
2 bosh stop yourexistingGemFiredeployment
3 bosh deploy themanifestcontainedinthistile
4 bosh start yournewdeployment
copyCopyrightPivotalSoftwareInc2013-2018 7 17
KnownIssuesandLimitations
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeploymentasdetailedintheprevioussection
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1400
ReleaseDate4thApril2016
NewinthisRelease
AddssupportforusingCLIpluginwithahttpproxyToenableproxyusagefollowthesameinstructionsfortheCLI
EnablesbestpracticeOStuningsettingsforserverandlocatorVMsIncludessettingsfor
fsfile-max
vmswappiness
netcoresomaxconn
netcorenetdev_max_backlog
netcorermem_max
netcorewmem_max
netipv4tcp_wmem
netipv4tcp_rmem
netipv4tcp_syncookies
netipv4tcp_max_syn_backlog
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1300
ReleaseDate18thMarch2016
NewinthisRelease
Addsupportforasynchronousserviceinstanceallocationanddeallocation
AddbasicauthforGemfireagentendpoints
Improveerrorhandlingandreportingduringserviceinstancedeallocation
Includestacktracesinerrorlogsfortheservicebroker
IntroduceloglevelsfortheservicebrokerFornowtheyareonlyconfigurableatthereleaselevelandsetto info bydefaultTheyarenotexposedinthetileatthispoint
Increasethedefaultlimitforfiledescriptorsto32000fortheGemFireVM
EnsurethattheJVMis kill edwhenitisOutofMemory
Upgradestemcellto314610patchingUSN-2929-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
copyCopyrightPivotalSoftwareInc2013-2018 8 17
v1230
ReleaseDate4thFebruary2016
NewinthisRelease
Stemcell31466patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1220
ReleaseDate22ndJanuary2016
NewinthisRelease
Stemcell31465resolvesCVE-2016-0728
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1210
ReleaseDate12thJanuary2016
NewinthisRelease
Stemcell31462resolvesCVEUSN-2857-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1200
ReleaseDate1stDecember2015
NewinthisRelease
SupportforGemFiremulti-site(WAN)replication
SupportfortheldquoTrustedCertificatesrdquofeatureinOpsManagerThecertificatesfromldquoTrustedCertificatesrdquoaredeployedtoallGemFirenodesandtotheGemFireservicebrokerNoteonself-signedandinternalCAsignedcertificatesIfyouareusingaself-signedcertificateoracertificatesignedbyaninternalorothernotknowncertificateauthority(CA)youmustaddthecertificate(orcertificatechain)totheldquoTrustedCertificatesrdquoinOpsManager
GemFireupgradedtov8205
copyCopyrightPivotalSoftwareInc2013-2018 9 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
v162
ReleaseDate28thJuly2016
NewinthisRelease
CompatibilityreleaseforPCFv17TheGemFireforPCFservicenowinstallsonPCFv17withoutsupportforPCFv17ndashspecificfeaturessuchasmultipleavailabilityzones
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34x35xToresolvethisusethelatestJavabuildpack
v161
ReleaseDate22ndJuly2016
NewinthisRelease
StemcellAWS323213patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacks34xand35xToresolvethisupdateJavabuildpackto36 InJavabuildpack34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1600
ReleaseDate31stMay2016
NewinthisRelease
StemcellAWS32324patchesUbuntuCVEs
StemcellAzure32325patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1500
ReleaseDate9thMay2016
NewinthisRelease
ThepackagedGemFireisupgradedfromv8205tov82014
The enable-network-partition-detection propertyisnowenabled topreventagainstdatacorruptioninsplit-brainscenarios
Clusterstabilityhasbeenimprovedduringrestartsandduringserviceinstancedeletions
Defaulttimeoutof cf restart-gemfire hasbeenincreasedfrom120secondsto900secondstoaccommodateslower-than-expectedstartupofserversandlocators
copyCopyrightPivotalSoftwareInc2013-2018 6 17
WhenrunningonAzureGemFireserverswillhaveredundancyzones tieddirectlytoAzurersquosfaultdomains sothatredundancyforpartitionedregionsissatisfiedacrossmultiplevirtualserverracks
The cf export-gemfire commandnowgivesfeedbackaboutmissingargumentsmakingiteasiertoexportyourGemFirelogsclusterconfigsandproperties
UpgradeWarningDowntimeRequired
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeployment
Sincethe enable-network-partition-detection=true propertymustbesetontheentireclusteratthesametimeweareunabletodoarollingupgradePreviouslydeployedappsandserviceinstanceswillcontinuetofunctionnormallyaftertheupgradethoughGemFireforPCFwillbeunavailableduringtheupgrade
ForOpsManager-deployedtiles
1 Uploadthev1500GemFireforPCFtiletoOpsManager
2 UnderAvailableProductsgtPivotalGemFireclickAdd
3 boshtarget yourOpsManager-deployedboshdirector
4 boshstop yourpreviouslydeployedGemFireforPCFtileThiswillstoptheGemFireforPCFservicebrokerandallserviceinstances
5 InOpsManagerclickApplyChanges
Forbosh-deployedreleases
1 bosh upload thereleasescontainedinthistile
2 bosh stop yourexistingGemFiredeployment
3 bosh deploy themanifestcontainedinthistile
4 bosh start yournewdeployment
copyCopyrightPivotalSoftwareInc2013-2018 7 17
KnownIssuesandLimitations
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeploymentasdetailedintheprevioussection
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1400
ReleaseDate4thApril2016
NewinthisRelease
AddssupportforusingCLIpluginwithahttpproxyToenableproxyusagefollowthesameinstructionsfortheCLI
EnablesbestpracticeOStuningsettingsforserverandlocatorVMsIncludessettingsfor
fsfile-max
vmswappiness
netcoresomaxconn
netcorenetdev_max_backlog
netcorermem_max
netcorewmem_max
netipv4tcp_wmem
netipv4tcp_rmem
netipv4tcp_syncookies
netipv4tcp_max_syn_backlog
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1300
ReleaseDate18thMarch2016
NewinthisRelease
Addsupportforasynchronousserviceinstanceallocationanddeallocation
AddbasicauthforGemfireagentendpoints
Improveerrorhandlingandreportingduringserviceinstancedeallocation
Includestacktracesinerrorlogsfortheservicebroker
IntroduceloglevelsfortheservicebrokerFornowtheyareonlyconfigurableatthereleaselevelandsetto info bydefaultTheyarenotexposedinthetileatthispoint
Increasethedefaultlimitforfiledescriptorsto32000fortheGemFireVM
EnsurethattheJVMis kill edwhenitisOutofMemory
Upgradestemcellto314610patchingUSN-2929-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
copyCopyrightPivotalSoftwareInc2013-2018 8 17
v1230
ReleaseDate4thFebruary2016
NewinthisRelease
Stemcell31466patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1220
ReleaseDate22ndJanuary2016
NewinthisRelease
Stemcell31465resolvesCVE-2016-0728
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1210
ReleaseDate12thJanuary2016
NewinthisRelease
Stemcell31462resolvesCVEUSN-2857-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1200
ReleaseDate1stDecember2015
NewinthisRelease
SupportforGemFiremulti-site(WAN)replication
SupportfortheldquoTrustedCertificatesrdquofeatureinOpsManagerThecertificatesfromldquoTrustedCertificatesrdquoaredeployedtoallGemFirenodesandtotheGemFireservicebrokerNoteonself-signedandinternalCAsignedcertificatesIfyouareusingaself-signedcertificateoracertificatesignedbyaninternalorothernotknowncertificateauthority(CA)youmustaddthecertificate(orcertificatechain)totheldquoTrustedCertificatesrdquoinOpsManager
GemFireupgradedtov8205
copyCopyrightPivotalSoftwareInc2013-2018 9 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
WhenrunningonAzureGemFireserverswillhaveredundancyzones tieddirectlytoAzurersquosfaultdomains sothatredundancyforpartitionedregionsissatisfiedacrossmultiplevirtualserverracks
The cf export-gemfire commandnowgivesfeedbackaboutmissingargumentsmakingiteasiertoexportyourGemFirelogsclusterconfigsandproperties
UpgradeWarningDowntimeRequired
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeployment
Sincethe enable-network-partition-detection=true propertymustbesetontheentireclusteratthesametimeweareunabletodoarollingupgradePreviouslydeployedappsandserviceinstanceswillcontinuetofunctionnormallyaftertheupgradethoughGemFireforPCFwillbeunavailableduringtheupgrade
ForOpsManager-deployedtiles
1 Uploadthev1500GemFireforPCFtiletoOpsManager
2 UnderAvailableProductsgtPivotalGemFireclickAdd
3 boshtarget yourOpsManager-deployedboshdirector
4 boshstop yourpreviouslydeployedGemFireforPCFtileThiswillstoptheGemFireforPCFservicebrokerandallserviceinstances
5 InOpsManagerclickApplyChanges
Forbosh-deployedreleases
1 bosh upload thereleasescontainedinthistile
2 bosh stop yourexistingGemFiredeployment
3 bosh deploy themanifestcontainedinthistile
4 bosh start yournewdeployment
copyCopyrightPivotalSoftwareInc2013-2018 7 17
KnownIssuesandLimitations
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeploymentasdetailedintheprevioussection
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1400
ReleaseDate4thApril2016
NewinthisRelease
AddssupportforusingCLIpluginwithahttpproxyToenableproxyusagefollowthesameinstructionsfortheCLI
EnablesbestpracticeOStuningsettingsforserverandlocatorVMsIncludessettingsfor
fsfile-max
vmswappiness
netcoresomaxconn
netcorenetdev_max_backlog
netcorermem_max
netcorewmem_max
netipv4tcp_wmem
netipv4tcp_rmem
netipv4tcp_syncookies
netipv4tcp_max_syn_backlog
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1300
ReleaseDate18thMarch2016
NewinthisRelease
Addsupportforasynchronousserviceinstanceallocationanddeallocation
AddbasicauthforGemfireagentendpoints
Improveerrorhandlingandreportingduringserviceinstancedeallocation
Includestacktracesinerrorlogsfortheservicebroker
IntroduceloglevelsfortheservicebrokerFornowtheyareonlyconfigurableatthereleaselevelandsetto info bydefaultTheyarenotexposedinthetileatthispoint
Increasethedefaultlimitforfiledescriptorsto32000fortheGemFireVM
EnsurethattheJVMis kill edwhenitisOutofMemory
Upgradestemcellto314610patchingUSN-2929-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
copyCopyrightPivotalSoftwareInc2013-2018 8 17
v1230
ReleaseDate4thFebruary2016
NewinthisRelease
Stemcell31466patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1220
ReleaseDate22ndJanuary2016
NewinthisRelease
Stemcell31465resolvesCVE-2016-0728
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1210
ReleaseDate12thJanuary2016
NewinthisRelease
Stemcell31462resolvesCVEUSN-2857-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1200
ReleaseDate1stDecember2015
NewinthisRelease
SupportforGemFiremulti-site(WAN)replication
SupportfortheldquoTrustedCertificatesrdquofeatureinOpsManagerThecertificatesfromldquoTrustedCertificatesrdquoaredeployedtoallGemFirenodesandtotheGemFireservicebrokerNoteonself-signedandinternalCAsignedcertificatesIfyouareusingaself-signedcertificateoracertificatesignedbyaninternalorothernotknowncertificateauthority(CA)youmustaddthecertificate(orcertificatechain)totheldquoTrustedCertificatesrdquoinOpsManager
GemFireupgradedtov8205
copyCopyrightPivotalSoftwareInc2013-2018 9 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
KnownIssuesandLimitations
Upgradingtov1500willrequiredowntimeforyourGemFireforPCFdeploymentasdetailedintheprevioussection
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1400
ReleaseDate4thApril2016
NewinthisRelease
AddssupportforusingCLIpluginwithahttpproxyToenableproxyusagefollowthesameinstructionsfortheCLI
EnablesbestpracticeOStuningsettingsforserverandlocatorVMsIncludessettingsfor
fsfile-max
vmswappiness
netcoresomaxconn
netcorenetdev_max_backlog
netcorermem_max
netcorewmem_max
netipv4tcp_wmem
netipv4tcp_rmem
netipv4tcp_syncookies
netipv4tcp_max_syn_backlog
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1300
ReleaseDate18thMarch2016
NewinthisRelease
Addsupportforasynchronousserviceinstanceallocationanddeallocation
AddbasicauthforGemfireagentendpoints
Improveerrorhandlingandreportingduringserviceinstancedeallocation
Includestacktracesinerrorlogsfortheservicebroker
IntroduceloglevelsfortheservicebrokerFornowtheyareonlyconfigurableatthereleaselevelandsetto info bydefaultTheyarenotexposedinthetileatthispoint
Increasethedefaultlimitforfiledescriptorsto32000fortheGemFireVM
EnsurethattheJVMis kill edwhenitisOutofMemory
Upgradestemcellto314610patchingUSN-2929-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
copyCopyrightPivotalSoftwareInc2013-2018 8 17
v1230
ReleaseDate4thFebruary2016
NewinthisRelease
Stemcell31466patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1220
ReleaseDate22ndJanuary2016
NewinthisRelease
Stemcell31465resolvesCVE-2016-0728
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1210
ReleaseDate12thJanuary2016
NewinthisRelease
Stemcell31462resolvesCVEUSN-2857-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1200
ReleaseDate1stDecember2015
NewinthisRelease
SupportforGemFiremulti-site(WAN)replication
SupportfortheldquoTrustedCertificatesrdquofeatureinOpsManagerThecertificatesfromldquoTrustedCertificatesrdquoaredeployedtoallGemFirenodesandtotheGemFireservicebrokerNoteonself-signedandinternalCAsignedcertificatesIfyouareusingaself-signedcertificateoracertificatesignedbyaninternalorothernotknowncertificateauthority(CA)youmustaddthecertificate(orcertificatechain)totheldquoTrustedCertificatesrdquoinOpsManager
GemFireupgradedtov8205
copyCopyrightPivotalSoftwareInc2013-2018 9 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
v1230
ReleaseDate4thFebruary2016
NewinthisRelease
Stemcell31466patchesUbuntuCVEs
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1220
ReleaseDate22ndJanuary2016
NewinthisRelease
Stemcell31465resolvesCVE-2016-0728
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1210
ReleaseDate12thJanuary2016
NewinthisRelease
Stemcell31462resolvesCVEUSN-2857-1
KnownIssuesandLimitations
ThereisaknownissuewhereappsfailtostagewhenusingtheJavabuildpacksv34xandv35xToresolvethisupdateJavabuildpacktov36 InJavabuildpackv34GemFirewasupgradedfromv80tov82GemFirev81introducedadependencyonlog4jbutlog4jwasnotaddedtotheJavabuildpackv34ThisdependencyhasbeenincludedinJavabuildpackv36
v1200
ReleaseDate1stDecember2015
NewinthisRelease
SupportforGemFiremulti-site(WAN)replication
SupportfortheldquoTrustedCertificatesrdquofeatureinOpsManagerThecertificatesfromldquoTrustedCertificatesrdquoaredeployedtoallGemFirenodesandtotheGemFireservicebrokerNoteonself-signedandinternalCAsignedcertificatesIfyouareusingaself-signedcertificateoracertificatesignedbyaninternalorothernotknowncertificateauthority(CA)youmustaddthecertificate(orcertificatechain)totheldquoTrustedCertificatesrdquoinOpsManager
GemFireupgradedtov8205
copyCopyrightPivotalSoftwareInc2013-2018 9 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
Drainscriptimprovements
BettererrorreportingforserviceinstanceallocationfailuresInsteadofreturningldquoThemaximumnumberofServiceInstancesalreadyexistrdquomessageforallfailuresduringaserviceinstanceallocationeachdifferenttypeoffailurereturnsadescriptiveerrormessage
Stemcell3144
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartofanupgradeThisproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofanupgradeanewVMhasbeencreatedwiththesameIPbutwithadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
v1110
ReleaseDate5thNovember2015
NewinthisRelease
SupportforOpsManagerv16andElasticRuntimev16ThisreleasedoesnotworkwiththepreviousreleasesofOpsManagerandElasticRuntime
Stemcell3100
KnownIssuesandLimitations
SeeKnownIssuesandLimitationsforv1100below
v1100
ReleaseDate22ndSeptember2015
NewinthisRelease
UpgradedPivotalGemFiretov82
UpgradedJavatov8andJREv18
Spring-relatedenhancements
SupportfordeployingaSpringXMLconfigurationandapplicationcodetoGemFireserviceinstances
IfyouuseSpringldquoallthewayrdquoyoucandosowithGemFireserviceinstancesaswellThereisnoneedtotranslatetheSpringconfigurationtoGemFireXMLSpringsupportisprovidedusingconfigurationoptionsoftheGemFireforPCFCLIplug-incommand cf restart-gemfire
SupportforusingSSLencryptiontoaccessGemFireServiceInstancesfromoutsideofPCF
GemFirePulseisnowaccessibleviaHTTPSGemFireRESTclientscanbeconfiguredtoaccessaserviceinstancersquosRESTAPIendpointviaHTTPSYoucanconfiguretheGemFireshell(gfsh)toaccessaserviceinstanceoverHTTPS
Additionalfixesandimprovements
DrainscriptimprovementsImprovedhandlingofself-signedcertificatesYAMLsyntaxvalidationforclusterpropertiesthatareprovidedviathe --properties optionofthe cf restart-gemfire CLIcommand
Stemcell3062
copyCopyrightPivotalSoftwareInc2013-2018 10 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
SupportfortheexperimentalfeatureHTTPStraffictoUAA
KnownIssuesandLimitations
UpgradingtheGemFiretileonAWScanfailwhenthestemcellischangingaspartoftheupgradeTheproblemusuallymanifestsitselfduringtheinstallprocessrsquosmoketesterrandTheissueariseswhenaspartofupgradeanewVMhasbeencreatedwiththesameIPbutadifferentMACaddressBecauseAWSsuppressesunsolicitedARPsothermembersmaynotknowthattheirARPcachehasbecomeinvalid
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
v1000
ReleaseDate10August2015
KnownIssuesandLimitations
TheservicesupportsonlyasinglePCFavailabilityzone AlthoughtheserviceenablesGemFireHAfeaturessuchasredundancyandpersistenceafailureofthetargetedavailabilityzonecanresultinthelossofGemFireregiondataNoteIfthereismorethanoneavailablezoneyoumayseedeploymentfailuresorunevensizedclusters
TheexperimentalHTTPS-onlyfeatureinElasticRuntimev15isnotsupportedandmaycauseissueswiththisversionoftheproductPivotalisworkingtoprovidefullsupportforHTTPS-onlytrafficinafuturerelease
ElasticscalingisnotsupportedYoucannotchangethenumberofcacheserversandlocatorsinaserviceplanwithoutdestroyingandrecreatingthecurrentserviceplaninstances
Ifyoudeploytheserviceandthensubsequentlyreducethenumberofclustersallallocatedinstancesaredestroyed
GemFireWANreplicationisnotsupported
copyCopyrightPivotalSoftwareInc2013-2018 11 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
OverviewGemFireforPivotalCloudFoundry (PCF)enablesyoutoeasilyconfigureandprovisioncompletePivotalGemFireclientserverclustersusingPivotalCloudFoundryACloudFoundryAdministratorcaneasilyconfigurethreedifferenttypesofGemFireclusters(serviceplans)usingdifferentnumbersoflocatorsandserversaswellasdifferentresourcesperclusternodeforeachserviceplanEachserviceplaninstanceusesGemFirebestpracticestoautomaticallyconfigureJVMresourceutilizationandgarbagecollectionsettingstakingintoconsiderationtheresourcesavailableontheclusternodeServiceinstancesarededicatednotmultitenantbydefaultbuttheycanbeusedbydifferentapplicationsifdesiredAllocatingaserviceinstanceprovisionsaGemFireclusterfromthepoolofavailableunallocatedGemFireclustersthatwereinstantiatedduringthetileinstallationGemFireprocesseslocatorsandserversrunindedicatedVMs
PivotalprovidestheGemFirePulseWebapplicationgfshcommand-lineutilitytohelpyoumonitormanagetheserviceinstancesthatyoudeployInadditionPivotalprovidesaCloudFoundryCLIplug-inthatdeveloperscanusetoperformthemostcommonGemFireclustermanagementoperationssuchas
Restartingthecluster
Downloadingclusterconfigurationfileslogfilesorstatistics
Uploadingcustomclusterconfigurations
FinallyGemFireforPivotalCloudFoundryprovidesacustomrestURLtohelpyoueasilyusetheGemFireRESTAPIwithaboundserviceinstanceRequeststotheURLautomaticallyround-robintoavailablecacheserverssothereisnoneedtoassociateRESTrequestswithaspecificserver
HowDoestheServiceWork
PCFAdministratorWorkflowThefollowingdiagramdepictsthehigh-levelworkflowfordeployingtheGemFireservice
Figure1InstallingandConfiguringtheService
copyCopyrightPivotalSoftwareInc2013-2018 12 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
1 PivotalCloudFoundryAdministratorimportstheGemFireserviceproductfileintoPivotalCloudFoundryOperationsManager
2 WhenaPivotalCloudFoundryAdministratorconfigurestheGemFireserviceforthefirsttimetheydefinethenumberofdiscreteserviceinstancesforeachGemFireServicePlanAserviceinstanceisaGemFireclusterGemFireforPivotalCloudFoundryenablesyoutoconfigureinstancesforthreedifferentGemFireclusterconfigurationswhereeachinstancecanprovideadifferentnumberoflocatorsandcacheserversaswellasmemoryanddiskspaceresources
3 AftermakingtheirconfigurationchoicesthePivotalCloudFoundryAdministratordeploystheservicecausingPivotalCloudFoundryOpsManagertocreateandsetuptheappropriatesetofvirtualmachines
4 OperationsManagerdeploysavirtualmachinetoruntheGemFireServiceBrokerwhichisresponsibleforallocatingGemFireClusterserviceinstancestoPivotalCloudFoundryusersandforpassingrelevantinformationintotheapplicationsthatareboundtoeachserviceinstance
5 OperationsManageralsodeploysthespecifiednumberofGemFireserviceinstances(clusters)asconfiguredbytheadministratorLastlythereareafewtemporaryVMsusedforinstallanduninstallerrands
AftertheservicehasbeendeployedinOperationsManageritisreadyforusebyapplicationdevelopersintheElasticRuntimeenvironmentThefollowingdiagramdepictsthehigh-levelworkflowthatanapplicationdeveloperwouldusetoconsumetheservice
PCFDeveloper(ServiceUser)WorkflowFigure2UsingtheService
copyCopyrightPivotalSoftwareInc2013-2018 13 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
1 PivotalCloudFoundryDeveloperusestheCLIorDeveloperConsoletocreateaGemFireserviceinstanceintheElasticRuntimespacewheretheyarepushingtherelevantapplications
2 CreatingaserviceinstancecausesElasticRuntimetocontacttheGemFireServiceBrokerwhichallocatesoneun-allocatedGemFireclusterofdedicatedvirtualmachinestotheGemFireserviceinstanceIntheresponsetoElasticRuntimetheServiceBrokerincludestheURLtoreachtheGemFirePulsemonitoringtoolfortheserviceinstanceTheElasticRuntimeexposesthisURLintheDeveloperConsolersquosmetadatafortheserviceinstance
3 PivotalCloudFoundryDeveloperpushestheirapplicationtoElasticRuntime
4 PivotalCloudFoundryDeveloperbindstheirapplicationtotheGemFireserviceinstanceTheGemFireServiceBrokerpopulatestheapplicationrsquosVCAP_SERVICESenvironmentvariablewiththemetadatarequiredtoaccesstheGemFireserviceinstancersquoslocatorsandcacheservers
5 PivotalCloudFoundrydevelopercanconfiguremonitorandmanagetheclusterusingPulseandortheGemFireforPivotalCloudFoundryCLIplug-in
AdditionalResourcesPivotalGemFireProductDocumentation
PivotalGemFireCommunityForum
PivotalGemFireKnowledgeBase
PivotalCloudFoundryDocumentation
copyCopyrightPivotalSoftwareInc2013-2018 14 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
InstallingGemFireforPivotalCloudFoundryPrerequisites
ServiceConfigurationDefaults
InstallationSteps
CreatingGemFireServicePlans
ApplicationSecurityGroups
PrerequisitesBeforeyoubeginyourGemFireforPivotalCloudFoundry (PCF)deploymentyoursystemneedstomeetthefollowingminimumrequirements
PivotalCloudFoundryOpsManagerforvSphereorPivotalCloudFoundryOpsManagerforvCloudAirorvCloudDirectororPivotalCloudFoundryOpsManagerforAWS
IPSec(optional)IfyouwishtouseIPSecinyourPivotalGemFireinstallationpleaseensureyouhavetheIPSecBOSHreleasedeployedbeforeinstallingtheElasticRuntimeandGemFiretileForinstructionsondeployingtheIPSecBOSHreleaseseetheinstructionshere
PivotalCloudFoundryElasticRuntime
NetworkaccessandcredentialsforthePivotalCloudFoundryOpsManagerWebConsole
CapacityinthevSphereclusterforserviceinstancesyouwanttodeployBydefaulttheGemFireserviceconfiguresthreedifferentGemFireserviceplansEachplandeploystheminimumof2locatorsbutdeploy35and7GemFirecacheserversrespectivelySeveralsupportingVMsarealsorequiredforservicedeploymentTheresourceallocationsforthedefaultGemFireserviceplaninstancesandcomponentsareasfollows
Table1DefaultResourceRequirementsforaGemFireServiceInstances
Service VirtualMachines CPU RAM(MB) EphemeralDisk(MB) PersistentDisk(MB)
GemFirelocator(Plan1)
2 1 1024 2048 1024
GemFirelocator(Plan2)
2 1 1024 2048 1024
GemFirelocator(Plan3)
2 1 1024 2048 1024
GemFireServer(Plan1)
3 2 4096 6144 8192
GemFireServer(Plan2)
3 2 4096 6144 8192
GemFireServer(Plan3)
3 2 4096 6144 8192
GemFireBroker 1 2 4096 4096 4096
BrokerRegistrar 1 1 2048 2048 0
BrokerDeregistrar 1 1 2048 2048 0
ClusterSmokeTest 1 1 512 2048 0
ClusterAgentSmokeTest
1 1 512 2048 0
ServiceOfferingSmokeTest
1 1 512 2048 0
Compilation 2 1 1024 4096 0
Totals 12 9 16384 24576 12800
RequiredforeachVM
ServiceConfigurationDefaults
copyCopyrightPivotalSoftwareInc2013-2018 15 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
TheGemFireforPivotalCloudFoundryserviceautomaticallyimplementsthebestpracticesanoperatorwouldnormallyemploywhendeployingGemFireTheseconfigurationsinclude
DynamicmemorymanagementDynamicallysettheJVMmaximumandminimummemoryutilizationforeachinstanceoftheGemFiresoftwareprocessbasedontheVMrsquostotalmemory
GarbagecollectionEnableandconfigurememorygarbagecollectionforeachinstanceoftheGemFiresoftwareprocess
LoggingconfigurationCreateandstorelogsattheconfigloglevelwithappropriatelimitationsonsizingandautomaticlogrotation
StatisticsmonitoringCreateandstorestatisticsfilesatasamplerateof1000whichcorrespondstoasamplingrateofoncepersecond
DataoverflowconfigurationOverflowdatatodiskwhencrossing70memoryutilization
MemoryoverutilizationprotectionPreventfurtherwritestomemorywhencrossing80memoryutilization
ClientauthenticationRequireclientstoauthenticatewhendirectlyaccessingcacheservers
Thedefaultconfigurationsettingscanbeadjustedifneededonaperserviceinstancebasis
InstallationSteps1 DownloadtheGemFireforPivotalCloudFoundrytilefromPivotalNetwork
2 UseaWebbrowsertologintothePivotalOpsManagerapplicationThePivotalCloudFoundryOpsManagerInstallationDashboarddisplays
3 ClickImportaProductTheAddProductsscreendisplays
4 ClickChooseFileandnavigatetothefileyoudownloadedThefileuploadstoyourPivotalCloudFoundrydeployment
5 ClickAddPivotalOpsManageraddsanewtileforGemFireforPivotalCloudFoundrytotheInstallationDashboard
Self-SignedandInternalSSLCertificatesInproductionenvironmentswerecommendthatyouuseanSSLcertificatesignedbyareputablecertificateauthority(CA)PleaseensureyourSSLcertificatehasalltheSubjectAlternativeNames(SANs)
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
IfyourcertificateissignedbyaknownauthorityandhasthecorrectSANspleasedisregardthissection
copyCopyrightPivotalSoftwareInc2013-2018 16 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
InternalCertificatesInthecaseofInternalCertificates(iecertificatessignedbyaninternalRootCA)youneedtoconfiguretheOpsManagerDirectortiletotrusttheinternalRootCAToachievethispleasefollowthestepsbelow
1 AddtheinternalRootCAistotheSecurityConfigsectionundertheOpsManagerDirectorTile
2 CopytheinternalcertificateandRootCA(certificatechain)totheElasticRuntimetilebynavigatingtoPivotalElasticRuntimegtNetworkinggtLoadBalancerwithTLSenabled(orHAProxy)
Self-SignedCertificatesWhenusingselfsignedcertificatesgeneratedbytheElasticRuntimeTileyouneedtoensurethatthiscertificateisprovidedtotheOpsManagerDirectorTile
GeneratingSelf-SignCertificatesusingtheElasticRuntimeTileTheElasticRuntimeTileallowsyoutogenerateself-signedcertificatesbynavigatingtoPivotalElasticRuntimegtNetworkinggtGenerateRSACertificatePleasespecifythefollowingwildcardsubdomains
systemexamplecom
appsexamplecom
uaasystemexamplecom
loginsystemexamplecom
OnceyouhavegeneratedyourcertificatecopythecertificatetotheOpsManagerDirectorTileandplaceitintheSecurityConfigsection
GeneratingSelf-SignedCertificatesusingOpenSSL1 TousetheOpenSSLCLIrunthefollowingcommands
a Generateaprivatekey openssl genrsa -des3 -out serverkey 1024b GenerateaCertificateSigningRequest(CSR)withthe subjectAltName entriesandeditthe subj flagasneeded
openssl req -new -key serverkey -out servercsr -subj C=USST=StateL=LocalityO=OrganizationOU=OrganizationUnitCN=wwwexamplecomemailAddress=exampleexamplecomsubjectAltName=DNS1=systemexamplecomDNS2=appsexamplecomDNS3=uaasystemexamplecomDNS4=loginsystemexamplecom
c RemovePassphrasefromKey cp serverkey serverkeyorg openssl rsa -in serverkeyorg -out serverkeyd GenerateaSelf-SignedCertificate openssl x509 -req -days 365 -in servercsr -signkey serverkey -out servercrt
2 UploadtheSSLcertificatetoyourloadbalancerInstructionsforAWS
a AuthenticatewiththeAWSCLI$ aws configure AWS Access Key ID [None] ltACCESS KEY GOES HEREgt AWS Secret Access Key [None] ltSECRET ACCESS KEY GOESHEREgt Default region name [None] us-east-1 Default output format [None] ENTER
b Uploadyourself-signedcertificateinIAMaws iam upload-server-certificate --server-certificate-name ltNAME OF CERTIFICATEgt --certificate-bodyfileservercrt --private-key fileserverkey
c Uploadyourself-signedcertificatetoyourElasticLoadBalancer(ELB)aws elb set-load-balancer-listener-ssl-certificate --load-balancer-name ltELB NAMEgt --load-balancer-port ltPORTgt --ssl-certificate-id arnawsiamltIAM NUMBERgtserver-certificateltNAME OF CERTIFICATEgt
3 AddtheSSLcertificateasatrustedcertificatetoyourOpsManager-deployedVMs
a InOpsManagerontheDirectorTileundertheSecuritysectionpastethecertificateandsave
copyCopyrightPivotalSoftwareInc2013-2018 17 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
b OntheElasticRuntimeTileundertheNetworkingsectionpasteboththecertificateandtheprivatekeybesuretocheckDisableSSLcertificateverificationforthisenvironmentandsave
copyCopyrightPivotalSoftwareInc2013-2018 18 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
WANReplicationandSelf-SignedCertificates
AWANtopologyinGemFireisaclient-serverrelationshipWhenusingself-signedcertificateseachclientneedstotrusttheserverrsquosSSLcertificate
WhenusingWANreplicationwithself-signedcertificateswestronglyrecommendusingcertificatesthatweregeneratedwiththeOpenSSLCLIThisisbecauseOpsManagerself-signedcertificatesareactuallysignedbyOpsManagerrsquosinternalCAcertificateIfyoudouseacertificategeneratedbyOpsManageryoursquollneedtotrusttheOpsManagerrsquosinternalCAcertificateinstead
ForexamplewhensettingupWANreplicationacrosstwoPCFinstallationswhoeachusetheirownselfsignedcertificatesnamedWestandEast
1 InWestOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforEast(appendingifnecessary)andsave
copyCopyrightPivotalSoftwareInc2013-2018 19 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
2 InEastOpsManagerontheDirectorTileunderExperimentalFeaturesgtTrustedCertificatesaddthecertificateforWest(appendingifnecessary)andsave
3 InbothinstallationsyouneedtoredeploytheGemFireforPivotalCloudFoundrytileforthesechangestotakeeffectThesimplestwaytoforcearedeployistomakeasmallchangetoanyoftheconfigurationpropertiessuchastheServicePlanConfiguration
ThenproceedtoconfigureWANreplicationacrossyourmultiplesites
CreatingGemFireServicePlansConfigureGemFireserviceinstancestosetthemaximumcapacityforeachclusterprovidedinyourCloudFoundryenvironment
NoteIfyouhavealreadyconfiguredtheservicereducingthenumberofresourcesandreconfiguringtheservicecausesallallocatedinstancestobedestroyedSeetheReleaseNotesformoreinformationaboutknownproblemsandlimitations
copyCopyrightPivotalSoftwareInc2013-2018 20 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
FollowthesestepstoconfiguretheGemFireservice
1 SelecttheGemFireforPivotalCloudFoundrytiletodisplaytheconfigurationpage
2 (Optional)SelecttheAssignNetworkstabtospecifythevSphereNetworkwhereOpsManagerdeploystheGemFireServiceBrokerandrelatedvirtualmachinesSeeConfiguringNetworkIsolationOptionsinOpsManager inthePivotalCloudFoundrydocumentationformoreinformation
3 SelectAssignAvailabilityZonestospecifytheAvailabilityZoneintowhichOpsManagershoulddeploytheGemFireServiceBrokerandvirtualmachinesNotethatthecurrentversionoftheGemFireservicemustbedeployedtoasingleAvailabilityZoneSeeConfiguringOpsManagerDirectorforVMwarevSphere formoreinformationNoteThecurrentversionoftheserviceonlysupportsdeploymenttooneAvailabilityZoneevenifmultipleAvailabilityZonesareavailableDeployingtheservicetomorethanoneAZresultsinaninvalidinstallation
4 SelecttheConfigureServicePlan1-3tabstoconfiguretheeachofthethreeGemFireplansthatwillbeavailableintheElasticRuntimeCLIandWebConsoleGemFireforPivotalCloudFoundryprovidesthreedifferentserviceplansthatyoucanconfiguretoprovidedifferentGemFireclustersizesForeachofthethreeserviceplanconfigurations
a (Optional)AsabestpracticeusetheServicePlanNameServicePlanDescriptionandServicePlanFeatureBullet1-3fieldstodescribethesizeofeachclusterThisinformationwillappearintheMarketplacewhendevelopersarechoosingfromtheavailableplansForexample
2SpecifythenumberoflocatorsperclustertocreateintheGemFireclusterforthisplanaswellasthenumberofcacheserversperclusterForexample
copyCopyrightPivotalSoftwareInc2013-2018 21 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
NoteEachserviceplanmustspecifyaminimumoftwolocatorsandthreecacheserversperGemFireclusterRecordthenumberoflocatorsandserversusedineachplantohelpyouconfigurethetotalplanresourcesinthenextstepIfyouwouldliketodeferaplanconfigurationorallocationuntilalatertimeyoucandothatintheResourceConfigtab(seebelow)3ClickSavetosavethecurrentserviceplanconfiguration4RepeattheabovestepstoconfigureeachofthethreeGemFireserviceplans
5 (Optional)SelecttheResourceConfigtabtochangetheallocationofresourcesforofGemFiremembersineachserviceplan
a EnterthetotalnumberofGemFirelocatorandserverInstancesthatyouwanttocreateforeachoftheavailableserviceplansNoteThenumberoflocatororserverinstancesthatyouspecifyforaplanmustbeamultipleoftheperclusternumberlocatorsandserversthatyouconfiguredinthepreviousstepTheonlyexceptiontothisruleisifyouwanttodeferallocatingresourcesfortheplantoalatertimeinwhichcaseyoucansetthenumberoflocatorsandserverstozeroForexampleifyouconfiguredGemFireServicePlan1toprovideasmallGemFireclusterusingtheminimumof2locatorsand3serversbutyouwanttowantedtomake3instancesofthisplanavailableinthemarketplacethenyouwouldsetGemFirelocator(Plan1)to6instancesandGemFireserver(Plan1)to9instancesIfyouinsteadwantedtopostponeconfiguringtheplanandldquosaverdquoyourpendingchangestotheplanthensetthenumberoflocatorsandserverstozeroYoucanthenrevisittheplanconfigurationandresourceallocationatalatertimeBesuretosetvalidvaluesfortheclustersizeandresourcesunderResourceConfigbeforeyouapplyyourfinalchangestotheplan
b (Optional)ForGemFireserviceplancacheserversonlyentertheamountofCPURAM(MB)EPHEMERALDISK(MB)andPERSISTENTDISK
copyCopyrightPivotalSoftwareInc2013-2018 22 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
(MB)resourcestoallocateforeachserverVMbasedonyourcapacityrequirementsForproductiondeploymentsPivotalrecommendsincreasingthenumberofCPUstoatleast2Approximately1GBofconfiguredRAMisreservedfortheVMoperatingsystemallRAMabovethisamountisallocatedtotheJVMthatrunstheGemFireserverNoteTheresourcesallocationsforGemFirelocatorsandotherservicecomponentsareautomaticallyconfiguredtotheirrecommendedsettingsandtheycannotbechanged
6 ClickSave
7 ClicktheInstallationDashboardlinkTheInstallationDashboardscreendisplays
8 ClickApplyChanges
PivotalCloudFoundryOpsManagerdeploysasinglevirtualmachinetoruntheGemFireServiceBrokerpreallocatesalladditionalVMsrequiredforthethreeGemFireServiceplanclustersYoucanaccessinformationaboutthedeploymentsfromthePivotalCloudFoundryOpsManagerconsole
AftertheGemFireclusterserviceinstancesaredeployedtheGemFireServiceBrokerautomaticallyregisterstheserviceanditsserviceplansintheElasticRuntimeMarketplacePivotalCloudFoundryuserscannowcreateandbindtoinstancesoftheconfiguredserviceplansSeeUsingthePivotalGemFireServiceonPivotalCloudFoundry
DeferringServicePlanConfigurationAsmentionedintheprocedureaboveitispossibletoleaveaserviceplanunallocatedanddeferitsconfigurationandresourceallocationtoalatertimeTodothissetthenumberoflocatorsandserversfortheplantozerointheResourceConfigtab
WhenyouarereadytofinalizetheconfigurationfollowthesamestepsinCreatingGemFireServicePlanstosetanyrequiredpropertiesandallocateresourcesfortheplanintheResourceConfigtabFinallyclickApplychangesintheOpsManagertocreatetheserviceinstancesthatyouallocated
ApplicationSecurityGroupsToenableaccesstotheGemFireforPCFtileserviceyouneedtoensureyoursecuritygroupallowsaccesstotheGemfirelocatorandserverVMsconfiguredinyourdeploymentTheIPaddressesforthesecanbeobtainedfromOpsManagerbyclickingonGemFireTileandnavigatingtoStatustabAlltheIPSarementionedunderthecolumnIPSYoushouldensurethefollowingTCPportsareenabledfortheIPaddresses70714040455221MoredetailscanbefoundatApplicationSecurityGroups
protocoltcpdestinationltYOUR-GEMFIRE-LOCATORS-AND-SERVERS-IP-RANGEgtports70714040455221
WarningWerecommendupdatingyourPCFinstallationrsquosdefaultapplicationsecuritygroupasthedefaultapplicationsecuritygroupinPivotalCloudFoundryallowsallegresstraffic
Defaultapplicationsecuritygroup
[destination0000-169254169253protocolalldestination169254169255-255255255255protocolall]
AdditionalapplicationsecuritygrouprulesmaybenecessarytotoensureotherPCFservicescontinuetofunctioncorrectly
copyCopyrightPivotalSoftwareInc2013-2018 23 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
copyCopyrightPivotalSoftwareInc2013-2018 24 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
UsingGemFireforPivotalCloudFoundryAsyouwouldexpectwithanydataserviceonPivotalCloudFoundry (PCF)theGemFireservicesimplifiesthedeploymentandconfigurationofsoftwarethatsupportsyourapplicationsWhenyoucreateaGemFireserviceinstanceyouareinstantlyprovidedwithadedicatedclusterofGemFiremembersruningondedicatedVMsthatuseJVMandGemFiresettingsautomaticallytunedformostusecasesYoucanthenconfiguretheclusterbasedonyourapplicationneedsForexampleyoumightwanttouseanexistingGemFireconfigurationfromaGemFiredevelopmentenvironmentonyourlaptopInthatcaseyoucanexporttheclusterconfigurationusingGemFirersquos gfshexportcluster-configuration anduploadittoaGemFireserviceinstanceinyourPCFenvironmentusingtheGemFireserviceCLIforPCFGemFireCLIisprovidedasaCFCLIpluginthatincludescommandsforrestartingandconfiguringGemFireserviceinstancesaswellasdownloadingGemFireconfigurationandlogsonaperclusterbasis
CreatingaGemFireServiceInstance
ConfiguringaGemFireServiceInstance
WorkingwithaGemFireServiceInstance
AccessingGemFireServiceConnectionInformation(Binding)
DeployingApplicationsforUsewiththeGemFireService
BindinganApplicationtotheGemFireService
PushingorRestagingApplicationsAfterServiceChanges
ViewingBindingMetaDataandEnvironmentVariables
UnbindinganApplicationfromtheGemFireService
DeletingaGemFireServiceInstance
ConfiguringMulti-site(WAN)Connections
CreatingaGemFireServiceInstanceThefollowingproceduredescribeshowtocreateaGemFireserviceinstanceinthePivotalCloudFoundryElasticRuntimeenvironment
1 IfyouhavenotdonesoalreadyinstallthePivotalCloudFoundryCommandLineInterfaceSeeInstallingthePCFCLI Installationbinariesareavailablehere
2 LogintoPCFusingthePCFCLI$cflogin
3 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttocreatetheservice$cftarget-altapi-endpointgt-oltorganizationgt-sltspacenamegt
4 Runthefollowingcommandtoviewtheavailableserviceplans$cfmarketplace
Getting services from marketplace in org staging space staging as adminOKservice plans descriptionp-gemfire GemFireServicePlan1 Dedicated GemFire instanceTIP Use cf marketplace -s SERVICE to view descriptions of individual plans of agiven service
5 Typethefollowingcommandtocreatetheserviceplan$cfcreate-serviceGemFireServicePlan1ltservice-plan-namegtltservice-instance-namegt
whereisthenameoftheServicePlanyouseeinthemarketplacendashinthisexampleldquoGemFireServicePlan1rdquondashandisadescriptivenamethatyouwanttousefortheserviceForexample
$ cf create-service p-gemfire GemFireServicePlan1 my-gemfire-testCreating service my-gemfire-test in org staging space staging as adminOK
copyCopyrightPivotalSoftwareInc2013-2018 25 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
ConfiguringaGemFireServiceInstanceToconfigureaGemFireserviceinstance(cluster)withyourcacheconfigurationandgemfirepropertiesyouwillneedtousetheGemFireserviceCFCLIpluginIfyouhavenotinstalledthepluginyetfollowtheinstructionsforinstallationdescribedinUsingtheGemFireforCloudFoundryCLIPlug-in
ApplyingaclusterconfigurationinvolvesuploadingtheconfigurationzipfiletotheclusterandrestartingtheclusterTheconfigurationzipfileisintheformatusedbytheGemFiregfshcommandsforexportingandimportingclusterconfigurations(seeExportingandImportingClusterConfigurations inthePivotalGemFiredocumentation)ThatallowsforaclusterconfigurationtobeexportedfromanexistingdeploymentandusedforaGemFireserviceinstanceonPCFAlternativelyaclusterconfigurationzipfilecanbecreatedmanuallyfromanexistingGemFirecachexmlconfigurationGemFirepropertiesandanyaccompanyingimplementationandtheirdependencyjarsasfollows
Createadirectorycalled cluster
Copyyourcachexmlconfigurationfileintothedirectoryandrenameitto clusterxml
Ifthereareanygemfirepropertiesthatshouldbesetontheclustercopyyourgemfirepropertiesfileintothedirectoryandrenameittoclusterproperties
Ifthereareanyimplementationjarsandtheirdependencyjarsthatshouldbedeployedtotheservers
copytheimplementationjarsinto cluster directorycopyanydependencyjarsintoadirectorycalled lib under cluster directory
Createazipfilefrom cluster directory
Thefollowingexampleshowsthecontentsofaconfigurationzipfile
$unzip-tcluster_configzipArchivecluster_configziptestingclusterOKtestingclusterclusterpropertiesOKtestingclusterclusterxmlOKtestingclustermyCallbacksjarOKtestingclusterlibOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_configzip
Inthisexample myCallbacksjar containstheimplementationofthecallbacksreferencedinthecacheconfiguration clusterxml andthelibdirectorycontainsthejarsthatmyCalllbacksjardependson
Uploadandapplyyourconfigurationusing cfrestart-gemfire commandwith --cluster-config optionForexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzipBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
Intheaboveexampleaclusterconfigurationcontainedin cluster_configzip fileinthecurrentdirectoryisuploadedtotheserviceinstancemy-gemfire-cluster andappliedtoituponrestartingtheserviceinstance(applyingaclusterconfigurationrequiresthatalltheserversintheclusterberestarted)
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringaServiceInstanceUsingaSpringApplicationContextXMLIfyouuseSpringyoucanconfigureyourGemFireserviceinstancesusingaSpringApplicationContextXMLfileinsteadofGemFirecacheXMLconfigurationTousethisapproachyoumustincludeaSpringapplicationcontextXMLfileinajarthatisprovisionedinyourconfigurationzipfileundera lib subdirectoryofa cluster directoryInadditionyoumustplaceallimplementationanddependencyjarsinthe clusterlib directoryoftheconfigurationzipfileThefollowingaredetailedstepsforcreatingaSpringconfigurationzipfile
1 Createadirectorycalled cluster thenasubdirectoryunderitcalled lib
2 PlaceyourSpringapplicationcontextXMLfileinanimplementationjarandnotethefullclasspathtotheXMLfileasitappearsintheJARYouwillneedtoreferencethispathlaterinthe cf restart-gemfire command
copyCopyrightPivotalSoftwareInc2013-2018 26 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
3 CopyalloftheimplementationanddependencyJARsthatshouldbedeployedtotheserverstothe clusterlib directory
4 Createazipfileofthe cluster directory
Forexamplethefollowingcommandshowsthesamplecontentsofaconfigurationzipfile
$unzip-tcluster_spring_configzipArchivecluster_spring_configziptestingclusterOKtestingclusterlibOKtestingclusterlibmyImplementationjarOKtestingclusterlibmyDependency1jarOKtestingclusterlibmyDependency2jarOKNoerrorsdetectedincompresseddataofcluster_spring_configzip
IntheaboveexampleaSpringXMLfilecouldbeplacedinanyoftheJARfilesunderthe clusterlib directoryTheconfigurationwouldthenbeuploadedandappliedtoaserviceinstanceusingthe cfrestart-gemfire commandwith --cluster-config and --spring-xml optionsForexample
cfrestart-gemfiremy-gemfire-cluster--cluster-configcluster_spring_configzip--spring-xmlcommyCompanymyAppmyAppContextxmlBrokerHTTPUsernamegtBrokerHTTPPasswordgtClustersuccessfullyrestarted
Intheaboveexampletheclusterconfigurationfile cluster_spring_configzip isuploadedtothe my-gemfire-cluster serviceinstanceandthenappliedafterrestartingtheserviceinstanceThe --spring-xml optionreferencestheclasspathtoaSpringXMLconfigurationfileisincludedinoneoftheJARfilesincluster_spring_configzip
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
ConfiguringJVMandGemFirePropertiesTheGemFireclusterconfigurationlackstheabilitytosetanyJVMorGemFireimmutableproperties(thepropertiesthathavetobeprovidedattheJVMstartup)Thosepropertiescanbesetusinganoptional --properties argumentthattakesayamlfilecontainingoptionalJVMandGemFirepropertiesforlocatorsandserversForexample
$ cat propertiesymlproperties server jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m - -DgemfireOSProcessENABLE_OUTPUT_REDIRECTION=true gemfire statistic-sample-rate 3000 locator jvmargs - -XXPermSize=96m - -XXMaxPermSize=96m gemfire statistic-sample-rate 2000
Thesettingsprovidedinthiswaywillaugmenttheexisting(default)settingsThisallowsforthevaluesoftheexistingpropertiestobemodifiedandnewonestobeappliedThefollowingcommandforexample
$ cf restart-gemfire my-gemfire-cluster --cluster-config cluster_configzip --properties propertiesymlBroker HTTP UsernamegtBroker HTTP PasswordgtCluster successfully restarted
appliesthepropertiesfrom propertiesyml shownabovetotheserversandlocatorsinthecluster my-gemfire-cluster andtheclusterconfigurationprovidedin cluster_configzip FormoreinformationaboutalltheavailableCLIcommandsseeUsingtheGemFireforCloudFoundryCLIPlug-in
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
copyCopyrightPivotalSoftwareInc2013-2018 27 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
CloudDeploymentConsiderationsCertainGemFireconfigurationsettingsareaffectedbythecloudnatureofserviceinstancedeploymentsNotableexamplesareanyGemFirepropertiesthattakeanIPaddressorhostnameforvalueSuchpropertiesshouldnotbeusedAlsodiskdirectoriesforGemFireoverflowandpersistencediskstoresarenotsupportedDiskstoresmustbeconfiguredwithoutdiskdirectoriesAsaresultdiskstoresarecreatedintheworkingdirectory
NetworkPartitionDetectionAsofv1500theGemFireforPCFserviceshipswiththe enable-network-partition-detection propertyenabled
Thisbuilt-infunctionalityofGemFirehelpsdetectandresolveproblemsthatresultfromadversenetworkeventsWithoutthisfunctionalityyouruntheriskofenteringasplit-brainsituationwhereGemFirelocatorsandserverscannotcommunicatewiththerestoftheclusterleadingtodowntimeanddataloss
Sincethe enable-network-partition-detection propertycanonlybeenabledordisabledacrosstheentireclusteratoncetheclustermustbebroughtdowntogetherHenceupgradesfromanearlierversiontov1500cannothappeninarollingfashionFurtherinstructionscanbefoundinourreleasenotes
PleaserefertothePivotalGemFiredocumentation formoreinformationonNetworkPartitioning
WorkingwithaGemFireServiceInstanceFortheadministrationconfigurationandmonitoringofGemFireserviceinstancesthefollowingtoolsareavailable
GemFirePulse providesagraphicaldashboardformonitoringvitalreal-timehealthandperformanceofGemFireclustersmembersandregionsUsePulsetoexaminetotalmemoryCPUanddiskspaceusedbymembersuptimestatisticsclientconnectionsWANconnectionsandcriticalnotifications
GemFireservicepluginforCFCLIprovidesCLIcommandsforconfiguringandrestartingGemFireclustersaswellasaccessingtheGemFirelogsandstatistics
GemFiregfsh providesremoteaccesstoGemFireclustersandmanymanagementmonitoringandconfigurationfeatures
AccessingaClusterviaPulse
EachGemFireserviceinstance(cluster)hasitsownPulseinstancewhichcanbeaccessedviaaManagelinklocatedundertheserviceinstanceintheDeveloperConsole
RestartingaCluster
AGemFireclusterisrestartedusingtheGemFireCLIcommand cfrestart-gemfire Thiscommandhasmultipleoptions(useitwith -h toseeallofthem)thatcanbeusedinanycombinationtoaccomplishdesiredtasksduringarestart
ThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingGemFireLogsandStatisticsandClusterConfiguration
GemFirelogsandstatisticsfilesforaclustercanbedownloadedusingtheGemFireCLIcommand cfexport-gemfire Forexample
$ cf export-gemfire cluster1 --logs cluster1_logszipBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote logs and stats to `cluster1_logszip`
cluster1 isthenameoftheclustertogetthelogsfrom
copyCopyrightPivotalSoftwareInc2013-2018 28 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
cfexport-gemfire isusedtoaccesstheclusterconfigurationaswellForexample
$ cf export-gemfire demo1 --cluster-config demo1_configzip --properties demo1_propsyamlBroker HTTP UsernamegtBroker HTTP PasswordgtSuccessfully wrote cluster config to `demo1_configzip`Successfully wrote cluster properties to `demo1_propsyaml`
Inthisexample cfexport-gemfire isusedtodownloadtheclusterconfigurationtothefilenamed demo1_configzip andpropertiestothefilenameddemo1_propsyaml fortheclusternamed demo1
NotethattheGemFirelogfilesalsoincludethefullconfiguration
SeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPassword
AccessingaClusterviagfsh
GemFireclusterscanbeaccessedvia gfsh fromanymachinewithintheCloudFoundrynetwork
FirstidentifythelocatorIPaddressofyourclusterwithaservicekey
$cfcreate-service-keydemo1my-service-keyCreatingservicekeymy-service-keyforserviceinstancedemo1asadminOK$cfservice-keydemo1my-service-keyGettingkeymy-service-keyforserviceinstancedemo1asadminlocators[10244050[55221]10244051[55221]]passwordltCLUSTER_USERNAMEgtusernameltCLUSTER_PASSWORDgt
UsethelocatorIPaddressestoconnectwithgfshrunningonahostwithintheCloudFoundrynetwork
$gfshgfshgtconnect--locator=10244050[55221]ConnectingtoLocatorat[host=10244050port=55221]ConnectingtoManagerat[host=10244050port=1099]Successfullyconnectedto[host=10244050port=1099]
AccessingGemFireServiceConnectionInformation(Binding)AfteryoudeployaJavaBuildpackapplicationandbindittoaGemFireforPivotalCloudFoundryserviceinstanceyourapplicationreceivestheGemFireclusterlocatoraddressesandcredentialsintheVCAP_SERVICESenvironmentvariableIfyouhaveenabledtheGemFireRESTAPIthentheRESTURLisalsoprovidedasmetadatainVCAP_SERVICES
VCAP_SERVICESprovidesdataasaJSONdocumentsoyoucanuseavarietyoftechniquestoaccesstherelevantconnectioninformationSeeViewingBindingMetaDataforanexampleofthedataprovidedinVCAP_SERVICES
NoteGemFireforPivotalCloudFoundryonlysupportsdeployingGemFireclientapplicationsYoucannotdeployanapplicationthatparticipatesintheboundGemFireclusterasapeermember
UsingaJSONLibrarytoAcquireConnectionInformationBecauseVCAP_SERVICESprovidesaJSONdocumentyoucanalsouseaJavaJSONlibrarytoparsethedataforconnectioninformationThisexamplecodeusesthe Jackson librarytoparsethedocument
copyCopyrightPivotalSoftwareInc2013-2018 29 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
packagepivotal
importcomfasterxmljacksoncoreJsonParseExceptionimportcomfasterxmljacksondatabindJsonMappingExceptionimportcomfasterxmljacksondatabindObjectMapperimportpivotalGemFireClientLocator
importjavaioIOExceptionimportjavautilArrayListimportjavautilListimportjavautilMap
publicclassEnvParser
privatestaticEnvParserinstance
privateEnvParser()
publicstaticEnvParsergetInstance()if(instance=null)returninstancesynchronized(EnvParserclass)if(instance==null)instance=newEnvParser()returninstance
publicListltLocatorgtgetLocators()throwsJsonParseExceptionJsonMappingExceptionIOExceptionListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()Mapcredentials=getCredentials()ListltStringgtlocators=(ListltStringgt)credentialsget(locators)for(Stringlocatorlocators)StringlocatorIP=locatorsubstring(0locatorindexOf([))StringportString=locatorsubstring(locatorindexOf([)+1locatorindexOf(]))locatorListadd(newLocator(locatorIPIntegerparseInt(portString)))returnlocatorList
publicStringgetUsername()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringusername=nullMapcredentials=getCredentials()username=(String)credentialsget(username)returnusername
publicStringgetPasssword()throwsJsonParseExceptionJsonMappingExceptionIOExceptionStringpassword=nullMapcredentials=getCredentials()password=(String)credentialsget(password)returnpassword
privateMapgetCredentials()throwsJsonParseExceptionJsonMappingExceptionIOExceptionMapcredentials=nullStringenvContent=Systemgetenv()get(VCAP_SERVICES)ListltLocatorgtlocatorList=newArrayListltGemFireClientLocatorgt()ObjectMapperobjectMapper=newObjectMapper()Mapservices=objectMapperreadValue(envContentMapclass)ListgemfireService=getGemFireService(services)if(gemfireService=null)MapserviceInstance=(Map)gemfireServiceget(0)credentials=(Map)serviceInstanceget(credentials)returncredentials
privateListgetGemFireService(Mapservices)return(List)servicesget(p-gemfire)
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
copyCopyrightPivotalSoftwareInc2013-2018 30 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
packagepivotal
importcomgemstonegemfireLogWriterimportcomgemstonegemfiredistributedDistributedMemberimportcomgemstonegemfiresecurityAuthInitializeimportcomgemstonegemfiresecurityAuthenticationFailedException
importjavaioIOExceptionimportjavautilProperties
publicclassClientAuthInitializeimplementsAuthInitialize
privateEnvParserenv=EnvParsergetInstance()
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()tryStringusername=envgetUsername()Stringpassword=envgetPasssword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)catch(IOExceptione)thrownewAuthenticationFailedException(Exceptionreadingusernamepasswordfromenvvariablese)returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
TheauthenticatedapplicationcanthencreateaGemFireClientCache asfollows
Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)tryListltURIgtlocatorList=EnvParsergetInstance()getLocators()for(URIlocatorlocatorList)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCacheclient=ccfcreate()catch(IOExceptione)handle
Usingspring-cloudtoAcquireConnectionInformationAsanalternativetouseaJavaJSONlibraryyoucanuse spring-cloud withtheSpringCloudGemFireConnector toparsetheJSONdataNotethatthismethoddoesnotrequireyourapplicationtobeaSpringprojectortohave spring-core asadependencyYouonlyneedtospecify spring-cloud andspring-cloud-gemfire-cloudfoundry-connector asdependenciesasshowninthisexerpt
copyCopyrightPivotalSoftwareInc2013-2018 31 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
ltdependencygtltgroupIdgtcomgemstonegemfireltgroupIdgtltartifactIdgtgemfireltartifactIdgtltversiongt810ltversiongtltdependencygtltdependencygtltgroupIdgtiopivotalspringcloudltgroupIdgtltartifactIdgtspring-cloud-gemfire-cloudfoundry-connectorltartifactIdgtltversiongt100BUILD-SNAPSHOTltversiongtltdependencygtltdependencygtltgroupIdgtorgspringframeworkcloudltgroupIdgtltartifactIdgtspring-cloud-coreltartifactIdgtltversiongt120RC1ltversiongtltdependencygtltrepositorygtltidgtspring-milestonesltidgtlturlgthttprepospringiolibs-milestonelturlgtltrepositorygtltrepositorygtltidgtgemfire-repositoryltidgtltnamegtGemfireRepositoryltnamegtlturlgthttpdistgemstonecommavenreleaselturlgtltrepositorygt
ForanapplicationthatbindstoaGemFireservicenamed MyService youwouldthenusethe CloudFactory APItoobtainaserviceconnectionfromwhichyougetmetadatasuchastheavailablelocatorsusernameandpasswordForexample
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
URI[]locators=myServicegetLocators()StringuserName=myServicegetUsername()Stringpassword=myServicegetPassword()
ToauthenticateyourclientapplicationyoumustimplementtheGemFireAuthInitialize interfaceasshowninthisexample
publicclassClientAuthInitializeimplementsAuthInitialize
publicstaticfinalStringUSER_NAME=security-usernamepublicstaticfinalStringPASSWORD=security-password
publicGemfireServiceInfoserviceInfo
privateClientAuthInitialize()CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()serviceInfo=(GemfireServiceInfo)cloudgetServiceInfo(MyService)
publicstaticAuthInitializecreate()returnnewClientAuthInitialize()
Overridepublicvoidclose()
OverridepublicPropertiesgetCredentials(Propertiesarg0DistributedMemberarg1booleanarg2)throwsAuthenticationFailedExceptionPropertiesprops=newProperties()
Stringusername=serviceInfogetUsername()Stringpassword=serviceInfogetPassword()propsput(USER_NAMEusername)propsput(PASSWORDpassword)
returnprops
Overridepublicvoidinit(LogWriterarg0LogWriterarg1)throwsAuthenticationFailedException
copyCopyrightPivotalSoftwareInc2013-2018 32 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
ThecodetoinitializetheclientobtainauthorizationandfinallycreateaGemFireClientCache wouldresemble
CloudFactorycloudFactory=newCloudFactory()Cloudcloud=cloudFactorygetCloud()GemfireServiceInfomyService=(GemfireServiceInfo)cloudgetServiceInfo(MyService)Propertiesprops=newProperties()propssetProperty(security-client-auth-initpivotalClientAuthInitializecreate)ClientCacheFactoryccf=newClientCacheFactory(props)URI[]locators=myServicegetLocators()for(URIlocatorlocators)ccfaddPoolLocator(locatorgetHost()locatorgetPort())ClientCachecache=ccfcreate()
AcquiringaConnectionfromaSpringApplicationIfyouaredevelopingaSpringApplicationthenacquiringGemFireserviceconnectioninformationisasimpletwo-stepprocess
1 ConfigureGemFire spring-cloud and spring-cloud-gemfire-cloudfoundry-connector asdependenciesinyourproject
dependenciescompile(comgemstonegemfiregemfire810)compile(iopivotalspringcloudspring-cloud-gemfire-spring-connector100BUILD-SNAPSHOT)compile(iopivotalspringcloudspring-cloud-gemfire-cloudfoundry-connector100BUILD-SNAPSHOT)
2 Inyourapplicationauto-wiretheGemFireClientCache
ConfigurationServiceScanRestControllerpublicclassMyController
AutowiredClientCachecache
ConfiguringaJavaRESTClienttoAccessaServiceInstanceviaHTTPSTosupportJavaclientapplicationsaccessingaserviceinstanceRESTAPIendpointviaHTTPSyoumustmodifytheJavaBuildpacktoprovisionsecurityartifactsYouwillneedtoobtainthecorrectSSLcertificatefromyourCloudFoundryHAProxycredentialsandimportitintotheJREtruststoreoftheJavaBuildpackImportingthecertificatethenmakesitavailabletoyourJavaapplications
YouconfiguretheJREwithadditionalresourcesbyaddingtheresourcefilestotheappropriatelocationunderthe resources directoryofthebuildpackForSSLcertificatesthatshouldbeaddedtotheOpenJDKJREtruststorethecorrectlocationis resourcesopen_jdk_jrelibsecurity underthebuildpackrootToaddcustomSSLcertificatesaddyourcacertsfileto resourcesopen_jdk_jrelibsecuritycacerts ThisfileisoverlayedontotheOpenJDKdistributionTheexactproceduretofollowis
1 GettheSSLcertificatefromyourPCFOpsManagerbygoingtotheCredentialstabinElasticRuntimeandcopyingtheSSLRSAcertificatefromtheHAProxysectionSavethecertificatetoanewfile(forexample myCertcert )
2 Importthesavedcertificatefiletoyourtruststore
3 Clonethejavabuild-pack
4 CopyyourtruststorefromStep2aboveinto resourcesopen_jdk_jrelibsecuritycacerts underyourbuildpackrootdirectory
5 RebuildyourJavaBuildpackThisexampleusesofflinemode
$cd~projectsjava-buildpack$bundleinstall$bundleexecrakepackageOFFLINE=true
6 UploadthebuildpackForexample
copyCopyrightPivotalSoftwareInc2013-2018 33 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
$cfcreate-buildpacksecure-java-buildpackbuildjava-buildpack-offline-ltshagtzip1
7 MakesureclientapplicationsuseHTTPSwhenformingtheRESTAPIendpointURL
8 UsethenewbuildpackwhenpushingyourclientapplicationsForexample
$cfpush-fappyml-t30-bsecure-java-buildpack
DeployingApplicationsforUsewiththeGemFireServiceThissectionprovidestipsonpushingyourapplicationtothePivotalCloudFoundryElasticRuntimeenvironmentforusewiththeGemFireserviceSomeoftheapplicationdeploymentstepsmaydifferdependingonwhatkindofapplicationyouaredeploying
Re-deployingyourapplicationdoesnotaffectdatastoredinanyexistingserviceinstancesboundtotheapplication
SeeDeployanApplication inthePivotalCloudFoundryDocumentationfordetailedinformationonpushingCFapplications
UsingtheJavaBuildpackImportantPivotalrecommendsthatyouusethelatestJavaBuildpackwhenpushingyourapplicationsSpecifythelocationofthebuildpackusingthe-b parameter
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit
Toavoidhavingtorestageyourapplicationafterbindingtheserviceyoucanpushtheapplicationinitiallywiththe --no-start command
$cfpushltyour-app-namegt-pltlocation-of-your-app-filegt-bhttpsgithubcomcloudfoundryjava-buildpackgit--no-start
BindinganApplicationtotheGemFireServiceThefollowingproceduresdescribehowtobindaGemFireserviceinstancetoyourPivotalCloudFoundryapplication
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleftThisshouldbethesameOrgwhereyoucreatedtheserviceinstance
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouwishtobindtotheserviceApagedisplaysshowingthealreadyboundservicesandinstancesforthisapplication
5 ClickBindAlistofavailableservicesdisplays
6 ClicktheBindbuttonfortheGemFireserviceyouwanttobindtothisapplication
7 UsingthePivotalCloudFoundryCLIstartorrestageyourapplicationSeePushingorRestagingApplicationsAfterChanges
CLIInstructions
copyCopyrightPivotalSoftwareInc2013-2018 34 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
AlternatelyviatheCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 Runthefollowingcommandtotargetthespecificorgandspacewhereyouwanttocreatetheserviceplan$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommandtoviewrunningserviceinstances$cfservices
Getting services in org staging space staging as adminOKname service plan bound appsmy-gemfire-test gemfire GemFireSmallPlan
4 Runthefollowingcommandtobindtheapplicationtotheserviceinstance$cfbind-serviceltapplicationgtltservice-instance-namegt
Forexample
$ cf bind-service gfe-app my-gemfire-testBinding service my-gemfire-test to app gfe-appin org staging space staging as adminOKTIP Use cf restage to ensure your env variable changes take effect
5 Restageyourapplication$cfrestageltapplicationgt
PushingorRestagingApplicationsAfterServiceChangesToensurethatyourapplicationpicksupthecorrectenvironmentvariablesyoumustrestageorre-pushyourapplicationsafterbindingthemtotheGemFireserviceThiscancurrentlybedoneusingtheCLIInadditionifyoumakeanyotherchangestotheGemFireServicewhileitisboundtoyourapplication(forexampleaddmodifyordeletetheservice)youwillneedtore-pushorrestageyourapplicationafterwards
Pushingorre-stagingyourapplicationdoesnotaffectdatastoredintheexistingserviceinstance
Torestageorre-pushyourapplicationusingthePivotalCloudFoundryCLI
1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI$cflogin
2 RunthefollowingcommandtotargettheAPIendpointorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-altapi-endpointgt-oltorganizationgt-sltspace_namegt
3 Pushorrestageyourexistingapplication$cfpushltapplicationgt-pltlocation-of-your-app-filegt-bltbuildpack-locationgt
or$cfrestageltapplicationgt
Alternatelyifyoupushedyourapplicationwithoutstartingityoucanstartyourapplicationnowtopickupthenewlyboundservice$cfstartltapplicationgt
FormoredetailsondeployingapplicationsseeDeployanApplication inthePivotalCloudFoundrydocumentation
ViewingBindingMetaDataToviewthebindingvariablesusethefollowingprocedures
copyCopyrightPivotalSoftwareInc2013-2018 35 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
PCFDeveloperConsoleInstructions1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireservice
5 ClickontheEnvVariablestabTheenvironmentvariablesfortheservicebindingdisplay
AlternatelyyoucanalsoviewcredentialsusedbytheservicewhenbindingtotheapplicationbyclickingontheServicestabandclickingShowcredentialsServicecredentialsandlocatoraddressinformationdisplays
CLIInstructionsToviewthebindingvariablesintheCLItypethefollowingcommandafteryouhaveboundyourapplicationtotheGemFireservice
$cfenvltapplication-namegt
Ifsuccessfulyoushouldseesimilartothefollowinginthereturnedoutput
Getting env variables for app in org space as OKSystem-Provided VCAP_SERVICES p-gemfire [ credentials locators [ 100055[55221] 100056[55221] ] password 15587128842615488747 rest_url username dacaf950-1633-4741-7dc5-eb11ce5f33e2 label p-gemfire name MyService plan GemFireServicePlan1
copyCopyrightPivotalSoftwareInc2013-2018 36 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
tags [ gemfire ] ] No user-defined env variables have been setNo running env variables have been setNo staging env variables have been set
UnbindinganApplicationfromtheGemFireServiceWhenyoucreateaGemFireserviceinstancetheGemFireServiceBrokerallocatesaspecificclusterofGemFirelocatorsandserversYoucanbindunbindandthebindagaintothatparticularserviceinstanceasoftenasyouwantTheserviceinstancealwaysusesthesameclusterandtheServiceBrokerdoesnotdoanythingtothedatainthatserviceinstance
PCFDeveloperConsoleInstructionsTounbindtheapplicationfromtheGemFireservice
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 SelectthespacewhereyourGemFireserviceinstanceandboundapplicationhavebeendeployed
4 SelecttheapplicationthatyouhaveboundtotheGemFireserviceApagedisplaysthatshowtheboundservicesandinstancesforthisapplication
5 LocatetheboundserviceinstanceyouwanttounbindandclickUnbind
6 AconfirmationdialogboxdisplaysClickUnbindagain
7 Ifsuccessfulthefollowingmessagewillappearatthetopofthescreen
copyCopyrightPivotalSoftwareInc2013-2018 37 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
ServicesuccessfullyunboundfromtheapplicationTIPUselsquocfpushrsquotoensureyourenvvariablechangestakeeffect
8 UsethePivotalCloudFoundryCLItopushorrestageyourapplicationforthechangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfunbind-serviceltapplicationgtltservice-instance-namegt
whereisthenameoftheGemFireinstanceyouareunbindingfromthespecifiedForexample
$ cf unbind-service gfe-app my-gemfire-testUnbinding app gfe-app from service my-gemfire-test in org staging spacestaging as adminOK
4 Restageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
DeletingaGemFireServiceInstanceWhenyoudeleteaGemFireserviceinstanceallapplicationsthatareboundtothatserviceareautomaticallyunboundandanydataintheserviceinstanceisclearedInadditiontheallocatedserviceinstance(GemFirecluster)isreturnedtothepoolofavailableclustersandthoselocatorsandcacheserversarenowavailabletofutureapplications
PCFDeveloperConsoleInstructionsTodeleteaserviceinstanceusingthePivotalCloudFoundryDeveloperConsole
1 LogintothePivotalCloudFoundryDeveloperConsole
2 SelectyourOrgfromthedrop-downlistontheleft
3 LocatetherowunderServicesthatcontainstheserviceinstanceyouwanttodeleteandclickDelete
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
CLIInstructions1 LogintoyourPivotalCloudFoundryenvironmentusingthePivotalCloudFoundryCLI
$cflogin
2 RunthefollowingcommandtotargettheorgandspacewhereyouwanttopushorrestagetheapplicationForexample$cftarget-oltorganizationgt-sltspace_namegt
3 Runthefollowingcommand$cfdelete-serviceltservice-instance-namegt
whereisthenameoftheGemFireserviceyouaredeletingEnterlsquoyrsquowhenpromptedForexample
$ cf delete-service my-gemfire-testReally delete the service my-gemfire-testgt yDeleting service my-gemfire-test in org staging space staging as admin
copyCopyrightPivotalSoftwareInc2013-2018 38 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
OK
4 Ifyouhadapplicationsthatwereboundtothisserviceyoumayneedtorestageorre-pushyourapplicationfortheapplicationchangestotakeeffectSeePushingorRestagingApplicationsAfterChanges
ConfiguringMulti-site(WAN)ConnectionsBetweenTwoorMoreGemFireServiceInstancesYoucanconfigureGemFireserviceinstancesformulti-site(WAN)communicationForinformationaboutGemFiremulti-sitereplicationcapabilitiesseeMulti-site(WAN)Configuration intheGemFireUserrsquosGuide
Akeyprerequisiteformulti-sitereplicationisnetworkconnectivitybetweentheGemFireinstancestobeconfiguredformulti-siteconnectionsGemFirenodesontheoppositesidesofamulti-site(WAN)linkmustbeabletoestablishdirectconnectionstoeachother
TheGemFireserviceforPCFprovidesfunctionalitythatmakestheWANconfigurationprocesseasierforGemFireclustersinPCFTheserviceprovidessupportforconfiguringserviceinstancessothattheydiscovereachotherandestablishWANconnectionsYoumuststillcreateWANsendersandreceiversandconfiguredataregionsformulti-sitereplication
ThestepstoenableWANconnectionsbetweentwoGemFireserviceinstancesareasfollows
1 ForeachserviceinstanceobtaintheWANconfigurationURLusingthecommand
cfshow-wan-config-urlltservice_instancegt
2 WhenyoucreatetheclusterconfigurationforeachserviceinstanceconfiguretheWANsendersandreceiversanddataregionsthatshouldbereplicatedovertheWAN
3 SettheGemFireproperty distributed-system-id toauniqueintegervalueinthepropertiesymlfileforeachserviceinstance(seetheprevioussectionformoreinformationaboutconfiguringGemFirepropertiesforaserviceinstance)
4 RestarteachserviceinstancewiththeWANconfigurationURLsfortheotherinstancespassedasargumenttothe --enable-wan optionofthe cfrestart-gemfire commandForexample
cfrestart-gemfireltservice_instance_Agt--cluster-configltcluster_A_config_zipgt--propertiesltproperties_cluster_A_ymlgt--enable-wanltcluster_B_WAN_config_URLgt
TheabovecommandrestartsthelocatorsinadditiontotheserversThiscommandalsorequirestheBrokerHTTPUsernameandPasswordSeethesectiononBrokerCredentialsonhowtoobtaintheBrokerHTTPUsernameandPasswordAfterrestartingtheclustersareenabledforWANcommunicationtoeachother
copyCopyrightPivotalSoftwareInc2013-2018 39 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
UsingtheGemFireforCloudFoundryCLIPlug-in
InstallationFollowthisproceduretoinstalltheGemFireCLIplug-in
1 Downloadtheplug-inbinaryfromPivotalNetwork
2 EnableexecutepermissionsonthedownloadedfileForexample
$chmoda+xcf-gemfire-cli-darwin-amd64
3 Installtheplug-inbinary
$cfinstall-plugincf-gemfire-cli-darwin-amd64-120
Installingplugincf-gemfire-cli-darwin-amd64-120OKPluginGemFirev120successfullyinstalled
4 (Optional)Usethe cfplugins commandtoverifythatyouhavesuccessfullyinstalledtheGemFireplugin
$cfpluginsListingInstalledPluginsOK
PluginNameVersionCommandNameCommandHelpGemFire120gemfireGemFireplugincommandshelptextGemFire120restart-gemfireRestartGemFirecacheservers(Alsousedforapplyingconfigurationchanges)GemFire120export-gemfireRetrieveGemFireartifactssuchaslogsandstatsGemFire120show-wan-config-urlDisplaytheWANconfigurationURLfortheserviceinstance
SeeUsingcfCLIPlugins inthePivotalCloudFoundry (PCF)documentationforgeneralinformationaboutinstallinguninstallingorlistingavailableCloudFoundryCommandLineInterfaceplug-ins
OverviewUsethe cf
gemfirecommandtodisplaybasicusageinformationfortheplugin
$cfgemfireNAMEcf-CloudFoundryplugintointeractwithGemFireserviceinstances
USAGEcf[globaloptions]command[commandoptions][arguments]
VERSION120
AUTHOR(S)PivotalInc
COMMANDSrestart-gemfireSERVICE_INSTANCE--cluster-configCONFIGZIP|-cCONFIGZIPexport-gemfireSERVICE_INSTANCEshow-wan-config-urlSERVICE_INSTANCEhelphShowsalistofcommandsorhelpforonecommand
GLOBALOPTIONS--help-hshowhelp--version-vprinttheversion
Executeanyofthecommandswiththe -h argumenttodisplayusageinformationForexample
copyCopyrightPivotalSoftwareInc2013-2018 40 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
$cfexport-gemfire-hNAMEexport-gemfire-RetrieveGemFireartifactssuchaslogsandstats
USAGEcfexport-gemfireSERVICE_INSTANCE[commandoptions]
DESCRIPTIONRetrieveartifactsfromagivenserviceinstance(cluster)
OPTIONS--logs-lpathfordownloadedlogfilearchive--cluster-config-cpathfordownloadedclusterconfiguration--properties-ppathfordownloadedclusterproperties
BrokerHTTPUsernameandPasswordThefollowingcommandsrequireadditionalauthentication
export-gemfire
restart-gemfire
TheBrokerusernameandpasswordcanbefoundonyourPCFOpsManagerontheGemfireforPCFTileSeetheCredentialstabUnderthenameGemfireBrokerCredentialstheywillbeintheformof usernamepassword Thesecredentialswillberequiredwhenrunningthecommands export-gemfire amprestart-gemfire byacommandlineprompt
Optionallythesecommandscanberunnon-interactivelybyusingtheflags --broker-username or -U and --broker-password or -P
export-gemfirecfexport-gemfire enablesyoutoexportartifactsfromagivenserviceinstancesuchastheGemFirelogsandstatisticsandtheclusterconfigurationandpropertiesTheclusterconfigurationandpropertiesexportedinthiswaycanbeappliedtoanotherserviceinstanceusingthe restart-gemfire command
The cfexport-gemfire--cluster-config
commanddownloadstheconfigurationintheformatprovidedbytheGemFireClusterConfigurationserviceSee
OverviewoftheClusterConfigurationService inthePivotalGemFiredocumentationformoreinformation
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
Usage
cfexport-gemfireSERVICE_INSTANCE[commandoptions]
Optionalargumentsinclude
--logs PATH mdashDownloadstheGemFirelogsandstatisticsfilesfortheclustertothepathandzipfilegivenbyPATH
--cluster-config PATH mdashDownloadstheGemFireclusterconfigurationtothepathandzipfilegivenbyPATH
--properties PATH mdashDownloadstheclusterpropertiesyamlfiletothepathandyamlfilegivenbyPATH
Example
cfexport-gemfireclusterA--logsclusterA_logszip--propertiesclusterA_propsyml--cluster-configclusterA_configzip
restart-gemfirecfrestart-gemfire enablesyoutorestartaGemFireclusterandperformanumberofclustertasksthateitherrequireaclusterrestart(suchasapplyingaclustercacheconfiguration)orthatareconvenienttoperformduringarestart(suchasclearingoutlogfiles)Thecommandallowsforldquodaisy-chainingrdquo
copyCopyrightPivotalSoftwareInc2013-2018 41 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
optionssoyoucanperformmultipletaskswithasinglerestartForexampleyoucanuseasingleapplicationofthiscommandtoapplyanewclusterconfigurationclearthelogfilesandenabletheRESTAPI
NoteUsing --reset-defaults with --cluster-config firstcausestheclusterconfigurationtoberestoredtotheoriginalconfigurationThenewconfiguration(providedwith --cluster-config )isthenappliedBothoperationstaketakeplaceduringthesamerestart
Yoursquollbepromptedforcredentials BrokerHTTPUsername
amp BrokerHTTPPassword
whenthiscommandisinvokedPleaseseethenoteonhowtoobtainthe
credentialsTorunthiscommandnon-interactivelythebrokerusernameandpasswordcanbeprovidedwith --broker-username or -U and--broker-password or -P flags
TheonlyrequiredargumenttothiscommandisthenameofaGemFireforPivotalCloudFoundryserviceinstancethatyouhavedeployedAllotherargumentsareoptional
Usage
cfrestart-gemfireSERVICE_INSTANCE[--clear-logs][--clear-disks][--cluster-configPATH][--default-serverenable|disable][--enable-wanCOMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS][--include-locators][--spring-xmlCLASSPATH_TO_XML][--propertiesPATH][--reset-defaults][--rest-apienable|disable][--timeoutSECONDS]
Optionalargumentsinclude
--clear-logs mdashClearsalloftheGemFirelogsandstatisticsfilesforthecluster
--clear-disks mdashClearsallofthediskstoresremovingallpersisteddataCAUTIONThisoptionremovesallpersisteddatafromthecluster
--cluster-config PATH mdashUploadstheclusterconfigurationfilegivenbyPATH
--default-server=enable|disable mdashDetermineswhethertostartupthedefaultGemFirecacheserver
--enable-wan COMMA_SEPARATED_LIST_OF_WAN_CONFIG_URLS mdashEnablesaGemFireWANreplicationchanneltoeachoftheserviceinstancesidentifiedbytheWANconfigurationURLsyouprovideYoucanobtaintheWANconfigurationURLsbyinvoking cf show-wan-config-url oneachoftheserviceinstancestowhichyouwanttoenableaWANconnectionThenprovidetheconfigurationURLsascommaseparatedargumentlistSettingthisoptionrestartstheGemFirelocators
--include-locators mdashIncludesthelocatorsinallrequestedactionsIfyouomitthisoptionthecommandonlyappliestocacheservers
--spring-xml mdashSpecifiestheclasspathtoaSpringXMLfileinaclusterconfigurationJARThisoptionappliestheSpringXMLfileintheJARtotheclusterThisoptionmustbeusedalongwiththe --cluster-config optiontoprovisionthecontainingJARfile
--properties PATH mdashAppliesthepropertiesintheYAMLfileatthespecifiedPATHtotheGemFireclusterSeeConfiguringJVMandGemFirePropertiesinConfiguringaGemFireServiceInstanceformoreinformation
--reset-defaults mdashRestorestheoriginaldefaultconfigurationfortheclusterclearsarchivesanddiskstoresCAUTIONThisoptionremovesallpersisteddatafromthecluster
--rest-api=enable|disable mdashEnablesordisablestheGemFireRESTdeveloperAPIEnablingtheRESTAPIsetsupasinglefrontendURLforRESTconnectionsConnectionstotheURLareloadbalancedbetweenallavailableservers
--timeout SECONDS mdashProvidesthetimeoutvalueinsecondsfortherestartcommand
show-wan-config-urlcfshow-wan-config-url showstheWANconfigurationURLforthegivenserviceinstanceinHTTPAuthenticationformatwithplaceholdersforthebrokerusernameamppasswordReplacetheplaceholdersintheURLbeforepassingitasinputtothe --enable-wan optionof cfrestart-gemfire toconfigureotherserviceinstancesforWANcommunicationtothisinstance
Pleaseseethenoteonhowtoobtainthecredentialstoreplacetheplaceholders BROKER_USERNAME and BROKER_PASSWORD intheURL
Usage
cfshow-wan-config-urlSERVICE_INSTANCE
Example
$ cf show-wan-config-url instance_one=gt httpsBROKER_USERNAMEBROKER_PASSWORDgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
Change the placeholders BROKER_USERNAME and BROKER_PASSWORD in the cli output before passing it as input to `cf restart-gemfire --enable-wan`
copyCopyrightPivotalSoftwareInc2013-2018 42 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
$ cf restart-gemfire --enable-wan httpsmy-usernamemy-passwordgemfire-brokergf2pcf-gemfirecomadminwancredentials93f7add8-d077-4489-b16b-4905c51d3d46
copyCopyrightPivotalSoftwareInc2013-2018 43 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
Troubleshooting
ServiceInstallationTroubleshooting
ProblemCouldnotdeployaserviceinstanceintheElasticRuntimeIfyoutrytodeploy(andallocate)moreSessionStateCachingserviceinstancesthanareavailableasdefinedbyyourPivotalCloudFoundry (PCF)Administratoryoumayreceivethefollowingerrormessage
500ERRORYOUHAVEREACHEDTHISPAGEBECAUSEANERROROCCURREDPLEASECONTACTYOUROPERATOR
Youneedtodeleteexistingserviceinstancesorasktheadmintodeploymoreinstances
ProblemServiceplantiledoesnotshowupintheDeveloperConsoleMarketplaceVerifythattheregistererrandunderlifecycleerrandsisselectedintheOpsManagertileconfigurationscreen
ApplicationTroubleshooting
ProblemApplicationdoesnotpickupchangestotheserviceinstanceMakesureyourestage(orre-push)yourapplicationifyouhavemadeconfigurationchangestotheunderlyingserviceinstance
ServiceBrokerTroubleshootingTheServiceBrokerisresponsibleformanagingthelifecycleofserviceinstancesIfyouencounterissueswithserviceinstancemanagement(creatingdestroyingbindingunbindingetc)thebrokerlogsmaycontainsomeclues
ThelogscanbefoundonbrokerVMsat varvcapsyslogbrokerbrokerstdoutlog andareloggedinJSONformatYoucanuseautilitysuchasjq toparsetheselogsandextractinformation log_level ofeachmessageisnumber0-3correspondingtothefollowingloglevels DEBUG INFO ERROR andFATAL Herearesomeexamples(usingjq15)
DisplayallERRORlogs
jq|select(log_level==2)brokerstdout
Searchlogformessagescontainingasubstring
jq|select(message|contains(some-substring))brokerstdout
Checkoutthejqmanualformoreusagedetails
BrokerendpointsforadvancedtroubleshootingGET admincredentialslocator ip GivenanIPaddressofalocatorwillretrievethecredentialsfortheserversintheGemfirecluster
curl100161538080admincredentials10016155
copyCopyrightPivotalSoftwareInc2013-2018 44 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
credentials[passwordapasswordusernameausernamelocators[1001615410016155]]
GET adminwancredentialsservice instance GUID GiventheGUIDofaGemfireserviceinstancewillretrievetheWANcredentialsforthatserver
curl100161538080adminwancredentials7dd9446b-20c6-4fbc-a31f-8416fd96abbd
passwordapasswordusernameausernamelocators[10016154[55221]10016155[55221]]
GET admininstance_counts Displaysthenumberofavailableserviceinstancesassociatedwiththebroker
curl100161538080admininstance_counts
[count3statusAVAILABLE]
GET admincluster_configservice instance GUID Retrievestheclusterconfigasazipfilewhichcontainsclusterxmlandclusterproperties
curl100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38gtcluster_configzip
POST admincluster_configservice instance GUID Updatestheclusterconfigofthespecifiedserviceinstance
Options
reset-defaultsboolclear-logsboolclear-disk-storesboolcluster_configzipfile(clusterclusterxmlclusterclusterpropertiesandanycustomcodetobedeployedonGemFireserver)cluster_propertiesfileunsure
curl-v-Freset-defaults=true100161538080admincluster_config47574053-7050-4911-9277-5725b27e1e38
GET adminarchivesservice instance GUID Retrievesthelogfilesoftheclusterasazipfile
curl100161538080adminarchives47574053-7050-4911-9277-5725b27e1e38gtarchiveszip`
DELETE v2service_instancesservice instance GUID Deletesaserviceinstance
curl-v-XDELETEhttp100181518080v2service_instances608363f1-4811-480d-bd95-b2ad9833cac5
copyCopyrightPivotalSoftwareInc2013-2018 45 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17
UninstallingGemFireforPivotalCloudFoundryPrerequisites
Uninstalling
PrerequisitesBeforeyoudeleteyourGemFireforPivotalCloudFoundrytilepleaseensureallGemFireserviceinstanceshavebeendeletedIfyoufailtodeleteallGemFireserviceinstancesbeforedeletingthetileitmaycauseissuesifyoueverwishtore-installtheGemFiretile
TocheckifthereareanyGemFireserviceinstancespresentinyourPivotalCloudFoundrydeploymentyoucanrunthesimpleshellscriptshownbelow
usrbinenvbash
fororgin$(cforgs|awkNRgt3)docftarget-o$orggtdevnullforspacein$(cfspaces|awkNRgt3)docftarget-s$spacegtdevnullcfservices|grepp-gemfiredonedone
UninstallingSeethefollowinginstructionsforuninstalling PivotalCloudFoundrytiles
copyCopyrightPivotalSoftwareInc2013-2018 46 17