因为Amazon Elastic Beanstalk中的实例数量会不断变化。如果应用程序是用PHP构建的,如何在多个实例之间维护会话?如何确保不删除父实例(应用程序启动时的第一个实例
发布于 2013-09-08 02:36:20
AWS博客上的这篇文章描述了如何使用DynamoDB通过AWS SDK for PHP进行会话状态处理。
http://aws.typepad.com/aws/2012/04/scalable-session-handling-in-php-using-amazon-dynamodb.html
发布于 2013-09-09 05:31:42
如果应用程序是用PHP构建的,如何在多个实例之间维护会话?
不是的。弹性Beanstalk不会维护多个实例之间的会话。您必须自己维护多个实例之间的会话。如果您启用了弹性负载均衡会话粘性,则只会确保将您的用户转发到同一实例。
如何确保不删除父实例(应用程序启动时的第一个实例
Elastic Beanstalk Auto Scaling使用Default Termination Policy,它将首先销毁最旧的实例。您可以修改弹性Beanstalk弹性伸缩销毁策略,避免先销毁最老的实例。
发布于 2016-12-06 03:20:40
下面是关于如何使用DynamoDB和Tomcat配置持久会话的教程。https://packageprogrammer.wordpress.com/2014/01/13/aws-elastic-beanstalk-and-dynamodb-session-manager-for-tomcat/
亚马逊网络服务项目:https://github.com/aws/aws-dynamodb-session-tomcat
使用DynamoDB管理Tomcat会话状态:http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/java-dg-tomcat-session-manager.html
以上链接中的关键摘录。请注意,由于本教程使用的是aws-dynamodb-session-tomcat的Tomcat 7和1.0.1,因此您可能更改了版本号
Tomcat的配置
从Tomcat下载AmazonDynamoDBSessionManagerForTomcat-2.0.4.jar并将其复制到aws-dynamodb-session-tomcat安装的lib目录中编辑context.xml以使用带有代码的.jar:
<?xml version='1.0' encoding='utf-8'?>
<Context>
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Manager className="com.amazonaws.services.dynamodb.sessionmanager.DynamoDBSessionManager"
createIfNotExist="true" />
</Context>
弹性豆茎的配置
从aws-dynamodb-session-tomcat下载AmazonDynamoDBSessionManagerForTomcat-2.0.4.jar发布并复制到您的WAR的.ebextensions目录中使用下面的代码编辑context.xml并复制到您的WAR的.ebextensions目录中的.ebextensions目录(记住它必须在/WEB-INF目录中,对于grails应用程序是/web-app ),创建一个.config文件来编写执行context.xml替换的命令,并将jar复制到Beanstalk实例中。
container_commands:
01-copy-aws-library:
command: "cp WEB-INF/.ebextensions/AmazonDynamoDBSessionManagerForTomcat-2.0.4.jar.jar /usr/share/tomcat8/lib/"
02-replace-tomcat-context:
command: "cp WEB-INF/.ebextensions/context.xml /etc/tomcat8/context.xml"
现在,只需上传并部署包含更改的war。尝试登录并进入亚马逊网络服务控制台->服务->DynamoDB,查找一个名为Tomcat_SessionState的表。你有亲和力和毅力!
https://stackoverflow.com/questions/18672541
复制相似问题