在AWS控制台上创建一个应用程序负载均衡器(ALB),并启用HTTP/2.
在一个AWS ElasticBeanstalk Environment上运行一个RSocket Server。
创建一个Target Group,并将ALB配置为使用此Target Group。
在ALB的Listener中配置HTTP/2协议与目标组。
启用TLS,为Domain Name绑定证书,并将ALB的Listener协议更改为HTTPS。
代码示例:
// RSocket Server
@Bean
public RSocketFactoryCustomizer configureRSocket() {
return rsocketFactory -> rsocketFactory
.errorConsumer(error -> logger.warn("RSocket error", error))
.acceptor(SocketAcceptor.forRequestResponse(payload -> Mono.just(DefaultPayload.create("Hello RSocket!"))));
}
// Application Loadbalancer
@Resource
private File pemfile;
@Bean
public SSLContext sslContext() throws GeneralSecurityException, IOException {
try (InputStream inputStream = new FileInputStream(pemfile)) {
return SSLContextBuilder
.create()
.loadKeyMaterial(inputStream, "".toCharArray(), "".toCharArray())
.build();
}
}
@Bean
public ApplicationListener configureListener() {
return event -> {
HttpServer httpServer = ((NettyWebServer) event.getWebServer()).getServer();
ALBListener albl = ((ALBListener) httpServer.getListener("alb"));
if (albl != null)
albl.getConfiguration().setBindingOptions(
new SSLBindingOptions.Builder()
.sslContext(sslContext())
.build()
);
};
}