【OCI】OCI Cache (ManagedのRedis) を使ってみる

# はじめに

今回はOracle Cloud Infrastructure（OCI）がManagedで提供している
Cache (ManagedのRedis)を使ってみたいと思います。

■参考
About OCI Cache
https://docs.oracle.com/en-us/iaas/Content/redis/overview.htm

今回はパブリックサブネットに作成したCompute（Oracle Linux）から
プライベートサブネットに立てたRedisにアクセスするシンプルな
構成となります。

■構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/7f9480fc-e001-0400-9783-4487058e8ae5.png)

■事前準備
・アカウント
Compute, Redisが使用できるOCIアカウントを準備

・ネットワークの設定
VCN、サブネット（パブリック、プライベート）、インターネットゲートウェイ、
セキュリティリスト等を作成しておき、インターネットからSSH(Port 22)で
アクセスできるように準備しておきます。

※注意点
Redisクラスタ作成時にPort 6379を許可したセキュリティリストが
自動的で追加されますが、パブリック/プライベートサブネット間の
設定はされませんので、手動でRedisのPort 6379を設定しておきます。

例. 以下の構成だった場合、
パブリックサブネット: 10.0.0.0/24
プライベートサブネット: 10.0.1.0/24

プライベートサブネットに紐づくセキュリティリストに
次のように追加しておきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/afa1cc28-ca3b-e050-2bb1-1625dee4607b.png)

※この設定を入れることでパブックサブネットにあるComputeから
プライベートサブネットのRedisにアクセスできるようになります。

ネットワークの作成方法についてはこちらを参考にします。
https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn/

・Computeの作成
RedisにアクセスするためのCompute VMを作成します。
外部からアクセスできるようにパブリックサブネットに配置します。

Computeの作成方法についてはこちらを参考にします。
https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance/

◆目次
1.Redisクラスタの作成
2.Redisに接続するための環境を設定
3.Redisへのアクセステスト

## 1.Redisクラスタの作成
それでは早速、Redisクラスタの作成をしていきます。

左上メニュー[Ξ]からデータベース → Redis クラスタを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/766cbccc-4fe0-130b-d73a-e1a1f45c32aa.png)

続いてクラスタの作成を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/88c143f3-7e06-ccf0-d0ac-d92a5e8d41db.png)

名前を任意で入力して、次へ進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/08920589-918c-1164-469c-45848866b7c6.png)

1ノード当たりのメモリー(GB)とノード数を入れて次へ進みます。
※ここでは8GBメモリ、2ノードにしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/7bdf04b8-fa35-8b8e-a64f-17bcec2face4.png)

予め作成しておいたVCNとプライベートサブネットを選択して次へ進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/b19b7f18-0367-5404-6879-cc8908b499c2.png)

最後にクラスタの作成を実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/f204f8ba-3794-b9b2-44a1-ea9e00b79047.png)

クラスタの作成を実行後、作成中となりますのでしばらく待ちます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/16929dcf-3e8a-daa8-ddeb-3f0e09846277.png)

クラスタの作成が完了した後、名前を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/18e5603e-25a4-24a7-2c2a-1fa48c2616af.png)

Redisのアクセスで使用するため、プライマリ・エンドポイントをコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/095a0e6f-10d9-5651-f4a0-0f6e164a562f.png)

以上でRedisクラスタの作成は終了です。

## 2.Redisに接続するための環境を設定
パブリックサブネット上に作成されているCompute内にRedisの実行環境を作ります。
※今回はredis-7.0.9を使用します。

Linuxにsshでログインしたらrootで以下の作業を行います。

Redisのダウンロード
```
curl http://download.redis.io/releases/redis-7.0.9.tar.gz -o redis-7.0.9.tar.gz
```

ファイルの解凍
```
tar zxvf redis-7.0.9.tar.gz
```

ディレクトリの移動とmake
※makeはTLSを指定します。
（OCIのRedisはTLSでの接続となるため）
```
cd redis-7.0.9.tar.gz
make BUILD_TLS=yes
```
※エラーが出た時はmake distcleanをして再度実行

make testを実行
```
make test
```

インストールを実行
```
make install
```

インストール完了後にconfをetcにコピー
```
cp redis.conf /etc/
```

confを編集
```
vi /etc/redis.conf
```
confは２か所変更
バックグラウンドで実行できるようにdaemonizeをyesにし、
ログの保存先を指定
～
daemonize yes
logfile /var/log/redis.log
～

最後にRedisを起動
```
redis-server /etc/redis.conf
```

以上でRedis環境の設定は終了です。

## 3.Redisへのアクセステスト
OCIに立てたRedisにアクセスしてみます。

Linuxからそのままredis-cliで接続します。
redis-cli --tls -h <プライマリ・エンドポイント>
```
 redis-cli --tls -h amaa*****.redis.ap-tokyo-1.oci.oraclecloud.com
```

接続が上手くいくと次のようになります。
```
amaa*****.redis.ap-tokyo-1.oci.oraclecloud.com:6379>
```

あとは値をセットして
```
> set val "test"
OK
```

情報が取得できることが確認できればOKです。
```
> get val
"test"
```

以上でRedisへのアクセステストは終了です。

## おわり
以上、OCI Cache (ManagedのRedis) を簡単に使うことができました。