|
imported>Administrator |
1行目: |
1行目: |
− | '''パーシステンス'''([[英語]]:persistence)とは、直訳すると「存続」という意味である。
| + | CentOS 7でもsysctlは使える。ただし微妙に仕様が変わっている。 |
| | | |
− | ==概要== | + | == 手順 == |
− | [[ウェブ]]の世界でパーシステンスという場合は、ほぼ[[ロードバランサー]]を咬ました複数台の[[HTTPサーバー]]で[[セッション]]を共有するためのセッションサーバー、およびその構築方法をさしている。明示的に「セッション・パーシステンス」などと記載している事例も見受けられる。
| + | === 設定 === |
| + | IPv6を無効にする。 |
| + | $ echo "net.ipv6.conf.all.disable_ipv6 = 1" > /etc/sysctl.d/00_ipv6disable.conf |
| | | |
− | ==ハードウェアで対応== | + | === 設定反映 === |
− | パーシステンスの主な実現方法としては高性能な[[ロードバランサー]]製品を用いる方法がある。高性能なロードバランサー製品には接続は同一のHTTPサーバーにだけ接続しつづけるという機能が付いている。これを使えば共有セッションを保持する[[サーバー]]を用意しなくても個々のサーバー内で完結できる。また[[アプリケーション]]側での対応が不要であるため[[プロプライエタリ]]なものや、[[プログラム]]の改変をしている場合じゃねぇ[[デスマーチ]]に陥った案件などでは活躍する。
| + | 「/etc/sysctl.d/*.conf」系の設定変更の反映は「sysctl --system」を使用する。 |
| + | $ sysctl --system |
| | | |
− | ==アプリケーションで対応==
| + | なお、「/etc/sysctl.conf」に設定を書いた場合はCentOS 6までの「sysctl -p」でも反映される。 |
− | [[アプリケーション]]でパーシステンスに対応する方法としては[[データベース]]に[[セッション]]を保存するという方法がある。この際に用いる[[データベース]]は一般的な[[RDBMS]]でもよいが、[[セッション]]という単純な[[データ構造]]、かつ頻繁な読み書き、かつ[[スケールアウト]]したい要件では[[Redis]]などの[[NoSQL]]を用いるのが現実的である。
| |
| | | |
− | ===PHP: memcached===
| |
− | [[PHP]]では[[セッション]]の保存先に[[memcached]]を指定できる。memcachedを別サーバーにすることでHTTPサーバーを[[DNSラウンドロビン]]で単純に複数台設置しても簡単に対応できる。
| |
| | | |
− | php.iniで設定するのが手軽である。
| + | == 関連項目 == |
− | session.save_handler = memcached // コメントアウトをはずす
| + | * [[CentOS 7/ifconfigがない]] |
− | session.save_path = "tcp://localhost:11211" // 追記
| |
| | | |
− | ===ASP.NET: ASP.NET State Service===
| + | == 参考文献 == |
− | [[Windows Server]]に[[IIS]]を入れると「ASP.NET State Service」というサービスが出来上がる。これはIISの一部なのでWindows Serverでなければ利用できない。このため開発機が普通の[[Windows]]であったり、[[Mono]]や.[[NET Core]]などへの対応を考慮すると極めて非推奨である。
| |
− | | |
− | サービスを立ち上げてWeb.configのsessionStateに以下のような設定を加えることで利用できる。
| |
− | <source lang="xml">
| |
− | <?xml version="1.0" encoding="UTF-8" ?>
| |
− | <configuration>
| |
− | <system.web>
| |
− | <sessionState mode="StateServer"
| |
− | stateConnectionString="tcpip=127.0.0.1:42424"
| |
− | stateNetworkTimeout="10" />
| |
− | </system.web>
| |
− | </configuration>
| |
− | </source>
| |
− | | |
− | ===ASP.NET: RedisSessionProvider===
| |
− | [[マイクロソフト]]は[[Redis]]でセッションを監理する[[ライブラリ]](セッションプロバイダー)を[[オープンソース]]として公開している。
| |
− | *https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider
| |
− | | |
− | マイクロソフトの意図としては[[Azure]]でのAzure Redis Cacheを利用したセッション監理を想定したものだと思われるが、普通にローカルにRedisサーバーを立ち上げても利用でる。Redisなのでプラットフォームに依存せず、スケールアウトもする。現状でもっとも推奨される方法であると思われる。
| |
− | | |
− | 利用には[[NuGet]]から入れられるのが手っ取り早い。
| |
− | *Microsoft.Web.RedisSessionStateProvider
| |
− | *https://www.nuget.org/packages/Microsoft.Web.RedisSessionStateProvider
| |
− | | |
− | 設定方法はマイクロソフトの公式サイトに日本語の資料があるのでこれを見るのが手っ取り早い>。
| |
− | *https://azure.microsoft.com/ja-jp/documentation/articles/cache-asp.net-session-state-provider/
| |
− | | |
− | ==関連項目==
| |
− | *[[ロードバランサー]]
| |
− | | |
− | ==参考文献== | |
| {{reflist}} | | {{reflist}} |
| | | |
| {{stub}} | | {{stub}} |
| + | |
| + | [[category: CentOS 7]] |