我正在尝试使用WSO2AM和WSO2IS作为KeyManager来实现双重HA解决方案。
实际上,我有2个节点,WSO2AM和WSOIS-KM分别安装在一个节点上,并且运行正常。两个节点都在同一数据库上访问和写入。 当我尝试从创建该应用程序的另一个节点访问商店中注册的应用程序时,问题就开始出现。
我在centos环境上安装了WSO2AM 2.6.0和IS-KM 5.7.0。 AM和IS-KS都在具有por偏移的同一节点上运行。我有2个这样配置的节点。
问题示例:
我从节点1访问节点1的存储并创建一个新应用。我生成的令牌和密钥没有任何问题。在那之后,我访问了节点2的存储,我看到了相同的应用程序,但是当我尝试访问和查看令牌时,它抛出了一个异常,例如OAuth令牌不存在或类似的东西(我忘了拿一个证明)。
我知道我必须在HA中制作WSO2AM,但是我不确定是否必须将WSO2IS部署为HA,然后转换为KM或我该怎么做。
基本上,我想在HA中扮演两个角色,并且两个商店都使用相同的令牌访问相同的应用程序,而与发送请求的节点无关。
答案 0 :(得分:0)
您可以使用IS作为密钥管理器来配置两个API Manager节点(node01和node02)以实现您的用例。
如果仅使用一个IS密钥管理器实例和两个API Manager节点,则需要在两个API Manager节点的前面都配备一个负载均衡器(启用粘性会话且数据源在所有节点之间共享HA部署)并按如下所示配置API管理器
API管理器节点: api-manager.xml (假设IS-KM端口偏移为1,因此为9444)
<AuthManager>
<!-- Server URL of the Authentication service -->
<ServerURL>https://localhost:9444/services/</ServerURL>
...
</AuthManager>
...
<APIKeyValidator>
<!-- Server URL of the API key manager -->
<ServerURL>https://localhost:9444/services/</ServerURL>
...
</APIKeyValidator>
IS密钥管理器节点: api-manager.xml
<APIGateway>
<Environments>
<Environment type="hybrid" api-console="true">
...
<!-- Server URL of the API gateway -->
<ServerURL>https://loadbalancer/services/</ServerURL>
...
</APIGateway>
NGINX示例
upstream mgtnode {
server localhost:9443; # api manager node 01
server localhost:9443; # api manager node 02
}
server {
listen 443;
server_name mgtgw.am.wso2.com;
proxy_set_header X-Forwarded-Port 443;
...
location / {
...
proxy_pass https://mgtnode;
}
}