Skip to content

필사 모드: Cross Realm Trust HBase設定方法

日本語
0%
정확도 0%
💡 왼쪽 원문을 읽으면서 오른쪽에 따라 써보세요. Tab 키로 힌트를 받을 수 있습니다.
원문 렌더가 준비되기 전까지 텍스트 가이드로 표시합니다.

Background

Kerberosが適用された2つのHadoopクラスタのREALMが異なる場合、理論的には2つのクラスタ間のデータ移動は不可能です。しかし、Cross Realm Trustを設定すれば、クラスタ間のデータを照会したり自由に移動することも可能になります。

Prerequisite

Kerberosが既に適用されたAとBという2つのクラスタがあると仮定します。Aクラスタは UBUNTU.YJ.COM というRealmに属しており、Bクラスタは CENTOS.YJ.COM というRealmに属しています。また、各クラスタはZookeeper、HDFS、HBase、YARNコンポーネントを持っています。

Steps

1. krbtgtの作成

Cross Realmでは、krbtgtという名前のPrincipalが非常に重要です。

UBUNTU.YJ.COM KDCに以下の2つのprincipalを登録します。

`krbtgt/UBUNTU.YJ.COM@CENTOS.YJ.COM`

`krbtgt/CENTOS.YJ.COM@UBUNTU.YJ.COM`

同様に、CENTOS.YJ.COM KDCに以下の2つのprincipalを登録します。

`krbtgt/UBUNTU.YJ.COM@CENTOS.YJ.COM`

`krbtgt/CENTOS.YJ.COM@UBUNTU.YJ.COM`

上記4つのprincipalのencryption type、password、kvnoはすべて同一でなければなりません。

2. /etc/krb5.conf、/etc/hostsの更新

`UBUNTU.YJ.COM` realmに属するサーバーの/etc/krb5.confには、`CENTOS.YJ.COM`関連の設定を以下のように追加する必要があります。

[libdefaults]

default_realm = UBUNTU.YJ.COM

[realms]

UBUNTU.YJ.COM = {

kdc = kdc01.hadoop.example.com:88

admin_server = kdc01.hadoop.example.com:749

default_domain = ubuntu.yj.com

}

CENTOS.YJ.COM = {

kdc = kdc01.example.com:88

admin_server = kdc01.example.com:749

default_domain = centos.yj.com

}

[domain_realm]

.ubuntu.yj.com = UBUNTU.YJ.COM

ubuntu.yj.com = UBUNTU.YJ.COM

.centos.yj.com = CENTOS.YJ.COM

centos.yj.com = CENTOS.YJ.COM

`CENTOS.YJ.COM` realmに属するサーバーの/etc/krb5.confには、`UBUNTU.YJ.COM`関連の設定を以下のように追加する必要があります。

[libdefaults]

default_realm = CENTOS.YJ.COM

[realms]

CENTOS.YJ.COM = {

kdc = kdc01.example.com:88

admin_server = kdc01.example.com:749

default_domain = centos.yj.com

}

UBUNTU.YJ.COM = {

kdc = kdc01.hadoop.example.com:88

admin_server = kdc01.hadoop.example.com:749

default_domain = ubuntu.yj.com

}

[domain_realm]

.centos.yj.com = CENTOS.YJ.COM

centos.yj.com = CENTOS.YJ.COM

.ubuntu.yj.com = UBUNTU.YJ.COM

ubuntu.yj.com = UBUNTU.YJ.COM

また、`/etc/hosts`に相手方クラスタサーバーの情報を追加します。

3. kvnoテスト

Aクラスタでkeytabで認証を受け、Bクラスタのサーバーにkvnoでアクセスできるかテストします。

kinit -kt <A keytab> <A principal>

kvno <B principal>

Bクラスタでkeytabで認証を受け、Aクラスタのサーバーにkvnoでアクセスできるかテストします。

kvnoの値が整数として正常に出力されれば、cross realmの構成が正常に完了したことになります。

4. auth to local Ruleの追加

/etc/krb5.confが変更されると、関連するすべてのコンポーネント(HBase、HDFS、YARN)を再起動する必要があります。この時、Aクラスタのcore-site.xmlに以下のconfigを追加する必要があります。

RULE: [2:$1@$0](.*@\QCENTOS.YJ.COM\E$)s/@\QCENTOS.YJ.COM$//

DEFAULT</value>

Bクラスタには以下を追加します。

RULE: [2:$1@$0](.*@\QUBUNTU.YJ.COM\E$)s/@\QUBUNTU.YJ.COM$//

DEFAULT</value>

`auth_to_local`の文法については[こちら](https://community.cloudera.com/t5/Community-Articles/Auth-to-local-Rules-Syntax/ta-p/245316)を参照してください。

5. テスト

再起動が完了したら、AクラスタからBクラスタへ、またはBクラスタからAクラスタへのexport snapshot、replication設定、verify replicationなどのmigration作業を進めることができます。

Reference

- https://docs.cloudera.com/documentation/enterprise/6/6.3/topics/cm_sg_kdc_def_domain_s2.html

- https://www.youngju.dev/blog/202211/KDC_server_install

- https://community.cloudera.com/t5/Community-Articles/Auth-to-local-Rules-Syntax/ta-p/245316

クイズ

Cross Realm Trust HBase設定方法

Cross Realmでは、krbtgtという名前のPrincipalが非常に重要です。 UBUNTU.YJ.COM

KDCに以下の2つのprincipalを登録します。 krbtgt/UBUNTU.YJ.COM@CENTOS.YJ.COM

krbtgt/CENTOS.YJ.COM@UBUNTU.YJ.COM 同様に、CENTOS.YJ.COM KDCに以下の2つのprincipalを登録します。

UBUNTU.YJ.COM

realmに属するサーバーの/etc/krb5.confには、CENTOS.YJ.COM関連の設定を以下のように追加する必要があります。

CENTOS.YJ.COM

realmに属するサーバーの/etc/krb5.confには、UBUNTU.YJ.COM関連の設定を以下のように追加する必要があります。

また、/etc/hostsに相手方クラスタサーバーの情報を追加します。

Aクラスタでkeytabで認証を受け、Bクラスタのサーバーにkvnoでアクセスできるかテストします。

Bクラスタでkeytabで認証を受け、Aクラスタのサーバーにkvnoでアクセスできるかテストします。

kvnoの値が整数として正常に出力されれば、cross realmの構成が正常に完了したことになります。

/etc/krb5.confが変更されると、関連するすべてのコンポーネント(HBase、HDFS、YARN)を再起動する必要があります。この時、Aクラスタのcore-site.xmlに以下のconfigを追加する必要があります。

Bクラスタには以下を追加します。 auth_to_localの文法についてはこちら>)を参照してください。

현재 단락 (1/79)

Kerberosが適用された2つのHadoopクラスタのREALMが異なる場合、理論的には2つのクラスタ間のデータ移動は不可能です。しかし、Cross Realm Trustを設定すれば、クラスタ間の...

작성 글자: 0원문 글자: 3,507작성 단락: 0/79