非PCF(VSI)平台Spring Boot GemFire客户端连接Pivotal Cloud Cache方案问询
非PCF环境Spring Boot应用对接HTTPS协议PCC服务的方案
完全可以实现连通,整体配置逻辑和你用gfsh访问HTTPS PCC的逻辑一致,只需要给Spring Boot的Geode客户端配置正确的SSL信任规则、PCC服务地址、身份认证信息即可,具体操作步骤如下:
前置准备
你需要先从可正常访问的gfsh配置或者PCC服务密钥中获取以下信息:
- PCC服务的HTTPS locator访问地址与端口
- PCC服务端证书(公共CA签发的证书可省略,自签名证书必须获取)
- PCC服务的身份认证凭据(用户名+密码)
核心配置步骤
1. 导入PCC证书到Java信任库
如果PCC用的是自签名证书,需要先将证书导入到应用使用的Java信任库中,执行命令:
keytool -import -alias pcc-server -file <PCC证书文件路径>.crt -keystore <信任库存储路径>.jks -storepass <信任库密码>
如果使用JDK默认的全局信任库,路径为$JAVA_HOME/jre/lib/security/cacerts,默认密码为changeit。
2. 补充Spring Boot应用配置
因为你已经使用了@ClientCacheApplication注解,只需要在application.yml(或application.properties)中补充以下配置即可:
spring: data: gemfire: # 配置PCC的locator地址,多个地址用逗号分隔 locators: <PCC的locator域名>[<HTTPS端口>] # 开启客户端SSL配置 ssl: enabled: true truststore: location: classpath:<你的信任库文件名>.jks password: <信任库密码> type: JKS # 配置PCC身份认证信息 security: username: <PCC访问用户名> password: <PCC访问密码> # 关闭PCF环境自动探测,避免拉取不存在的VCAP_SERVICES环境变量报错 pcf: enabled: false
3. 自定义配置适配特殊场景(可选)
如果你的证书逻辑有特殊要求,不想用全局配置,也可以通过实现ClientCacheConfigurer接口手动注入客户端参数:
@Configuration public class PccClientCustomConfig implements ClientCacheConfigurer { @Override public void configure(String beanName, ClientCacheFactoryBean clientCacheFactoryBean) { Properties gemfireProps = new Properties(); // 开启全组件SSL gemfireProps.setProperty("ssl-enabled-components", "all"); gemfireProps.setProperty("ssl-truststore", "/本地/信任库/绝对路径.jks"); gemfireProps.setProperty("ssl-truststore-password", "你的信任库密码"); // 配置认证参数 gemfireProps.setProperty("security-client-auth-init", "org.apache.geode.security.templates.UserPasswordAuthInit.create"); gemfireProps.setProperty("security-username", "PCC用户名"); gemfireProps.setProperty("security-password", "PCC密码"); clientCacheFactoryBean.setProperties(gemfireProps); } }
连通性验证
- 启动应用后查看日志,没有SSL握手失败、认证失败、locator连接超时的报错即为基础连通成功
- 可以注入
GemfireTemplate执行简单的put/get操作,验证数据读写正常即可
常见注意事项
- 要确保你的独立VSI服务器的网络出站策略放开了到PCC服务HTTPS端口的访问,权限和你正常访问PCC的gfsh所在环境一致
- 不要遗漏关闭PCF环境自动探测的配置,否则Spring Data Geode默认会去读取PCF环境变量,找不到就会启动失败
- 如果PCC有多个locator节点,全部配置到locators参数中即可实现高可用
内容的提问来源于stack exchange,提问作者Vaidy
相关产品推荐
相关产品推荐

