【IBM Application Gateway】关于使用Redis服务器进行会话保持
首先
我尝试将包含在IBM Security Verify中的IBM Application Gateway部署到Openshift,并验证了其故障转移功能。
在中文中,故障转移设置有3种大的选项。
在前一篇文章中我们介绍了两个内容。
关于【IBM应用网关】的故障切换行为。
这次我们将介绍使用第三个Redis服务器进行会话管理。
使用 Redis 服务器实现分布式会话
为了进行操作验证,我们使用了一个独立的Redis服务器来进行功能验证。
Redis服务器使用Kubernetes手册中的yaml文件,在Openshift上创建了Deployment/Service。
例如:部署使用Redis的PHP留言板应用程序。
https://kubernetes.io/ja/docs/tutorials/stateless-application/guestbook/
由于Deployment.yaml样本中的图像是”k8s.gcr.io/redis:e2e”,我们将其更改为v6及更高版本的Redis服务器。
示例)image: redis:latest
样本的Deployment.yaml中图像为”k8s.gcr.io/redis:e2e”,所以我们要将其更改为v6及以上版本的Redis服务器。
示例)image: redis:latest
由于Deployment.yaml样本中的图像为”k8s.gcr.io/redis:e2e”,因此我们将其更改为v6及以上版本的Redis服务器。
例如)image: redis:latest
我們將為該項目創建Deployment/Service。
> oc create -f redis-master-deployment.yaml
> oc create -f redis-master-service.yaml
> oc get pods |grep redis*
redis-master-f46ff57fd-wg7nw 1/1 Running 0 7h32m
> oc get service |grep redis*
redis-master ClusterIP 172.xx.xx.xx <none> 6379/TCP 7h32m
以下是在IBM Application Gateway的操作验证中使用的yaml文件的部分内容。在配置Redis服务器时,需要同时进行Services/Servers的配置。
服务/Redis
https://docs.verify.ibm.com/gateway/docs/yaml-services-redis
服务器/会话
https://docs.verify.ibm.com/gateway/docs/yaml-server-session
services:
redis:
default_collection: test-collection-session
key_prefix: iag-test-
collections:
- connect_timeout: 20
health_check_interval: 200
idle_timeout: 100
io_timeout: 300
matching_host: xxxxx.jp-tok.containers.appdomain.cloud
max_pooled_connections: 200
name: test-collection-session
servers:
- host: redis-master
name: redis-a
port: 6379
server:
ssl:
front_end:
certificate: "@secret_files/iag.certkey.pem"
local_applications:
cred_viewer:
path_segment: "cred-viewer"
enable_html: true
session:
cookie_name: sess_cookie
max_sessions: 20
timeout: 600
inactive_timeout: 100
redis:
enabled: true
key_prefix: "iag-test-"
default_collection: test-collection-session
client_list_cache_lifetime: 10
concurrent_sessions:
enabled: true
prompt_for_displacement: true
max_user_sessions: 15
user_identity_attribute_name: AZN_CRED_PRINCIPAL_NAME
reauth:
login_time_window: 10
~~割愛~~
identity:
oidc:
discovery_endpoint: https://<tenant>.verify.ibm.com/oidc/endpoint/default/.well-known/openid-configuration
client_id: <OIDC_CLIENT_ID>
client_secret: <S_OIDC_CLIENT_SECRET>
~~割愛~~
接下来,我们将访问Redis服务器的Pod并确认数据。
在一次访问中,生成了三个条目。
> oc rsh <Redisサーバーのpod名>
> redis-cli keys "*"
1) "iag-test-user-751xxxxqhv"
2) "iag-test-client-iag-test-session-C7KW2WkiwYwc/x/6yuaXXXXXXpYWZDc="
3) "iag-test-session-C7KW2xxxxxZDc="
关于与JWE FailOverCookie的比较
因为手册中有比较内容,所以我将在Chrome中的机器翻译进行记录。
请点击链接查看原文内容:
共享会话
https://docs.verify.ibm.com/gateway/docs/tasks-sharing-sessions
关于Redis会话缓存的限制
由于手册有限制,所以我将在Chrome上使用机器翻译,并进行记述。
请参考以下原文发表的资料。
分享会话
https://docs.verify.ibm.com/gateway/docs/tasks-sharing-sessions
-
- IAGインスタンスが再起動されると、そのインスタンスが参照しているセッションの非アクティブタイムアウトがリセットされます。この状況では、セッションが次にIAGインスタンスによって参照されるときに、非アクティブタイムアウトが再び開始されます。または、ライフタイムタイムアウトにより、一定期間後もセッションが期限切れになります。
-
- IAGは、Redisサーバーに保存されているセッションを管理するための管理インターフェースを提供していません。代わりに、redis-cliなどのネイティブRedisユーティリティを使用して、Redisサーバーに保存されているセッションデータを管理する必要があります。
-
- Redisクラスターのサポートは利用できません。
- IBMは、Redisサーバー自体を提供またはサポートしていません。サーバーは個別に取得および管理する必要があります。
最终
我们已经介绍了在IBM应用网关中使用Redis服务器进行会话保持的方法。
请注意,IBM Security Verify/IBM应用网关不支持Redis服务器,因此在交付过程中请注意。