Configuration d'un protocole préféré pour les clusters à double pile (Memcached) - Amazon ElastiCache

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration d'un protocole préféré pour les clusters à double pile (Memcached)

Pour les clusters Memcached, vous pouvez contrôler le protocole que les clients utiliseront pour se connecter aux nœuds du cluster à l'aide du paramètre de découverte d'adresses IP. Le paramètre IP Discovery peut être défini sur IPv4 ou IPv6.

Le paramètre de découverte d'adresses IP contrôle le protocole IP utilisé dans la sortie de cluster config get. Ce qui déterminera à son tour le protocole IP utilisé par les clients qui prennent en charge la découverte automatique ElastiCache pour les clusters Memcached.

La modification de la découverte d'adresses IP n'entraînera aucune interruption de service pour les clients connectés. Cependant, la propagation des modifications prendra un certain temps.

Surveillez la sortie de getAvailableNodeEndPoints pour Java, et pour Php, surveillez la sortie de getServerList. Une fois que la sortie de ces fonctions indique tous IPs les nœuds du cluster qui utilisent le protocole mis à jour, les modifications ont fini de se propager.

Exemple Java :

MemcachedClient client = new MemcachedClient(new InetSocketAddress("xxxx", 11211)); Class targetProtocolType = Inet6Address.class; // Or Inet4Address.class if you're switching to IPv4 Set<String> nodes; do { nodes = client.getAvailableNodeEndPoints().stream().map(NodeEndPoint::getIpAddress).collect(Collectors.toSet()); Thread.sleep(1000); } while (!nodes.stream().allMatch(node -> { try { return finalTargetProtocolType.isInstance(InetAddress.getByName(node)); } catch (UnknownHostException ignored) {} return false; }));

Exemple Php :

$client = new Memcached; $client->setOption(Memcached::OPT_CLIENT_MODE, Memcached::DYNAMIC_CLIENT_MODE); $client->addServer("xxxx", 11211); $nodes = []; $target_ips_count = 0; do { # The PHP memcached client only updates the server list if the polling interval has expired and a # command is sent $client->get('test'); $nodes = $client->getServerList(); sleep(1); $target_ips_count = 0; // For IPv4 use FILTER_FLAG_IPV4 $target_ips_count = count(array_filter($nodes, function($node) { return filter_var($node["ipaddress"], FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); })); } while (count($nodes) !== $target_ips_count);

Toutes les connexions client existantes qui ont été créées avant la mise à jour de la découverte d'adresses IP seront toujours connectées à l'aide de l'ancien protocole. Tous les clients validés se reconnecteront automatiquement au cluster à l'aide du nouveau protocole IP une fois que les modifications seront détectées dans la sortie des commandes de découverte du cluster. Cependant, cela dépend de la mise en œuvre du client.