re6p-redis などの永続メモリインスタンスは、高い CPU 対メモリ比を提供します。これにより、メモリ 1 GiB あたりのコストを大幅に削減して Redis アプリケーションを実行できます。このトピックでは、複数のオペレーティングシステム向けに、これらのインスタンスに Redis アプリケーションを迅速にデプロイする方法について説明します。
背景情報
本トピックで説明する Redis アプリケーションを迅速にデプロイする手順は、特定のインスタンスタイプとイメージバージョンに適用されます。要件は次のとおりです:
-
インスタンスタイプ:ecs.re6p-redis.large、ecs.re6p-redis.xlarge、ecs.re6p-redis.2xlarge、ecs.re6p-redis.4xlarge、ecs.re6p-redis.13xlarge
イメージバージョン
Alibaba Cloud Linux 2
CentOS 7.6 以降
Ubuntu 18.04 および 20.04
Alibaba Cloud Linux 2 での Redis アプリケーションのデプロイ
Alibaba Cloud Linux 2 は Redis アプリケーション用に特別に最適化されています。コミュニティオペレーティングシステムと比較して、Redis アプリケーションの全体的なパフォーマンスを 20% 以上向上させます。
Alibaba Cloud Linux 2 には、Redis 6.0.5 および Redis 3.2.12 用の yum ソースが組み込まれています。sudo yum install コマンドを実行して、これらのバージョンをデプロイできます。他のバージョンの Redis を手動でデプロイすることも可能です。詳細については、「CentOS での Redis アプリケーションのデプロイ」と「Ubuntu での Redis アプリケーションのデプロイ」をご参照ください。
このセクションで使用するリソースは次のとおりです:
-
インスタンスタイプ:ecs.re6p-redis.2xlarge
-
イメージ:Alibaba Cloud Linux 2.1903 LTS 64 ビット
-
永続メモリインスタンスを購入します。
詳細については、「カスタムインスタンスの作成」をご参照ください。次の設定にご注意ください。
-
インスタンス:[x86-Compute] アーキテクチャセクションで、メモリ最適化タイプ をクリックし、ecs.re6p-redis.2xlarge インスタンスタイプを選択します。
-
イメージ:Alibaba Cloud Linux 2.1903 LTS 64 ビットを選択します。
-
-
インスタンスにログインします。
詳細については、「接続方法」をご参照ください。
-
必要に応じて Redis 6.0.5 または Redis 3.2.12 をデプロイします。
-
Redis 6.0.5 をデプロイする場合:
sudo yum install -y alinux-release-experimentals && \ sudo yum install -y redis-6.0.5 -
Redis 3.2.12 をデプロイする場合:
sudo yum install -y alinux-release-experimentals && \ sudo yum install -y redis-3.2.12
-
-
Redis アプリケーションを起動し、DRAM と永続メモリの容量を設定します。
コマンド例は次のとおりです。
-
推奨される DRAM と永続メモリの比率は 1:4 です。
export MEMKIND_DAX_KMEM_NODES=1 && \ sudo redis-server /etc/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 4 --hashtable-on-dram yes --daemonize yes --logfile /tmp/redis_8369.log --protected-mode no --bind 0.0.0.0 -
DRAM と永続メモリの比率をカスタマイズして、他のアプリケーション用に DRAM を確保することもできます。たとえば、比率を 1:16 に設定し、2 GiB の DRAM と 32 GiB の永続メモリで構成される 34 GiB のメモリを割り当てることができます。
export MEMKIND_DAX_KMEM_NODES=1 && \ sudo redis-server /etc/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 16 --maxmemory 34G
-
CentOS での Redis アプリケーションのデプロイ
このセクションで使用するリソースとソフトウェアは次のとおりです:
-
インスタンスタイプ:ecs.re6p-redis.2xlarge
-
イメージ:CentOS 7.6
-
Redis:Redis 4.0.14
-
memkind:memkind 1.10.1-rc2
先に進む前に、リソースが https://github.com/ からダウンロードされていることを確認してください。ダウンロードに失敗した場合は、成功するまでコマンドを再実行してください。
-
永続メモリインスタンスを購入します。
詳細については、「カスタムインスタンスの作成」をご参照ください。次の設定にご注意ください。
-
インスタンス:[x86-Compute] アーキテクチャセクションで、 メモリ最適化タイプ をクリックし、ecs.re6p-redis.2xlarge インスタンスタイプを選択します。
-
イメージ:CentOS 7.6 (64 ビット) を選択します。
-
-
インスタンスにログインします。
詳細については、「接続方法」をご参照ください。
-
コンパイル環境を準備します。
export MEMKIND_DAX_KMEM_NODES=1 && \ sudo yum -y install numactl-devel.x86_64 && \ sudo yum -y groupinstall 'Development Tools' -
Redis 4.0.14 のソースコードを準備します。
sudo wget https://github.com/redis-io/redis/archive/4.0.14.tar.gz && \ sudo wget https://github.com/redis/redis/compare/4.0.14...tieredmemdb:4.0.14-devel.diff -O redis_4.0.14_diff_tieredmemdb.patch && \ tar xzvf 4.0.14.tar.gz && \ cd redis-4.0.14 && \ git apply --ignore-whitespace ../redis_4.0.14_diff_tieredmemdb.patch説明このパッチは永続メモリを有効にするために使用されます。Redis のバージョンが異なると、必要なパッチも異なります。詳細については、「永続メモリを有効にするためのパッチのダウンロード」をご参照ください。
-
memkind のソースコードを準備します。
memkind は、永続メモリの割り当てと管理に使用されるメモリ管理ツールです。
-
memkind ソースコードのダウンロード
sudo wget https://github.com/memkind/memkind/archive/v1.10.1-rc2.tar.gz && \ tar xzvf v1.10.1-rc2.tar.gz && \ mv memkind-1.10.1-rc2/* ./deps/memkind -
オプション:makefile の調整
説明ldd --versionを実行して glibc のバージョンを確認できます。glibc のバージョンが 2.17 以降の場合は、次の手順をスキップして Redis を直接コンパイルできます。cd ./deps/memkind && \ sudo wget https://github.com/memKeyDB/memKeyDB/wiki/files/0001-Use-secure_getenv-when-possible.patch && \ git apply --ignore-whitespace 0001-Use-secure_getenv-when-possible.patch && \ cd ../../説明パッチのダウンロードに失敗した場合は、コマンドを再実行するときに
cd ./deps/memkind && \を含めないでください。
-
-
Redis をコンパイルしてインストールします。
make clean && \ make distclean && \ make MALLOC=memkind -j 4 && \ sudo make install -
Redis アプリケーションを起動し、DRAM と永続メモリの容量を設定します。
コマンド例は次のとおりです。
説明/home/userを実際のユーザーフォルダーへのパスに置き換えてください。-
推奨される DRAM と永続メモリの比率は 1:4 です。
redis-server /home/user/redis-4.0.14/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 4 --hashtable-on-dram yes --daemonize yes --logfile /tmp/redis_8369.log --protected-mode no --bind 0.0.0.0 -
DRAM と永続メモリの比率をカスタマイズして、他のアプリケーション用に DRAM を確保することもできます。たとえば、比率を 1:16 に設定し、2 GiB の DRAM と 32 GiB の永続メモリで構成される 34 GiB のメモリを割り当てることができます。
redis-server /home/user/redis-4.0.14/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 16 --maxmemory 34G
-
Ubuntu での Redis アプリケーションのデプロイ
このセクションで使用するリソースとソフトウェアは次のとおりです:
-
インスタンスタイプ:ecs.re6p-redis.2xlarge
-
イメージ:Ubuntu 20.04
-
Redis:Redis 6.2.5
-
memkind:memkind 1.10.1-rc2
先に進む前に、リソースが https://github.com/ からダウンロードされていることを確認してください。ダウンロードに失敗した場合は、成功するまでコマンドを再実行してください。
-
永続メモリインスタンスを購入します。
詳細については、「カスタムインスタンスの作成」をご参照ください。次の設定にご注意ください。
-
インスタンス:[x86-Compute] アーキテクチャセクションで、 メモリ最適化タイプ をクリックし、ecs.re6p-redis.2xlarge インスタンスタイプを選択します。
-
イメージ:Ubuntu 20.04 64 ビットを選択します。
-
-
インスタンスにログインします。
詳細については、「接続方法」をご参照ください。
-
コンパイル環境を準備します。
export MEMKIND_DAX_KMEM_NODES=1 && \ sudo apt update && \ sudo apt -y install git && \ sudo apt install -y libnuma-dev && \ sudo apt install -y numactl -
Redis 6.2.5 のソースコードを準備します。
sudo wget https://download.redis.io/releases/redis-6.2.5.tar.gz && \ sudo wget https://github.com/redis/redis/compare/6.2.5...tieredmemdb:6.2.5-devel.diff -O redis_6.2.5_diff_tieredmemdb.patch && \ tar xzf redis-6.2.5.tar.gz && \ cd redis-6.2.5 && \ git apply --ignore-whitespace ../redis_6.2.5_diff_tieredmemdb.patch説明このパッチは永続メモリを有効にするために使用されます。Redis のバージョンが異なると、必要なパッチも異なります。詳細については、「永続メモリを有効にするためのパッチのダウンロード」をご参照ください。
-
memkind のソースコードを準備します。
memkind は、永続メモリの割り当てと管理に使用されるメモリ管理ツールです。
-
memkind ソースコードのダウンロード
sudo wget https://github.com/memkind/memkind/archive/v1.10.1-rc2.tar.gz && \ tar xzvf v1.10.1-rc2.tar.gz && \ mv memkind-1.10.1-rc2/* ./deps/memkind/ -
makefile の調整
説明ldd --versionを実行して glibc のバージョンを確認できます。glibc のバージョンが 2.17 以降の場合は、次の手順をスキップして Redis を直接コンパイルできます。cd ./deps/memkind && \ sudo wget --no-check-certificate https://github.com/memKeyDB/memKeyDB/wiki/files/0001-Use-secure_getenv-when-possible.patch && \ git apply --ignore-whitespace 0001-Use-secure_getenv-when-possible.patch && \ cd ../../説明パッチのダウンロードに失敗した場合は、コマンドを再実行するときに
cd ./deps/memkind && \を含めないでください。
-
-
Redis をコンパイルしてインストールします。
make clean && \ make distclean && \ make MALLOC=memkind -j 4 && \ sudo make install -
Redis アプリケーションを起動し、DRAM と永続メモリの容量を設定します。
コマンド例は次のとおりです。
説明/home/userを実際のユーザーフォルダーへのパスに置き換えてください。-
推奨される DRAM と永続メモリの比率は 1:4 です。
redis-server /home/user/redis-6.2.5/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 4 --hashtable-on-dram yes --daemonize yes --logfile /tmp/redis_8369.log --protected-mode no --bind 0.0.0.0 -
DRAM と永続メモリの比率をカスタマイズして、他のアプリケーション用に DRAM を確保することもできます。たとえば、比率を 1:16 に設定し、2 GiB の DRAM と 32 GiB の永続メモリで構成される 34 GiB のメモリを割り当てることができます。
redis-server /home/user/redis-6.2.5/redis.conf --port 8369 --memory-alloc-policy ratio --dram-pmem-ratio 1 16 --maxmemory 34G
-
永続メモリを有効にするためのパッチのダウンロード
コマンド例のダウンロード URL と、ファイル名に含まれるバージョン番号を置き換えてください。たとえば、Redis 6.2.5 用のパッチをダウンロードするコマンドは次のようになります。
sudo wget https://github.com/redis/redis/compare/6.2.5...tieredmemdb:6.2.5-devel.diff -O redis_6.2.5_diff_tieredmemdb.patch
サポートされているパッチのダウンロード URL は次のとおりです。
-
Redis 6.2
https://github.com/redis/redis/compare/6.2.5...tieredmemdb:6.2.5-devel.diff
-
Redis 6.0
-
https://github.com/redis/redis/compare/6.0.9...tieredmemdb:6.0.9-devel.diff
-
https://github.com/redis/redis/compare/6.0.5...tieredmemdb:6.0.5-devel.diff
-
https://github.com/redis/redis/compare/6.0.3...tieredmemdb:6.0.3-devel.diff
-
https://github.com/redis/redis/compare/6.0.0...tieredmemdb:6.0.0-devel.diff
-
-
Redis 5.0
-
Redis 4.0
-
https://github.com/redis/redis/compare/4.0.14...tieredmemdb:4.0.14-devel.diff
-
https://github.com/redis/redis/compare/4.0.9...tieredmemdb:4.0.9-devel.diff
-
https://github.com/redis/redis/compare/4.0.2...tieredmemdb:4.0.2-devel.diff
-
https://github.com/redis/redis/compare/4.0.0...tieredmemdb:4.0.0-devel.diff
-
-
Redis 3.2
https://github.com/redis/redis/compare/3.2.12...tieredmemdb:3.2.diff