Tomcat7セッション永続化 〜 DynamoDB編|アドカレ2013 : CFn #24

『アドベントカレンダー2013:AWS CloudFormationビッグバンテンプレート』、本日は24日目クリスマス・イブDEATH。横田あかりDEATH!クラスメソッド開発ブログの公開記事が2000本を超えました!そして私の執筆ランクが30に上がりました!おめでたい〜!

昨日は慎介さんのGlusterFS編でした。分散ファイルシステムをボタン一発で構築ってステキ。

Tomcatのセッション管理

Tomcatのセッション管理にDynamoDBを使う方法については、Amazon DynamoDBによるTomcatセッション永続化とフェイルオーバーというエントリで以前紹介致しました。

以前のエントリでは、ロードバランサー配下のTomcatのセッション管理の方法について考え方といくつかの実現手段をご紹介しまして、セッションの永続化についてDynamoDBを使ったらどういった動きになるのか確認しました。

公開テンプレート

Tomcat7(Beanstalk)+DynamoDBを作成

記述のポイントは以下です。"Stickiness Policy"のデフォルトは"false"なので、"true"にしています。

    "Tomcat7DynamoApplication" : {
      "Type" : "AWS::ElasticBeanstalk::Application",
      "Properties" : {
        "Description" : "Tomcat7Dynamo Application",
        "ApplicationVersions" : [{
          "VersionLabel" : { "Ref":"Tomcat7DynamoVersion" },
          "Description" : { "Fn::Join" : ["", [ "Version ", { "Ref":"Tomcat7DynamoVersion" } ]]},
          "SourceBundle" : {
            "S3Bucket" : "cm-public-cfn-templates",
            "S3Key" : { "Fn::Join" : ["", [ "tomcat7-dynamo/tomcat7-dynamo-", { "Ref":"Tomcat7DynamoVersion" }, ".war" ]]}
          }
        }],
        "ConfigurationTemplates" : [{
          "TemplateName" : "DefaultConfiguration",
          "Description" : "Default Configuration",
          "SolutionStackName" : "64bit Amazon Linux 2013.09 running Tomcat 7 Java 7",
          "OptionSettings" : [
            { "Namespace" : "aws:autoscaling:launchconfiguration", "OptionName" : "EC2KeyName", "Value" : { "Ref" : "KeyName" } },
            { "Namespace" : "aws:autoscaling:launchconfiguration", "OptionName" : "SecurityGroups", "Value" : { "Ref" : "Tomcat7DynamoSecurityGroup" } },
            { "Namespace" : "aws:autoscaling:launchconfiguration", "OptionName" : "IamInstanceProfile", "Value" : { "Ref" : "PowerUserProfile" } },
            { "Namespace" : "aws:autoscaling:launchconfiguration", "OptionName" : "InstanceType", "Value" : { "Ref" : "InstanceType" } },
            { "Namespace" : "aws:elasticbeanstalk:application", "OptionName" : "Application Healthcheck URL", "Value" : "/" },
            { "Namespace" : "aws:elasticbeanstalk:environment", "OptionName" : "EnvironmentType", "Value" : "LoadBalanced" },
            { "Namespace" : "aws:elasticbeanstalk:hostmanager", "OptionName" : "LogPublicationControl", "Value" : "true" },
            { "Namespace" : "aws:elasticbeanstalk:container:tomcat:jvmoptions", "OptionName" : "JVM Options",    "Value" : "" },
            { "Namespace" : "aws:elasticbeanstalk:container:tomcat:jvmoptions", "OptionName" : "Xmx",            "Value" : "512m" },
            { "Namespace" : "aws:elasticbeanstalk:container:tomcat:jvmoptions", "OptionName" : "XX:MaxPermSize", "Value" : "128m" },
            { "Namespace" : "aws:elb:policies", "OptionName" : "Stickiness Policy", "Value" : "true" }
          ]
        }]
      }
    },

まとめ

テンプレートはGithubに公開してあります。改善点等気づかれたらご指摘いただけるとうれしいです。

今日は最終日!ギリギリ間に合ったぜ!!@オフィス

クラスメソッドAWSチームのアドベントカレンダーいかがだったでしょうか?CloudFormationを延々と公開し続けるという前代未聞のドM企画。このアドカレを誰が見てくれるのか、何人の方がワンクリックで起動してくれたのか、いったい誰得なのかw。始める前はそんな不安もありましたが、終わってみれば、AWSチーム全員がCloudFormationの使い手として胸を張ってインフラ構築をできるようになりました。実は、まだ公開していないテンプレートが数十もあります。アドカレという形ではないかもしれませんが、AWSを活用しようとしている皆さんの一助になれば幸いです。次回は、しんやさん&もっちーの「アドカレまとめ」DEATH!