

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# クラスター (Memcached) 内のノードを自動的に識別する
<a name="AutoDiscovery"></a>

Memcached エンジンを実行しているクラスターの場合、ElastiCache は*自動検出*をサポートします。自動検出とは、クライアントプログラムがクラスター内のすべてのノードを自動的に識別し、これらすべてのノードへの接続を開始および維持する機能です。

**注記**  
自動検出は、Amazon ElastiCache Memcached で実行されているクラスターに追加されます。自動検出は、Valkey または Redis OSS エンジンでは使用できません。

自動検出によって、アプリケーションは手動で個々のキャッシュノードに接続する必要はありません。その代わり、アプリケーションは Memcached のノードの 1 つに接続してノードのリストを取得します。そのリストからアプリケーションはクラスターの残りのノードを発見して、それらにも接続できます。アプリケーションで個々のキャッシュノードエンドポイントをハードコードする必要はありません。

クラスターでデュアルスタックネットワークタイプを使用している場合、自動検出は、どちらを選択するかに応じて、IPv4 または IPv6 アドレスのみを返します。詳細については、「[ElastiCache でネットワークタイプを選択する](network-type.md)」を参照してください。

クラスター内のすべてのキャッシュノードには、他のすべてのノードに関するメタデータのリストが保持されます。このメタデータは、クラスターにノードが追加または削除されるたびに更新されます。

**Topics**
+ [Memcached による自動検出の利点](AutoDiscovery.Benefits.md)
+ [自動検出の動作](AutoDiscovery.HowAutoDiscoveryWorks.md)
+ [自動検出の使用](AutoDiscovery.Using.md)
+ [Memcached キャッシュノードへの手動接続](AutoDiscovery.Manual.md)
+ [Memcached クライアントライブラリへの自動検出の追加](AutoDiscovery.AddingToYourClientLibrary.md)
+ [自動検出機能を持つ ElastiCache クライアント](Clients.md)

# Memcached による自動検出の利点
<a name="AutoDiscovery.Benefits"></a>

Memcached を使用する場合、自動検出には次の利点があります。
+ クラスター内のノード数を増やすと、新しいノードは、設定エンドポイントと他のすべてのノードに自身を登録します。キャッシュクラスターからノードを削除すると、削除対象のノードが自身の登録を解除します。いずれの場合も、クラスター内の他のすべてのノードが、最新のキャッシュノードメタデータで更新されます。
+ キャッシュノードの障害は自動的に検出されます。障害が発生したノードは、自動的に置き換えられます。
**注記**  
ノードの交換が完了するまで、そのノードは正常になりません。
+ クライアントプログラムは、設定エンドポイントにのみ接続する必要があります。その後、自動検出ライブラリはクラスター内の他のすべてのノードに接続します。
+ クライアントプログラムは、1 分に 1 回クラスターをポーリングします (この間隔は必要に応じて調整できます)。クラスター設定の変更がある場合 (新しいノードや削除されたノードなど)、クライアントは更新されたメタデータリストを受け取ります。その後、クライアントは必要に応じてそれらのノードに接続したり、それらのノードから切断したりします。

自動検出は、すべての ElastiCache Memcached クラスターで有効になります。この機能を使用するためにキャッシュノードを再起動する必要はありません。

# 自動検出の動作
<a name="AutoDiscovery.HowAutoDiscoveryWorks"></a>

**Topics**
+ [キャッシュノードへの接続](#AutoDiscovery.HowAutoDiscoveryWorks.Connecting)
+ [通常のクラスターオペレーション](#AutoDiscovery.HowAutoDiscoveryWorks.NormalOps)
+ [その他のオペレーション](#AutoDiscovery.HowAutoDiscoveryWorks.OtherOps)

このセクションでは、クライアントアプリケーションが ElastiCache クラスタークライアントを使用してキャッシュノード接続を管理し、キャッシュ内のデータ項目を操作する方法について説明します。

## キャッシュノードへの接続
<a name="AutoDiscovery.HowAutoDiscoveryWorks.Connecting"></a>

アプリケーションの観点からは、クラスター設定エンドポイントへの接続は、個々のキャッシュノードに直接接続するのと変わりません。次の一連の図は、キャッシュノードに接続するプロセスを示したものです。

![\[キャッシュノードへの接続\]](http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/images/autodiscovery_cluster_membership_refresh-diagram.png)



**キャッシュノードへの接続プロセス**  

|  |  | 
| --- |--- |
|  ![\[1\]](http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/images/callouts/1.png) | アプリケーションは、設定エンドポイントの DNS 名を解決します。設定エンドポイントには、すべてのキャッシュノードの CNAME エントリが保持されているため、DNS 名はいずれかのノードに解決されます。その後、クライアントはそのノードに接続できます。 | 
|  ![\[2\]](http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/images/callouts/2.png) | クライアントは、他のすべてのノードの設定情報をリクエストします。各ノードにはクラスター内のすべてのノードの設定情報が保持されているため、どのノードでも必要に応じて設定情報をクライアントに渡すことができます。 | 
|  ![\[3\]](http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/images/callouts/3.png) | クライアントは、キャッシュノードのホスト名と IP アドレスの最新のリストを受け取ります。その後、クライアントはクラスター内の他のすべてのノードに接続できます。 | 



**注記**  
クライアントプログラムは、キャッシュノードのホスト名と IP アドレスのリストを 1 分に 1 回更新します。このポーリング間隔は、必要に応じて変更できます。

## 通常のクラスターオペレーション
<a name="AutoDiscovery.HowAutoDiscoveryWorks.NormalOps"></a>

アプリケーションがすべてのキャッシュノードに接続されている場合、ElastiCache クラスタークライアントは、個々のデータ項目を格納する必要があるノードと、それらのデータ項目のクエリを実行する必要があるノードを判断します。次の一連の図は、通常のクラスターオペレーションのプロセスを示しています。

![\[通常のクラスターオペレーション\]](http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/images/autodiscovery_normal_cache_usage-diagram.png)



**通常のクラスターオペレーションのプロセス**  

|  |  | 
| --- |--- |
|  ![\[1\]](http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/images/callouts/1.png) | アプリケーションは、特定のデータ項目に対して get リクエストを発行します (キーにより識別されます)。 | 
|  ![\[2\]](http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/images/callouts/2.png) | クライアントは、キーに対してハッシュアルゴリズムを使用して、データ項目が格納されているキャッシュノードを調べます。 | 
|  ![\[3\]](http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/images/callouts/3.png) | データ項目が適切なノードからリクエストされます。 | 
|  ![\[4\]](http://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/images/callouts/4.png) | データ項目がアプリケーションに戻ります。 | 

## その他のオペレーション
<a name="AutoDiscovery.HowAutoDiscoveryWorks.OtherOps"></a>

状況によっては、クラスターのノードに変更を加えることがあります。例えば、追加の需要に対応するためにノードを追加したり、需要の減少期間中にコストを節約するためにノードを削除したりできます。または、ある種類のノード障害が原因でノードを置き換えることもできます。

クラスターのエンドポイントへのメタデータ更新を必要とするクラスターを変更するときは、すべてのノードへの変更が同時に行われます。したがって、特定のノードのメタデータと、クラスター内の他のすべてのノードのメタデータの整合性がとられます。

この場合、メタデータは、クラスター内のすべてのノードで同時に更新されるため、すべてのノード間で整合性がとられます。クラスターのさまざまなノードのエンドポイントを取得するため、設定エンドポイントを必ず使用する必要があります。設定エンドポイントを使用して、「非表示」のノードからはエンドポイントデータを取得しないようにしてください。

### ノードの追加
<a name="AutoDiscovery.HowAutoDiscoveryWorks.OtherOps.AddNode"></a>

ノードがスピンアップされている間、エンドポイントはメタデータには含まれません。エンドポイントは、ノードが利用可能となった時点で、クラスターの各ノードのメタデータに追加されます。このシナリオではメタデータはすべてのノード間で整合性がとられ、新しいノードとは、それが利用可能になった後にやり取りできるようになります。ノードが利用可能になる前にはそのノードについては認識できず、新しいノードが存在しないかのようにクラスターのノードとやり取りすることになります。

### ノードの削除
<a name="AutoDiscovery.HowAutoDiscoveryWorks.OtherOps.DelNode"></a>

ノードが削除されるときは、まずエンドポイントがメタデータから削除され、ノードがクラスターから削除されます。このシナリオではメタデータはすべてのノード間で整合性がとられており、ノードが利用できない間、削除されるノードのエンドポイントがメタデータに含まれることはありません。ノードを削除している間、そのノードはメタデータでは報告されないため、アプリケーションはそのノードが存在しないかのように n-1 の残りのノードのみとやり取りします。

### ノードの置換
<a name="AutoDiscovery.HowAutoDiscoveryWorks.OtherOps.ReplaceNode"></a>

ノードに障害が発生した場合、ElastiCache がそのノードを停止し、別のノードを起動します。この置換プロセスは数分かかります。この間、すべてのノードのメタデータには、障害のあるノードに対応するエンドポイントが表示されますが、そのノードとのやり取りの試みは失敗します。そのため、ロジックには必ず再試行ロジックを組み込んでください。

# 自動検出の使用
<a name="AutoDiscovery.Using"></a>

ElastiCache for Memcached で自動検出の使用を開始するには、次のステップを実行します。
+ [設定エンドポイントを取得する](#AutoDiscovery.Using.ConfigEndpoint)
+ [ElastiCache クラスタークライアントをダウンロードする](#AutoDiscovery.Using.ClusterClient)
+ [アプリケーションプログラムを変更する](#AutoDiscovery.Using.ModifyApp)

## 設定エンドポイントを取得する
<a name="AutoDiscovery.Using.ConfigEndpoint"></a>

クラスターに接続するには、クライアントプログラムがクラスター設定エンドポイントを認識している必要があります。トピック「[クラスターのエンドポイントの検索 (コンソール) (Memcached)](Endpoints.md#Endpoints.Find.Memcached)」を参照してください。

`aws elasticache describe-cache-clusters` パラメーターを指定して、`--show-cache-node-info` コマンドを使用することもできます。

クラスターのエンドポイント検索に使用する方法に関係なく、設定エンドポイントのアドレスには、必ず **.cfg** が含まれます。

**Example AWS CLI for ElastiCache を使用したエンドポイントの検索**  
Linux、macOS、Unix の場合:  

```
aws elasticache describe-cache-clusters \
    --cache-cluster-id mycluster \
    --show-cache-node-info
```
Windows の場合:  

```
aws elasticache describe-cache-clusters ^
    --cache-cluster-id mycluster ^
    --show-cache-node-info
```
このオペレーションでは、次のような出力が生成されます (JSON 形式)。  

```
{
    "CacheClusters": [
        {
            "Engine": "memcached", 
            "CacheNodes": [
                {
                    "CacheNodeId": "0001", 
                    "Endpoint": {
                        "Port": 11211, 
                        "Address": "mycluster.fnjyzo.cfg.0001.use1.cache.amazonaws.com"
                    }, 
                    "CacheNodeStatus": "available", 
                    "ParameterGroupStatus": "in-sync", 
                    "CacheNodeCreateTime": "2016-10-12T21:39:28.001Z", 
                    "CustomerAvailabilityZone": "us-east-1e"
                }, 
                {
                    "CacheNodeId": "0002", 
                    "Endpoint": {
                        "Port": 11211, 
                        "Address": "mycluster.fnjyzo.cfg.0002.use1.cache.amazonaws.com"
                    }, 
                    "CacheNodeStatus": "available", 
                    "ParameterGroupStatus": "in-sync", 
                    "CacheNodeCreateTime": "2016-10-12T21:39:28.001Z", 
                    "CustomerAvailabilityZone": "us-east-1a"
                }
            ], 
            "CacheParameterGroup": {
                "CacheNodeIdsToReboot": [], 
                "CacheParameterGroupName": "default.memcached1.4", 
                "ParameterApplyStatus": "in-sync"
            }, 
            "CacheClusterId": "mycluster", 
            "PreferredAvailabilityZone": "Multiple", 
            "ConfigurationEndpoint": {
                "Port": 11211, 
                "Address": "mycluster.fnjyzo.cfg.use1.cache.amazonaws.com"
            }, 
            "CacheSecurityGroups": [], 
            "CacheClusterCreateTime": "2016-10-12T21:39:28.001Z", 
            "AutoMinorVersionUpgrade": true, 
            "CacheClusterStatus": "available", 
            "NumCacheNodes": 2, 
            "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", 
            "CacheSubnetGroupName": "default", 
            "EngineVersion": "1.4.24", 
            "PendingModifiedValues": {}, 
            "PreferredMaintenanceWindow": "sat:06:00-sat:07:00", 
            "CacheNodeType": "cache.r3.large"
        }
    ]
}
```

## ElastiCache クラスタークライアントをダウンロードする
<a name="AutoDiscovery.Using.ClusterClient"></a>

自動検出を利用するには、クライアントプログラムが *ElastiCache クラスタークライアント*を使用する必要があります。ElastiCache Cluster Client は、Java、PHP、および .NET 向けが用意されており、すべてのキャッシュノードを検出して接続するのに必要なロジックすべてが含まれています。

**ElastiCache クラスタークライアントをダウンロードするには**

1. AWS マネジメントコンソールにサインインして、Amazon ElastiCache コンソール ([https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)) を開きます。

1. ElastiCache コンソールで、[**ElastiCache Cluster Client**] を選択して [**Download**] を選択します。

Java 向けの ElastiCache クラスタークライアントのソースコードは、[https://github.com/amazonwebservices/aws-elasticache-cluster-client-memcached-for-java](https://github.com/amazonwebservices/aws-elasticache-cluster-client-memcached-for-java) で入手できます。このライブラリは、広く使用されている Spymemcached クライアントがベースとなっています。ElastiCache クラスタークライアントは、Amazon ソフトウェアライセンス [https://aws.amazon.com/asl](https://aws.amazon.com/asl) の下でリリースされています。ソースコードは必要に合わせて自由に変更できます。他のオープンソース Memcached ライブラリや独自のクライアントコードにコードを組み込むこともできます。

**注記**  
PHP 向けの ElastiCache クラスタークライアントを使用するには、まず Amazon EC2 インスタンスにインストールする必要があります。詳細については、「[ElastiCache Cluster Client for PHP のインストール](Appendix.PHPAutoDiscoverySetup.md)」を参照してください。  
TLS がサポートされているクライアントの場合は、PHP バージョン 7.4 以上のバイナリをダウンロードします。  
.NET 向けの ElastiCache Cluster Client を使用するには、まず Amazon EC2 インスタンスにインストールする必要があります。詳細については、「[ElastiCache Cluster Client for .NET のインストール](Appendix.DotNETAutoDiscoverySetup.md)」を参照してください。

## アプリケーションプログラムを変更する
<a name="AutoDiscovery.Using.ModifyApp"></a>

自動検出を使用するようにアプリケーションプログラムを変更する準備ができました。以下のセクションでは、Java、PHP、および .NET 向けの ElastiCache Cluster Client を使用する方法を示します。

**重要**  
クラスターの設定エンドポイントを指定する際は必ず、ここに示す設定エンドポイントのアドレスに「.cfg」が含まれていることを確認してください。「.cfg」のない CNAME またはエンドポイントは使用しないでください。  

```
"mycluster.fnjyzo.cfg.use1.cache.amazonaws.com";
```
 クラスターの設定エンドポイントを明示的に指定しない場合は、特定のノードが設定されます。

# Java 向けの ElastiCache クラスタークライアントの使用
<a name="AutoDiscovery.Using.ModifyApp.Java"></a>

以下のプログラムは、ElastiCache クラスタークライアントを使用してクラスター設定エンドポイントに接続し、キャッシュにデータ項目を追加する方法を示しています。さらに操作を行わなくても、プログラムは自動検出を使用してクラスター内のすべてのノードに接続します。

```
package com.amazon.elasticache;

import java.io.IOException;
import java.net.InetSocketAddress;

// Import the &AWS;-provided library with Auto Discovery support 
import net.spy.memcached.MemcachedClient;  

public class AutoDiscoveryDemo {

    public static void main(String[] args) throws IOException {
            
        String configEndpoint = "mycluster.fnjyzo.cfg.use1.cache.amazonaws.com";
        Integer clusterPort = 11211;

        MemcachedClient client = new MemcachedClient(
                                 new InetSocketAddress(configEndpoint, 
                                                       clusterPort));       
        // The client will connect to the other cache nodes automatically.

        // Store a data item for an hour.  
        // The client will decide which cache host will store this item. 
        client.set("theKey", 3600, "This is the data value");
    }
}
```

# PHP 向けの ElastiCache クラスタークライアントの使用
<a name="AutoDiscovery.Using.ModifyApp.PHP"></a>

以下のプログラムは、ElastiCache クラスタークライアントを使用してクラスター設定エンドポイントに接続し、キャッシュにデータ項目を追加する方法を示しています。さらに操作を行わなくても、プログラムは自動検出を使用してクラスター内のすべてのノードに接続します。

PHP 向けの ElastiCache クラスタークライアントを使用するには、まず Amazon EC2 インスタンスにインストールする必要があります。詳細については、[ElastiCache Cluster Client for PHP のインストール](Appendix.PHPAutoDiscoverySetup.md)を参照してください。

```
<?php
	
 /**
  * Sample PHP code to show how to integrate with the Amazon ElastiCache
  * Auto Discovery feature.
  */

  /* Configuration endpoint to use to initialize memcached client. 
   * This is only an example. 	*/
  $server_endpoint = "mycluster.fnjyzo.cfg.use1.cache.amazonaws.com";
  
  /* Port for connecting to the ElastiCache cluster. 
   * This is only an example 	*/
  $server_port = 11211;

 /**
  * The following will initialize a Memcached client to utilize the Auto Discovery feature.
  * 
  * By configuring the client with the Dynamic client mode with single endpoint, the
  * client will periodically use the configuration endpoint to retrieve the current cache
  * cluster configuration. This allows scaling the cluster up or down in number of nodes
  * without requiring any changes to the PHP application. 
  *
  * By default the Memcached instances are destroyed at the end of the request. 
  * To create an instance that persists between requests, 
  *    use persistent_id to specify a unique ID for the instance. 
  * All instances created with the same persistent_id will share the same connection. 
  * See [http://php.net/manual/en/memcached.construct.php](http://php.net/manual/en/memcached.construct.php) for more information.
  */
  $dynamic_client = new Memcached('persistent-id');
  $dynamic_client->setOption(Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE);
  $dynamic_client->addServer($server_endpoint, $server_port);
  
  /**
  * Store the data for 60 seconds in the cluster. 
  * The client will decide which cache host will store this item.
  */  
  $dynamic_client->set('key', 'value', 60);  


 /**
  * Configuring the client with Static client mode disables the usage of Auto Discovery
  * and the client operates as it did before the introduction of Auto Discovery. 
  * The user can then add a list of server endpoints.
  */
  $static_client = new Memcached('persistent-id');
  $static_client->setOption(Memcached::OPT_CLIENT_MODE, Memcached::STATIC_CLIENT_MODE);
  $static_client->addServer($server_endpoint, $server_port);

 /**
  * Store the data without expiration. 
  * The client will decide which cache host will store this item.
  */  
  $static_client->set('key', 'value');  
  ?>
```

TLS を有効にして ElastiCache Cluster Client を使用する方法の例については、「[Using in transit encryption with PHP and Memcached](in-transit-encryption.md#in-transit-encryption-connect-php-mc)」を参照してください。

# ElastiCache Cluster Client for .NET の使用
<a name="AutoDiscovery.Using.ModifyApp.DotNET"></a>

**注記**  
ElastiCache .NET Cluster Client は 2022 年 5 月に廃止されました。

ElastiCache の .NET クライアントは、オープンソースとして [https://github.com/awslabs/elasticache-cluster-config-net](https://github.com/awslabs/elasticache-cluster-config-net) から入手できます。

 .NET アプリケーションは、通常、config ファイルから設定を取得します。サンプルアプリケーションの config ファイルを以下に示します。

```
<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <configSections>
        <section 
            name="clusterclient" 
            type="Amazon.ElastiCacheCluster.ClusterConfigSettings, Amazon.ElastiCacheCluster" />
    </configSections>

    <clusterclient>
        <!-- the hostname and port values are from step 1 above -->
        <endpoint hostname="mycluster.fnjyzo.cfg.use1.cache.amazonaws.com" port="11211" />
    </clusterclient>
</configuration>
```

以下の C\$1 プログラムは、ElastiCache Cluster Client を使用してクラスター設定エンドポイントに接続し、キャッシュにデータ項目を追加する方法を示しています。さらに操作を行わなくても、プログラムは自動検出を使用してクラスター内のすべてのノードに接続します。

```
// *****************
// Sample C# code to show how to integrate with the Amazon ElastiCcache Auto Discovery feature.

using System;

using Amazon.ElastiCacheCluster;

using Enyim.Caching;
using Enyim.Caching.Memcached;

public class DotNetAutoDiscoveryDemo  {

    public static void Main(String[] args)  {
    
        // instantiate a new client.
        ElastiCacheClusterConfig config = new ElastiCacheClusterConfig();
        MemcachedClient memClient = new MemcachedClient(config);
        
        // Store the data for 3600 seconds (1hour) in the cluster. 
        // The client will decide which cache host will store this item.
        memClient.Store(StoreMode.Set, 3600, "This is the data value.");
        
    }  // end Main
    
}  // end class DotNetAutoDiscoverDemo
```

# Memcached キャッシュノードへの手動接続
<a name="AutoDiscovery.Manual"></a>

クライアントプログラムが自動検出を使用していない場合、各 Memcached キャッシュノードに手動で接続できます。これは、Memcached クライアントのデフォルトの動作です。

キャッシュノードのホスト名とポート番号のリストは、[AWSマネジメントコンソール](https://aws.amazon.com/console/)から取得できます。`--show-cache-node-info` パラメータで コマンドを使用AWS CLI`aws elasticache describe-cache-clusters`することもできます。

**Example**  
次の Java コードスニペットは、4 ノードクラスター内のすべてのノードに接続する方法を示しています。  

```
...

ArrayList<String> cacheNodes = new ArrayList<String>(
	Arrays.asList(
	    "mycachecluster.fnjyzo.0001.use1.cache.amazonaws.com:11211",
	    "mycachecluster.fnjyzo.0002.use1.cache.amazonaws.com:11211",
	    "mycachecluster.fnjyzo.0003.use1.cache.amazonaws.com:11211",
	    "mycachecluster.fnjyzo.0004.use1.cache.amazonaws.com:11211"));
	      
MemcachedClient cache = new MemcachedClient(AddrUtil.getAddresses(cacheNodes));

...
```

**重要**  
ノードを追加または削除してクラスターをスケールアップまたはスケールダウンする場合、クライアントコード内のノードのリストを更新する必要があります。

# Memcached クライアントライブラリへの自動検出の追加
<a name="AutoDiscovery.AddingToYourClientLibrary"></a>

自動検出の設定情報は、各 Memcached クラスターノードに冗長的に保存されます。クライアントアプリケーションは、任意のキャッシュノードのクエリを実行し、クラスター内のすべてのノードの設定情報を取得できます。

アプリケーションがこれを行う方法は、キャッシュエンジンバージョンによって異なります。
+ キャッシュエンジンバージョンが **1.4.14 以上**の場合、`config` コマンドを使用します。
+ キャッシュエンジンバージョンが **1.4.14 未満の場合**、`get AmazonElastiCache:cluster` コマンドを使用します。

これらの 2 つのコマンドの出力は同じです。以下の「[[Output Format] (出力形式)](#AutoDiscovery.AddingToYourClientLibrary.OutputFormat)」セクションで説明します。

## キャッシュエンジンバージョン 1.4.14 以降
<a name="AutoDiscovery.AddingToYourClientLibrary.1-4-14-plus"></a>

キャッシュエンジンバージョン 1.4.14 以上の場合、`config` コマンドを使用します。このコマンドは、ElastiCache により Memcached ASCII およびバイナリプロトコルに追加され、ElastiCache クラスタークライアントに実装されます。別のクライアントライブラリで自動検出を使用する場合、`config` コマンドをサポートするためにそのライブラリを拡張する必要があります。

**注記**  
以下のドキュメントは ASCII プロトコルに関連しています。ただし、`config` コマンドでは ASCII とバイナリの両方がサポートされます。バイナリプロトコルを使用する自動検出サポートを追加する場合、「[ElastiCache クラスタークライアントのソースコード](https://github.com/amazonwebservices/aws-elasticache-cluster-client-memcached-for-java/tree/master/src/main/java/net/spy/memcached/protocol/binary)」を参照してください。

**[Syntax]** (構文)

`config [sub-command] [key]`

### オプション
<a name="AutoDiscovery.AddingToYourClientLibrary.1-4-14-plus.Options"></a>


| 名前 | 説明 | 必須 | 
| --- | --- | --- | 
| sub-command |  キャッシュノードの操作に使用されるサブコマンド。自動検出の場合、このサブコマンドは `get` です。  | はい | 
| key |  クラスター設定が格納されたキー。自動検出の場合、このキーの名前は `cluster` です。  | はい | 

クラスターの設定情報を取得するには、以下のコマンドを使用します。

```
config get cluster
```

## キャッシュエンジンバージョン 1.4.14 以前
<a name="AutoDiscovery.AddingToYourClientLibrary.pre-1-4-14"></a>

クラスターの設定情報を取得するには、以下のコマンドを使用します。

```
get AmazonElastiCache:cluster
```

**注記**  
「AmazonElastiCache:cluster」キーには、クラスターの設定情報が存在するため、変更しないことをお勧めします。このキーを上書きした場合、ElastiCache により設定情報が自動的かつ正しく設定されるまで、クライアントの設定が短時間（15 秒以内）不適切になる可能性があります。

## [Output Format] (出力形式)
<a name="AutoDiscovery.AddingToYourClientLibrary.OutputFormat"></a>

`config get cluster` を使用するか `get AmazonElastiCache:cluster` を使用するかにかかわらず、応答は 2 行で構成されます。
+ 設定情報のバージョン番号。クラスターにノードが追加または削除されるたび、バージョン番号は 1 ずつ増加します。
+ キャッシュノードのリスト。リスト内の各ノードは、*hostname\$1ip-address\$1port* グループによって表され、各ノードはスペースで区切られます。

各行の末尾には、キャリッジリターンと改行文字 (CR \$1 LF) が表示されます。データ行には最後に改行文字 (LF) が含まれ、ここに CR \$1 LF が追加されます。バージョン設定行は、CR なしの LF で終了します。

3 つのノードを含むクラスターは、次のように表されます。

```
configversion\n
hostname|ip-address|port hostname|ip-address|port hostname|ip-address|port\n\r\n
```

各ノードは、CNAME およびプライベート IP アドレスと共に表示されます。CNAME は常に存在します。プライベート IP アドレスを使用できない場合は表示されませんが、その場合もパイプ文字「`|`」は出力されます。

**Example**  
設定情報のクエリを実行した場合に返されるペイロードの例を次に示します。  

```
CONFIG cluster 0 136\r\n
12\n
myCluster.pc4ldq.0001.use1.cache.amazonaws.com|10.82.235.120|11211 myCluster.pc4ldq.0002.use1.cache.amazonaws.com|10.80.249.27|11211\n\r\n 
END\r\n
```

**注記**  
2 行目は、設定情報がこれまで 12 回変更されたことを示しています。
3 行目のノードのリストでは、ホスト名がアルファベット順に並んでいます。この順序は、現在クライアントアプリケーションで何を使用しているかにより異なる場合があります。

# 自動検出機能を持つ ElastiCache クライアント
<a name="Clients"></a>

クラスタークライアントプログラムは、Memcached エンジンを実行しているすべてのクラスターノードを自動的に識別して接続できます。

このセクションでは、自動検出を使用するための ElastiCache PHP と .NET クライアントのインストールと設定について説明します。

**Topics**
+ [クラスタークライアントのインストールとコンパイル](Appendix.InstallingClients.md)
+ [ElastiCache クライアントの設定](ClientConfig.md)

# クラスタークライアントのインストールとコンパイル
<a name="Appendix.InstallingClients"></a>

このセクションでは、PHP および .NET Amazon ElastiCache 自動検出クラスタークライアントのインストール、設定、コンパイルを取り上げます。

**Topics**
+ [ElastiCache Cluster Client for .NET のインストール](Appendix.DotNETAutoDiscoverySetup.md)
+ [ElastiCache Cluster Client for PHP のインストール](Appendix.PHPAutoDiscoverySetup.md)
+ [PHP 向けの ElastiCache クラスタークライアントのソースコードのコンパイル](Appendix.PHPAutoDiscoveryCompile.md)

# ElastiCache Cluster Client for .NET のインストール
<a name="Appendix.DotNETAutoDiscoverySetup"></a>

ElastiCache .NET Cluster Client のコードは、オープンソースとして [https://github.com/awslabs/elasticache-cluster-config-net](https://github.com/awslabs/elasticache-cluster-config-net) から入手できます。

このセクションでは、Amazon EC2 インスタンスで ElastiCache Cluster Client の .NET コンポーネントをインストール、更新、および削除する方法について説明します。自動検出の詳細については、「[クラスター (Memcached) 内のノードを自動的に識別する](AutoDiscovery.md)」を参照してください。クライアントを使用するサンプル .NET コードについては、「[ElastiCache Cluster Client for .NET の使用](AutoDiscovery.Using.ModifyApp.DotNET.md)」を参照してください。

**Topics**
+ [.NET のインストール](#Appendix.DotNETAutoDiscoverySetup.DotNET)
+ [ElastiCache .NET Cluster Client for ElastiCache のダウンロード](#Appendix.DotNETAutoDiscoverySetup.Downloading)
+ [NuGet を使用した AWS アセンブリのインストール](#Appendix.DotNETAutoDiscoverySetup.Installing)

## .NET のインストール
<a name="Appendix.DotNETAutoDiscoverySetup.DotNET"></a>

AWS .NET SDK for ElastiCache を使用するには、.NET 3.5 以降がインストールされている必要があります。.NET 3.5 以降がインストールされていない場合は、[http://www.microsoft.com/net](http://www.microsoft.com/net) から最新バージョンをダウンロードしてインストールできます。

## ElastiCache .NET Cluster Client for ElastiCache のダウンロード
<a name="Appendix.DotNETAutoDiscoverySetup.Downloading"></a>

**ElastiCache .NET Cluster Client のダウンロード**

1. AWS マネジメントコンソール にサインインして、ElastiCache コンソール ([https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)) を開きます。

1. ナビゲーションペインで [**ElastiCache Cluster Client**] をクリックします。

1. [**Download ElastiCache Memcached Cluster Client**] リストで、[**.NET**] を選択し、[**Download**] をクリックします。

## NuGet を使用した AWS アセンブリのインストール
<a name="Appendix.DotNETAutoDiscoverySetup.Installing"></a>

NuGet は .NET プラットフォームのパッケージ管理システムです。NuGet ではアセンブリの依存関係が認識され、必要なすべてのファイルが自動的にインストールされます。NuGet によってインストールされるアセンブリは、`Program Files` などの一元的な場所ではなく、ソリューションと共に保存されるため、互換性の問題を発生させることなく、アプリケーションに固有のバージョンをインストールできます。

### NuGet のインストール
<a name="Appendix.DotNETAutoDiscoverySetup.Installing.NuGet"></a>

NuGet は MSDN の Installation Gallery からインストールできます。[https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c](https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c) を参照してください。Visual Studio 2010 以降を使用している場合、NuGet は自動的にインストールされます。

NuGet は**ソリューションエクスプローラー**または**パッケージマネージャコンソール**から使用できます。

### ソリューションエクスプローラーからの NuGet の使用
<a name="Appendix.DotNETAutoDiscoverySetup.NuGet.SolutionExplorer"></a>

**Visual Studio 2010 でソリューションエクスプローラーから NuGet を使用するには**

1. [**Tools**] メニューから、[**Library Package Manager**] を選択します。

1. **[Package Manager Console]** をクリックします。

**Visual Studio 2012 または Visual Studio 2013 でソリューションエクスプローラーから NuGet を使用するには**

1. [**Tools**] メニューから、[**NuGet Package Manager**] を選択します。

1. **[Package Manager Console]** をクリックします。

コマンドラインから、次のように `Install-Package` を使用してアセンブリをインストールできます。

```
Install-Package Amazon.ElastiCacheCluster
```

AWSSDK や AWS.Extensions アセンブリなど、NuGet を通じて利用できる各パッケージ用のページを表示するには、NuGet ウェブサイト ([http://www.nuget.org](http://www.nuget.org)) を参照してください。各パッケージのページには、コンソールを使用してパッケージをインストールするためのサンプルコマンドラインや、NuGet を通じて利用できるパッケージの以前のバージョンのリストが含まれています。

**Package Manager Console** のコマンドの詳細については、[http://nuget.codeplex.com/wikipage?title=Package%20Manager%20Console%20Command%20Reference%20%28v1.3%29](http://nuget.codeplex.com/wikipage?title=Package%20Manager%20Console%20Command%20Reference%20%28v1.3%29) を参照してください。

# ElastiCache Cluster Client for PHP のインストール
<a name="Appendix.PHPAutoDiscoverySetup"></a>

このセクションでは、Amazon EC2 インスタンスで ElastiCache Cluster Client の PHP コンポーネントをインストール、更新、および削除する方法について説明します。自動検出の詳細については、「[クラスター (Memcached) 内のノードを自動的に識別する](AutoDiscovery.md)」を参照してください。クライアントを使用するサンプル PHP コードについては、「[PHP 向けの ElastiCache クラスタークライアントの使用](AutoDiscovery.Using.ModifyApp.PHP.md)」を参照してください。

**Topics**
+ [インストールパッケージのダウンロード](Appendix.PHPAutoDiscoverySetup.Downloading.md)
+ [既に *php-memcached* 拡張機能をインストールしているユーザーの場合](#Appendix.PHPAutoDiscoverySetup.InstallingExisting)
+ [新規ユーザーのインストール手順](Appendix.PHPAutoDiscoverySetup.Installing.md)
+ [PHP Cluster Client の削除](Appendix.PHPAutoDiscoverySetup.Removing.md)

# インストールパッケージのダウンロード
<a name="Appendix.PHPAutoDiscoverySetup.Downloading"></a>

適切なバージョンの ElastiCache Cluster Client for PHP を使用するには、Amazon EC2 インスタンスにインストールされている PHP のバージョンを確認する必要があります。また、Amazon EC2 インスタンスが Linux の 64 ビットバージョンと 32 ビットバージョンのどちらを実行しているかも確認する必要があります。

**Amazon EC2 インスタンスにインストールされている PHP のバージョンを確認するには**
+ コマンドプロンプトで、次のコマンドを入力します。

  ```
  php -v
  ```

  PHP のバージョンは、次の例のように出力に表示されます。

  ```
  PHP 5.4.10 (cli) (built: Jan 11 2013 14:48:57) 
  Copyright (c) 1997-2012 The PHP Group
  Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
  ```
**注記**  
PHP と Memcached のバージョンに互換性がない場合は、以下のようなエラーメッセージが表示されます。  

  ```
  PHP Warning: PHP Startup: memcached: Unable to initialize module
  Module compiled with module API=20100525
  PHP compiled with module API=20131226
  These options need to match
  in Unknown on line 0
  ```
この場合は、ソースコードからモジュールをコンパイルする必要があります。詳細については、「[PHP 向けの ElastiCache クラスタークライアントのソースコードのコンパイル](Appendix.PHPAutoDiscoveryCompile.md)」を参照してください。

**Amazon EC2 AMI アーキテクチャ（64 ビットまたは 32 ビット）を確認するには**

1. AWS マネジメントコンソール にサインインし、Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. [**インスタンス**] リストで、Amazon EC2 インスタンスをクリックします。

1. [**Description**] タブで、[**AMI:**] フィールドを検索します。64 ビットのインスタンスでは、説明に `x86_64` が含まれています。32 ビットのインスタンスの場合は、このフィールドで `i386` または `i686` を探します。

これで ElastiCache Cluster Client をダウンロードする準備ができました。

**ElastiCache Cluster Client for PHP のダウンロード**

1. AWS マネジメントコンソール にサインインして、ElastiCache コンソール ([https://console.aws.amazon.com/elasticache/](https://console.aws.amazon.com/elasticache/)) を開きます。

1. ElastiCache コンソールから [**ElastiCache Cluster Client**] を選択します。

1. [**Download Memcached Cluster Client**] リストで、PHP バージョンと AMI アーキテクチャに合った ElastiCache クラスタークライアントを選択し、[**Download**] ボタンを選択します。

## 既に *php-memcached* 拡張機能をインストールしているユーザーの場合
<a name="Appendix.PHPAutoDiscoverySetup.InstallingExisting"></a>

**`php-memcached` のインストールを更新するには**

1. 「[PHP Cluster Client の削除](Appendix.PHPAutoDiscoverySetup.Removing.md)」トピックで説明しているように、PHP 用の Memcached 拡張機能の以前のインストールを削除します。

1. 前に「[新規ユーザーのインストール手順](Appendix.PHPAutoDiscoverySetup.Installing.md)」で説明したように、新しい ElastiCache `php-memcached` 拡張機能をインストールします。

# 新規ユーザーのインストール手順
<a name="Appendix.PHPAutoDiscoverySetup.Installing"></a>

**Topics**
+ [新規ユーザー向けの PHP 7.x のインストール](#Appendix.PHPAutoDiscoverySetup.Installing.PHP7x)
+ [新規ユーザー向けの PHP 5.x のインストール](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x)

## 新規ユーザー向けの PHP 7.x のインストール
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP7x"></a>

**Topics**
+ [Ubuntu Server 14.04 LTS AMI (64 ビットおよび 32 ビット) に PHP 7 をインストールするには](#Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.Ubuntu)
+ [PHP 7 を Amazon Linux 201609 AMI にインストールするには](#Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.AmznLinux)
+ [SUSE Linux AMI に PHP 7 をインストールするには](#Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.SuseLinux)

### Ubuntu Server 14.04 LTS AMI (64 ビットおよび 32 ビット) に PHP 7 をインストールするには
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.Ubuntu"></a>

1. AMI から新しいインスタンスを起動します。

1. 以下のコマンドを実行します。

   ```
   sudo apt-get update
   sudo apt-get install gcc g++
   ```

1. PHP 7 をインストールします。

   ```
   sudo yum install php70
   ```

1. Amazon ElastiCache Cluster Client をダウンロードします。

   ```
   wget https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-7.0/latest-64bit
   ```

1. `latest-64bit` を展開します。

   ```
   tar -zxvf latest-64bit
   ```

1. root アクセス権限を使用して、抽出されたアーティファクトファイル `amazon-elasticache-cluster-client.so` を `/usr/lib/php/20151012` にコピーします。

   ```
   sudo mv artifact/amazon-elasticache-cluster-client.so /usr/lib/php/20151012
   ```

1. `extension=amazon-elasticache-cluster-client.so` ファイルに `/etc/php/7.0/cli/php.ini` 行を挿入します。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php/7.0/cli/php.ini
   ```

1. Apache サーバーを起動または再起動します。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### PHP 7 を Amazon Linux 201609 AMI にインストールするには
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.AmznLinux"></a>

1. AMI から新しいインスタンスを起動します。

1. 次のコマンドを実行してください。

   ```
   sudo yum install gcc-c++
   ```

1. PHP 7 をインストールします。

   ```
   sudo yum install php70
   ```

1. Amazon ElastiCache Cluster Client をダウンロードします。

   ```
   wget https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-7.0/latest-64bit
   ```

1. `latest-64bit` を展開します。

   ```
   tar -zxvf latest-64bit
   ```

1. root アクセス権限を使用して、抽出されたアーティファクトファイル `amazon-elasticache-cluster-client.so` を `/usr/lib64/php/7.0/modules/` にコピーします。

   ```
   sudo mv artifact/amazon-elasticache-cluster-client.so /usr/lib64/php/7.0/modules/
   ```

1. `50-memcached.ini` ファイルを作成します。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php-7.0.d/50-memcached.ini
   ```

1. Apache サーバーを起動または再起動します。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### SUSE Linux AMI に PHP 7 をインストールするには
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP7x.SuseLinux"></a>

1. AMI から新しいインスタンスを起動します。

1. 次のコマンドを実行してください。

   ```
   sudo zypper install gcc
   ```

1. PHP 7 をインストールします。

   ```
   sudo yum install php70
   ```

1. Amazon ElastiCache Cluster Client をダウンロードします。

   ```
   wget https://elasticache-downloads.s3.amazonaws.com/ClusterClient/PHP-7.0/latest-64bit
   ```

1. `latest-64bit` を展開します。

   ```
   tar -zxvf latest-64bit
   ```

1. root アクセス権限を使用して、抽出されたアーティファクトファイル `amazon-elasticache-cluster-client.so` を `/usr/lib64/php7/extensions/` にコピーします。

   ```
   sudo mv artifact/amazon-elasticache-cluster-client.so /usr/lib64/php7/extensions/
   ```

1. `extension=amazon-elasticache-cluster-client.so` ファイルに `/etc/php7/cli/php.ini` 行を挿入します。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php7/cli/php.ini
   ```

1. Apache サーバーを起動または再起動します。

   ```
   sudo /etc/init.d/httpd start
   ```

 

## 新規ユーザー向けの PHP 5.x のインストール
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x"></a>

**Topics**
+ [Amazon Linux AMI 2014.03 (64 ビットおよび 32 ビット) に PHP 5 をインストールするには](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.AmznLinux)
+ [Red Hat Enterprise Linux 7.0 AMI (64 ビットおよび 32 ビット) に PHP 5 をインストールするには](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.RHEL)
+ [Ubuntu Server 14.04 LTS AMI (64 ビットおよび 32 ビット) に PHP 5 をインストールするには](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.Ubuntu)
+ [SUSE Linux Enterprise Server 11 AMI (64 ビットまたは 32 ビット) に PHP 5 をインストールするには](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.SuseLinux)
+ [他の Linux ディストリビューション](#Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.Other)

### Amazon Linux AMI 2014.03 (64 ビットおよび 32 ビット) に PHP 5 をインストールするには
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.AmznLinux"></a>

1. Amazon Linux インスタンス (64 ビットまたは 32 ビット) を起動し、ログインします。

1. PHP の依存関係をインストールします。

   ```
   sudo yum install gcc-c++ php php-pear
   ```

1. Amazon EC2 インスタンスと PHP のバージョンに合った適切な `php-memcached` パッケージをダウンロードします。詳細については、「[インストールパッケージのダウンロード](Appendix.PHPAutoDiscoverySetup.Downloading.md)」を参照してください。

1. `php-memcached` をインストールします。URI にはインストールパッケージのダウンロードパスを指定します。

   ```
   sudo pecl install <package download path>
   ```

   PHP 5.4、64 ビット Linux 用のサンプルインストールコマンドを次に示します。このサンプルでは、*X.Y.Z* を実際のバージョン番号に置き換えてください。

   ```
   sudo pecl install /home/AmazonElastiCacheClusterClient-X.Y.Z-PHP54-64bit.tgz
   ```
**注記**  
インストールアーティファクトの最新バージョンを使用してください。

1. root/sudo アクセス許可を使用して、`memcached.ini` という名前の新しいファイルを `/etc/php.d` ディレクトリに追加し、このファイルに「extension=amazon-elasticache-cluster-client.so」を挿入します。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php.d/memcached.ini
   ```

1. Apache サーバーを起動または再起動します。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### Red Hat Enterprise Linux 7.0 AMI (64 ビットおよび 32 ビット) に PHP 5 をインストールするには
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.RHEL"></a>

1. Red Hat Enterprise Linux インスタンス (64 ビットまたは 32 ビット) を起動し、ログインします。

1. PHP の依存関係をインストールします。

   ```
   sudo yum install gcc-c++ php php-pear
   ```

1. Amazon EC2 インスタンスと PHP のバージョンに合った適切な `php-memcached` パッケージをダウンロードします。詳細については、「[インストールパッケージのダウンロード](Appendix.PHPAutoDiscoverySetup.Downloading.md)」を参照してください。

1. `php-memcached` をインストールします。URI にはインストールパッケージのダウンロードパスを指定します。

   ```
   sudo pecl install <package download path>
   ```

1. root/sudo アクセス許可を使用して、`memcached.ini` という名前の新しいファイルを `/etc/php.d` ディレクトリに追加し、このファイルに「`extension=amazon-elasticache-cluster-client.so`」を挿入します。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php.d/memcached.ini
   ```

1. Apache サーバーを起動または再起動します。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### Ubuntu Server 14.04 LTS AMI (64 ビットおよび 32 ビット) に PHP 5 をインストールするには
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.Ubuntu"></a>

1. Ubuntu Linux インスタンス (64 ビットまたは 32 ビット) を起動し、ログインします。

1. PHP の依存関係をインストールします。

   ```
   sudo apt-get update 
   sudo apt-get install gcc g++ php5 php-pear
   ```

1. Amazon EC2 インスタンスと PHP のバージョンに合った適切な `php-memcached` パッケージをダウンロードします。詳細については、「[インストールパッケージのダウンロード](Appendix.PHPAutoDiscoverySetup.Downloading.md)」を参照してください。

1. `php-memcached` をインストールします。URI にはインストールパッケージのダウンロードパスを指定します。

   ```
   sudo pecl install <package download path>
   ```
**注記**  
このインストール手順では、ビルドアーティファクト `amazon-elasticache-cluster-client.so` が `/usr/lib/php5/20121212*` ディレクトリにインストールされます。次のステップで必要になるため、ビルドアーティファクトの絶対パスを確認してください。

   前のコマンドが機能しない場合は、PHP クライアントアーティファクト `amazon-elasticache-cluster-client.so` を、ダウンロードした `*.tgz` ファイルから手動で抽出し、`/usr/lib/php5/20121212*` ディレクトリにコピーする必要があります。

   ```
   tar -xvf <package download path>
   cp amazon-elasticache-cluster-client.so /usr/lib/php5/20121212/
   ```

1. root/sudo アクセス許可を使用して、`memcached.ini` という名前の新しいファイルを `/etc/php5/cli/conf.d` ディレクトリに追加し、このファイルに「extension=<absolute path to amazon-elasticache-cluster-client.so>」を挿入します。

   ```
   echo "extension=<absolute path to amazon-elasticache-cluster-client.so>" | sudo tee --append /etc/php5/cli/conf.d/memcached.ini
   ```

1. Apache サーバーを起動または再起動します。

   ```
   sudo /etc/init.d/httpd start
   ```

 

### SUSE Linux Enterprise Server 11 AMI (64 ビットまたは 32 ビット) に PHP 5 をインストールするには
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.SuseLinux"></a>

1. SUSE Linux インスタンス (64 ビットまたは 32 ビット) を起動し、ログインします。

1. PHP の依存関係をインストールします。

   ```
   sudo zypper install gcc php53-devel
   ```

1. Amazon EC2 インスタンスと PHP のバージョンに合った適切な `php-memcached` パッケージをダウンロードします。詳細については、「[インストールパッケージのダウンロード](Appendix.PHPAutoDiscoverySetup.Downloading.md)」を参照してください。

1. `php-memcached` をインストールします。URI にはインストールパッケージのダウンロードパスを指定します。

   ```
   sudo pecl install <package download path>
   ```

1. root/sudo アクセス許可を使用して、`memcached.ini` という名前の新しいファイルを `/etc/php5/conf.d` ディレクトリに追加し、このファイルに「**extension=`amazon-elasticache-cluster-client.so`**」を挿入します。

   ```
   echo "extension=amazon-elasticache-cluster-client.so" | sudo tee --append /etc/php5/conf.d/memcached.ini
   ```

1. Apache サーバーを起動または再起動します。

   ```
   sudo /etc/init.d/httpd start
   ```

**注記**  
ステップ 5 が以前のプラットフォームで機能しない場合、`amazon-elasticache-cluster-client.so` のインストールパスを確認してください。さらに、extension でバイナリの完全なパスを指定します。また、使用中の PHP がサポートされているバージョンであることも検証します。バージョン 5.3 ～ 5.5 がサポートされています。

 

### 他の Linux ディストリビューション
<a name="Appendix.PHPAutoDiscoverySetup.Installing.PHP5x.Other"></a>

特に CentOS7 や Red Hat Enterprise Linux (RHEL) 7.1 など、一部のシステムでは、`libsasl2.so.3` が `libsasl2.so.2` に置き換えられました。これらのシステムは、ElastiCache クラスタークライアントをロードする際、`libsasl2.so.2` をロードしようとしますが見つけることができません。この問題を解決するには、クライアントが libsasl2.so.2 をロードしようとしたときに `libsasl2.so.3` にリダイレクトされるように、`libsasl2.so.3` へのシンボリックリンクを作成します。次のコードでは、このシンボリックリンクが作成されます。

```
cd /usr/lib64
sudo ln libsasl2.so.3 libsasl2.so.2
```

# PHP Cluster Client の削除
<a name="Appendix.PHPAutoDiscoverySetup.Removing"></a>

**Topics**
+ [PHP 7 の以前のバージョンの削除](#Appendix.PHPAutoDiscoverySetup.Removing.PHP7x)
+ [PHP 5 の以前のバージョンの削除](#Appendix.PHPAutoDiscoverySetup.Removing.PHP5x)

## PHP 7 の以前のバージョンの削除
<a name="Appendix.PHPAutoDiscoverySetup.Removing.PHP7x"></a>

**PHP 7 の以前のバージョンを削除するには**

1. インストール手順で先ほど示した該当する PHP lib ディレクトリから `amazon-elasticache-cluster-client.so` ファイルを削除します。「[既に *php-memcached* 拡張機能をインストールしているユーザーの場合](Appendix.PHPAutoDiscoverySetup.md#Appendix.PHPAutoDiscoverySetup.InstallingExisting)」でインストールのセクションを参照してください。

1. `extension=amazon-elasticache-cluster-client.so` ファイルから `php.ini` 行を削除します。

1. Apache サーバーを起動または再起動します。

   ```
   sudo /etc/init.d/httpd start
   ```

## PHP 5 の以前のバージョンの削除
<a name="Appendix.PHPAutoDiscoverySetup.Removing.PHP5x"></a>

**PHP 5 の以前のバージョンを削除するには**

1. `php-memcached` 拡張機能を削除します。

   ```
   sudo pecl uninstall __uri/AmazonElastiCacheClusterClient
   ```

1.  前のインストールの手順に従って適切なディレクトリに追加した `memcached.ini` ファイルを削除します。

# PHP 向けの ElastiCache クラスタークライアントのソースコードのコンパイル
<a name="Appendix.PHPAutoDiscoveryCompile"></a>

このセクションでは、ElastiCache Cluster Client for PHP のソースコードを取得しコンパイルする方法について説明します。

GitHub から取得し、コンパイルする必要がある 2 つのパッケージがあります。[aws-elasticache-cluster-client-libmemcached](https://github.com/awslabs/aws-elasticache-cluster-client-libmemcached) および [aws-elasticache-cluster-client-memcached-for-php](https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php)。

**Topics**
+ [libmemcached ライブラリのコンパイル](#Appendix.PHPAutoDiscoveryCompile.Libmemcached)
+ [PHP 用 ElastiCache Memcached Auto Discovery クライアントのコンパイル](#Appendix.PHPAutoDiscoveryCompile.Client)

## libmemcached ライブラリのコンパイル
<a name="Appendix.PHPAutoDiscoveryCompile.Libmemcached"></a>

**aws-elasticache-cluster-client-libmemcached ライブラリをコンパイルするには**

1. Amazon EC2 インスタンスの起動

1. ライブラリの依存関係をインストールします。
   + Amazon Linux 201509 AMI 上

     ```
     sudo yum install gcc gcc-c++ autoconf libevent-devel
     ```
   + Ubuntu 14.04 AMI 上

     ```
     sudo apt-get update
     sudo apt-get install libevent-dev gcc g++ make autoconf libsasl2-dev
     ```

1. リポジトリをプルし、コードをコンパイルします。

   ```
   Download and install [ https://github.com/awslabs/aws-elasticache-cluster-client-libmemcached/archive/v1.0.18.tar.gz]( https://github.com/awslabs/aws-elasticache-cluster-client-libmemcached/archive/v1.0.18.tar.gz)
   ```

## PHP 用 ElastiCache Memcached Auto Discovery クライアントのコンパイル
<a name="Appendix.PHPAutoDiscoveryCompile.Client"></a>

以下のセクションでは、ElastiCache Memcached Auto Discovery クライアントをコンパイルする方法について説明します。

**Topics**
+ [PHP 7 用 ElastiCache Memcached クライアントのコンパイル](#Appendix.PHPAudiscoveryCompile.Client.PHP7)
+ [PHP 5 用 ElastiCache Memcached クライアントのコンパイル](#Appendix.PHPAudiscoveryCompile.PHP5)

### PHP 7 用 ElastiCache Memcached クライアントのコンパイル
<a name="Appendix.PHPAudiscoveryCompile.Client.PHP7"></a>

code ディレクトリで以下の一連のコマンドを実行します。

```
git clone https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php.git
cd aws-elasticache-cluster-client-memcached-for-php 
git checkout php7
sudo yum install php70-devel
phpize
./configure --with-libmemcached-dir=<libmemcached-install-directory> --disable-memcached-sasl
make
make install
```

**注記**  
PHP バイナリに libmemcached ライブラリを静的にリンクして、さまざまな Linux プラットフォーム間でできるようにします。そのためには、`make` の前にコマンドを実行します。  

```
sed -i "s#-lmemcached#<libmemcached-install-directory>/lib/libmemcached.a -lcrypt -lpthread -lm -lstdc++ -lsasl2#" Makefile 
```

### PHP 5 用 ElastiCache Memcached クライアントのコンパイル
<a name="Appendix.PHPAudiscoveryCompile.PHP5"></a>

`aws-elasticache-cluster-client-memcached-for-php` フォルダーで、以下のコマンドを実行して `aws-elasticache-cluster-client-memcached-for-php/` をコンパイルします。

```
git clone https://github.com/awslabs/aws-elasticache-cluster-client-memcached-for-php.git
cd aws-elasticache-cluster-client-memcached-for-php 
sudo yum install zlib-devel
phpize
./configure --with-libmemcached-dir=<libmemcached-install-directory>
make
make install
```

# ElastiCache クライアントの設定
<a name="ClientConfig"></a>

ElastiCache クラスターは、Valkey、Memcached、および Redis OSS のプロトコルに準拠しています。既存の環境で現在使用しているコード、アプリケーション、および一般的なツールのほとんどは、このサービスでもシームレスに動作します。

このセクションでは、ElastiCache のキャッシュノードに接続するための特定の考慮事項について説明します。

**Topics**
+ [制限されるコマンド](ClientConfig.RestrictedCommands.md)
+ [ノードのエンドポイントおよびポート番号を検索する](ClientConfig.FindingEndpointsAndPorts.md)
+ [自動検出を使用するための接続](ClientConfig.AutoDiscovery.md)
+ [Valkey または Redis OSS クラスター内のノードへの接続](ClientConfig.ReplicationGroup.md)
+ [DNS 名と基になっている IP](ClientConfig.DNS.md)

# 制限されるコマンド
<a name="ClientConfig.RestrictedCommands"></a>

マネージドサービス操作性を実現するため、ElastiCache では高度な特権を必要とする特定のキャッシュエンジン固有のコマンドへのアクセスが制限されます。Redis OSS を実行するクラスターの場合、次のコマンドは使用できせん。
+ `bgrewriteaof`
+ `bgsave`
+ `config`
+ `debug`
+ `migrate`
+ `replicaof`
+ `save`
+ `slaveof`
+ `shutdown`
+ `sync`

# ノードのエンドポイントおよびポート番号を検索する
<a name="ClientConfig.FindingEndpointsAndPorts"></a>

キャッシュノードに接続するには、アプリケーションがそのノードのエンドポイントとポート番号を認識している必要があります。

## ノードのエンドポイントおよびポート番号を検索する (コンソール)
<a name="ClientConfig.FindingEndpointsAndPorts.CON"></a>

 **ノードエンドポイントとポート番号を調べるには** 

1. [Amazon ElastiCache マネジメントコンソール](https://aws.amazon.com/elasticache)にサインインし、クラスターで実行しているエンジンを選択します。

   選択したエンジンを実行しているすべてのクラスターが一覧表示されます。

1. 実行しているエンジンや設定に対して、以下を行います。

1. 対象のクラスターの名前を選択します。

1. 関心があるノードの [**ポート**] および [**エンドポイント**] 列を見つけます。

## キャッシュノードのエンドポイントおよびポート番号を検索する (AWS CLI)
<a name="ClientConfig.FindingEndpointsAndPorts.CLI"></a>

キャッシュノードのエンドポイントとポート番号を確認するには、`describe-cache-clusters` コマンドを `--show-cache-node-info` パラメータを指定して使用します。

```
aws elasticache describe-cache-clusters --show-cache-node-info 
```

完全修飾 DNS 名とポート番号は、出力のエンドポイントセクションにあります。

## キャッシュノードのエンドポイントおよびポート番号を検索する (ElastiCache API)
<a name="ClientConfig.FindingEndpointsAndPorts.API"></a>

キャッシュノードのエンドポイントとポート番号を確認するには、`DescribeCacheClusters` アクションを `ShowCacheNodeInfo=true` パラメータを指定して使用します。

**Example**  

```
 1. https://elasticache.us-west-2.amazonaws.com /
 2.     ?Action=DescribeCacheClusters
 3.     &ShowCacheNodeInfo=true
 4.     &SignatureVersion=4
 5.     &SignatureMethod=HmacSHA256
 6.     &Timestamp=20140421T220302Z
 7.     &Version=2014-09-30   
 8.     &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
 9.     &X-Amz-Credential=<credential>
10.     &X-Amz-Date=20140421T220302Z
11.     &X-Amz-Expires=20140421T220302Z
12.     &X-Amz-Signature=<signature>
13.     &X-Amz-SignedHeaders=Host
```

# 自動検出を使用するための接続
<a name="ClientConfig.AutoDiscovery"></a>

アプリケーションが自動検出を使用する場合、調べる必要があるのは各キャッシュノードの個々のエンドポイントではなく、クラスターの設定エンドポイントだけです。詳細については、「[クラスター (Memcached) 内のノードを自動的に識別する](AutoDiscovery.md)」を参照してください。

**注記**  
現在のところ、自動検出は Memcached エンジンを実行しているクラスターでのみ使用できます。

# Valkey または Redis OSS クラスター内のノードへの接続
<a name="ClientConfig.ReplicationGroup"></a>

**注記**  
現時点では、レプリケーションとリードレプリカをサポートするクラスター (API/CLI: レプリケーショングループ) は、Valkey または Redis OSS を実行するクラスターでのみサポートされています。

クラスターの場合、ElastiCache には個々のノードの接続情報を取得するためのコンソール、CLI、および API インターフェイスが用意されています。

読み取り専用アクティビティの場合、アプリケーションはクラスター内のいずれのノードにも接続できます。ただし、書き込みアクティビティの場合、アプリケーションから直接ノードに接続する代わりに、アプリケーションからクラスターのプライマリエンドポイント (Valkey または Redis OSS (クラスターモードが無効)) または設定エンドポイント (Valkey または Redis OSS (クラスターモードが有効)) に接続することをお勧めします。これにより、リードレプリカをプライマリロールに昇格させることでクラスターを再設定することにした場合でも、アプリケーションは常に正しいノードを見つけることができます。

## レプリケーショングループのクラスターへの接続 (コンソール)
<a name="ClientConfig.ReplicationGroup.CON"></a>

**エンドポイントとポート番号を調べるには**
+ トピックを参照してください。[Valkey または Redis OSS (クラスターモードが無効) クラスターのエンドポイントを検索する (コンソール)](Endpoints.md#Endpoints.Find.Redis)

## レプリケーショングループのクラスターへの接続 (AWS CLI)
<a name="ClientConfig.ReplicationGroup.CLI"></a>

 **キャッシュノードのエンドポイントとポート番号を調べるには**

レプリケーショングループの名前を指定して、`describe-replication-groups` コマンドを使用します。

```
aws elasticache describe-replication-groups redis2x2
```

このコマンドでは、次のような出力が生成されます。

```
{
    "ReplicationGroups": [
        {
            "Status": "available", 
            "Description": "2 shards, 2 nodes (1 + 1 replica)", 
            "NodeGroups": [
                {
                    "Status": "available", 
                    "Slots": "0-8191", 
                    "NodeGroupId": "0001", 
                    "NodeGroupMembers": [
                        {
                            "PreferredAvailabilityZone": "us-west-2c", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "redis2x2-0001-001"
                        }, 
                        {
                            "PreferredAvailabilityZone": "us-west-2a", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "redis2x2-0001-002"
                        }
                    ]
                }, 
                {
                    "Status": "available", 
                    "Slots": "8192-16383", 
                    "NodeGroupId": "0002", 
                    "NodeGroupMembers": [
                        {
                            "PreferredAvailabilityZone": "us-west-2b", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "redis2x2-0002-001"
                        }, 
                        {
                            "PreferredAvailabilityZone": "us-west-2a", 
                            "CacheNodeId": "0001", 
                            "CacheClusterId": "redis2x2-0002-002"
                        }
                    ]
                }
            ], 
            "ConfigurationEndpoint": {
                "Port": 6379, 
                "Address": "redis2x2.9dcv5r.clustercfg.usw2.cache.amazonaws.com"
            }, 
            "ClusterEnabled": true, 
            "ReplicationGroupId": "redis2x2", 
            "SnapshotRetentionLimit": 1, 
            "AutomaticFailover": "enabled", 
            "SnapshotWindow": "13:00-14:00", 
            "MemberClusters": [
                "redis2x2-0001-001", 
                "redis2x2-0001-002", 
                "redis2x2-0002-001", 
                "redis2x2-0002-002"
            ], 
            "CacheNodeType": "cache.m3.medium", 
            "PendingModifiedValues": {}
        }
    ]
}
```

## レプリケーショングループのクラスターへの接続 (ElastiCache API)
<a name="ClientConfig.ReplicationGroup.API"></a>

 **キャッシュノードのエンドポイントとポート番号を調べるには** 

以下のパラメータを使って `DescribeReplicationGroups` を呼び出します。

`ReplicationGroupId` = レプリケーショングループの名前。

**Example**  

```
 1. https://elasticache.us-west-2.amazonaws.com /
 2.     ?Action=DescribeCacheClusters
 3.     &ReplicationGroupId=repgroup01
 4.     &Version=2014-09-30   
 5.     &SignatureVersion=4
 6.     &SignatureMethod=HmacSHA256
 7.     &Timestamp=20140421T220302Z
 8.     &X-Amz-Algorithm=&AWS;4-HMAC-SHA256
 9.     &X-Amz-Date=20140421T220302Z
10.     &X-Amz-SignedHeaders=Host
11.     &X-Amz-Expires=20140421T220302Z
12.     &X-Amz-Credential=<credential>
13.     &X-Amz-Signature=<signature>
```

# DNS 名と基になっている IP
<a name="ClientConfig.DNS"></a>

クライアントには、キャッシュデータが保存されているサーバーのアドレスとポートが含まれるサーバーリストが保持されています。ElastiCache を使用すると、DescribeCacheClusters API（または、describe-cache-clusters コマンドラインユーティリティ）により、サーバーリストに使用できる完全修飾 DNS エントリとポート番号が返されます。

**重要**  
キャッシュノードエンドポイントに接続するときは、クライアントアプリケーションがキャッシュノードの DNS 名を頻繁に解決するように設定することが重要です。

ElastiCache では、障害発生時にキャッシュノードが回復した場合にキャッシュノードの DNS 名が同じままであることが保証されます。

ほとんどのクライアントライブラリは、永続的なキャッシュノード接続をデフォルトでサポートします。ElastiCache を使用するときは、永続的なキャッシュノード接続の使用をお勧めします。クライアント側の DNS キャッシュが複数の場所 (クライアントライブラリ、言語ランタイム、クライアントオペレーティングシステムなど) で行われる場合があります。各レイヤーのアプリケーション設定を確認して、キャッシュノードの IP アドレスを頻繁に解決するようにしてください。