5. IBM Event StreamsのGeoReplicatorの構成方法

前回の記事の続きです。

本記事では、IBM Event StreamsのGeoReplicatorの構成方法を記述します。

1. [IBM Event Streamsのインストール方法](https://qiita.com/Gentaro7/items/5bc9676c87c70145991a)
1. [IBM Event Streamsのインスタンス作成方法](https://qiita.com/Gentaro7/items/a8900eefdafd3dc52bed)
1. [IBM Event StreamsのWebUIへのログイン方法](https://qiita.com/Gentaro7/items/46060353574c347d2dc6)
1. [IBM Event Streamsのサンプルアプリケーションの使い方](https://qiita.com/Gentaro7/items/df1e464de3cf6eee3e6b)
1. [IBM Event StreamsのGeoReplicatorの構成方法](https://qiita.com/Gentaro7/items/7196ca6cf3053c3de55b)(←本記事)
1. [IBM Event Streamsへの接続情報の確認方法](https://qiita.com/Gentaro7/items/99c82320be292a1fa896)


# はじめに

Geo-replicationは、複数のIBM Event Streamsインスタンスの間で指定したトピックのデータを複製することができます。

Geo-replicationは、以下のシナリオでよく使用されます。

- IBM Event StreamsインスタンスのDRプランとして利用
- ミッションクリティカルなデータの安全性を担保
- データを別のIBM Event Streamsインスタンスにマイグレーション

より詳しい情報はこちらの公式ドキュメントを参照ください。

https://ibm.github.io/event-automation/es/georeplication/about/

# 前提

- IBM Event Streamsインスタンスが作成済みであること
- IBM Event StreamsのWebUIにログインできること

まだの方は`2. IBM Event Streamsのインスタンス作成方法`と`3. IBM Event StreamsのWebUIへのログイン方法`を参照ください。

# 概要

今回構成する環境は以下になります。

#### 構成図

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/8b8bebf8-22ad-05ef-3292-3fe3d68f8def.png)

#### 構成するコンポーネント

- dev-scram-1
    - データ複製元のIBM Event Streamsインスタンス
- sample-topic-1
    - dev-scram-1にあるトピック
- dev-scram-2(IBM Event Streams)
    - データ複製先のIBM Event Streamsインスタンス
- dev-scram-1.sample-topic-1
    - dev-scram-1から複製されたトピック
- dev-scram-2(GeoReplicator)
    - GeoReplicatorインスタンスで、トピックデータの複製を行うコンポーネント
    - 複製先のIBM Event Streamsインスタンスと同じ名前になります

#### データフロー

geo-replicatorがdev-scram-1にあるトピックからデータを取得し、dev-scram-2のトピックにデータを送信します。


# IBM Event StreamsのGeoReplicatorの構成方法

1. dev-scram-2(複製先IBM Event Streamsインスタンス)の作成

    [2. IBM Event Streamsのインスタンス作成方法](https://qiita.com/Gentaro7/items/a8900eefdafd3dc52bed)と同じ手順で、インスタンスの作成を行います。
    

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/02b67b7a-e062-40ab-6c86-17f0ab3ce937.png)



1. dev-scram-2のWebUIへのログインを確認

    [3. IBM Event StreamsのWebUIへのログイン方法](https://qiita.com/Gentaro7/items/46060353574c347d2dc6)と同じ手順で、dev-scram-2のWebUIへのログインをしておきます。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/acc1b5cb-16b3-c54c-727b-1e40282ba784.png)
    
1. GeoReplicatorインスタンスの作成    

    3-1. `Geo-Replicator`タブから`Create EventStreamsGeoReplicator`ボタンをクリック
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/456d8959-02e4-3231-3d7d-792c83dad066.png)

    3-2. `YAML view`から`metadata.name`と`metadata.labels.eventstreams.ibm.com/cluster`を入力

    `metadata.name`と`metadata.labels.eventstreams.ibm.com/cluster`には同じ値を入力する必要があり、複製先のIBM Event Streamsインスタンス名(今回は`dev-scram-2`)を入力します。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/39397c92-6599-eca7-028d-53cf380517bd.png)


    3-3. `Create`ボタンをクリック
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/64e83a31-d39f-06d2-3038-90ff425b3b56.png)

    3-4. GeoReplicatorインスタンスが作成されいることを確認
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/2d22fd92-285b-7f06-459d-efe9befdc7cf.png)


1. dev-scram-1とdev-scram-2の接続

    データ複製元のIBM Event Streamsインスタンス(dev-scram-1)とデータ複製先のIBM Event Streamsインスタンス(dev-scram-2)を接続します。
    
    4-1. dev-scram-2への接続情報を確認
    
    dev-scram-2のWebUIから操作を行います。
    
    `Connect to cluster`をクリック
        
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/9c5801ba-bb41-b83c-306c-0b5d9fd26cbd.png)
    
    `Geo-replication`タブから`I want this cluster to be able to receive topics from another cluster`を選択
    
    接続するための資格情報が表示されるので、コピーアイコンからコピーしておきます。
    
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/b3c7f709-4588-d735-3e0e-c011a2317daa.png)

    4-2. dev-scram-1にdev-scram-2を登録する
    
    データ複製元のIBM Event Streamsインスタンス(dev-scram-1)にデータ複製先のIBM Event Streamsインスタンス(dev-scram-2)を登録します。

    dev-scram-1のWebUIから操作を行います。

    `Topics`サイドメニューから`Geo-replication`をクリック
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/92211359-a652-a119-e575-3e8f414f4f14.png)

    `Add destination cluster`をクリック
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/045c174a-b265-1779-66d7-a29f4b9d54eb.png)

    `I want to replicate topics from this cluster to another cluster`を選択し、`Destination cluster connection snnipet`に先ほどコピーしたdev-scram-2の資格情報を入力します

    入力後資格情報の検証が行われ、`API address`と`Credentials`に✅が表示されればOKなので、`Connect cluster`をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/66cce925-9cd4-e301-5dea-adbe2f0c47fb.png)

    `Destination cluster`に`dev-scram-2`が表示されていれば、接続完了です
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/a825e2ef-5031-60d8-0c7e-2dc31b1c7ece.png)


1. トピックを複製

    dev-scram-1のWebUIから複製するトピックを選択します。

    `sample-topic-1`を選択し`Geo-replication to destination`をクリック
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/4e22ed51-1c55-aee8-8ecd-9ffa0acc0d21.png)


    選択したトピックが複製対象になっていることを確認して`Create`をクリック

    ※複製先のトピック名は`<複製元のIBM Event Streamsインスタンス名>.<複製対象のトピック名>`の命名規則にしたがって、自動的に命名されます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/4e7c210a-5a0d-7e5a-3f8f-7cb860353692.png)

    `Replication Health`が`✅Running`になっていれば複製完了です
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/409817ea-f609-d66c-7c82-446751ea6a4d.png)


1. 複製されたトピックの確認

    dev-scram-2のWebUIから複製されたトピックの確認をします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/5aa56467-2bc2-d1c3-1b9a-5e21b3413658.png)

    トピック内のデータも全て複製されていることが確認できます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/302134/010b1de9-30bd-1459-5912-becd517689da.png)


以上がIBM Event StreamsのGeoReplicatorの構成方法になります。


# 終わりに
本手順では、IBM Event StreamsのGeoReplicatorの構成方法を記述しました。

次回は6. IBM Event Streamsを使用したProducer/Consumerの実装サンプル(予定)を記述予定です。(随時作成中なので、しばらくお待ちください。)

不備不足等ございましたら、ご指摘いただければと思います。