AWSに関する推奨事項
AWS EKS
新しいクラスターの作成
EKSクラスターで実行されるコンテナはEC2インスタンス上でホストされ、EC2インスタンスはDorisの要件に応じてシステムレベルで設定する必要があります。クラスターを作成する際、ユーザーはEKSモード、自律モードまたは非自律モードを確認する必要があります。 ここでは自律モードを使用しないことをお勧めします。自律モードのコンピューティングリソースは組み込みノードプールを通じて割り当てとリサイクルが行われるためです。各リソース申請またはリリース時に、既存のリソースが再統合されます。statefulsetなどのステートフルサービス、特に起動に時間がかかりDorisのような厳密な分散連携要件があるサービスの場合、共有ノードプール内のすべてのサービスに混乱を引き起こします。直接的な現象として、Dorisクラスター全体のすべてのノードがドリフトする可能性があります(これは再起動よりも恐ろしいことです。このプロセスはローリング再起動ではなく、以前に安定していたサービスがノード上にある時に、ノードが強制的にリリースされ、K8sがこれらのpodを新しいノードにスケジュールします)。本番環境には大きなセキュリティリスクがあります。
- 上記のように、自律モードはステートレスサービスの運用保守デプロイに適しています。Dorisクラスターのインストールには非自律モードをお勧めします
- 推奨オペレーティングシステムイメージ:Amazon Linux 2
既存のクラスター
既存のクラスター(非自律モード)では、クラスターがK8sの特権モードの使用を制限されていない限り、Doris OperatorによってDorisクラスターを実行できます。 既存のクラスターでは、Dorisクラスターリソースを個別にデプロイ・保守するために新しいノードグループを設定することをお勧めします。これはDoris BEの動作に関するシステム設定に関わり、ホストマシンのシステムパラメータを調整する可能性があります。
DockerHubへのアクセス
EKSでDockerHubパブリックイメージリポジトリにアクセスする必要がある場合、クラスターにAmazon VPC CNI、CoreDNS、kube-proxyなどのネットワークプラグインを追加し、クラスター用のVPCを設定する際にパブリック環境にアクセスできるサブネットを選択する必要があります。
K8s特権
EKS下では、EC2インスタンスは完全に現在のEKSユーザーに属し、リソースプール内で異なるユーザークラスターが相互に影響し合い、K8s特権モードを無効にする状況はありません。
- EKSが特権モードを許可する場合(デフォルトで許可)、システムパラメータを気にする必要はありません。Doris Operatorはデフォルトでdorisの動作に必要なシステムパラメータを調整します。
- 特権モードが許可されない場合、ホスト上で以下のシステムパラメータを調整する必要があります:
- 仮想メモリエリア数の変更:
sysctl -w vm.max_map_count=2000000で仮想メモリマッピングの最大数を調整します。sysctl vm.max_map_countで確認します。 - 透明な巨大ページの無効化:透明な巨大ページはパフォーマンスに悪影響を与える可能性があるため、無効にする必要があります。cat /sys/kernel/mm/transparent_hugepage/enabledにneverが含まれているかで判断します。
- 最大オープンファイルハンドル数の設定:
/etc/security/limits.confを変更してファイルハンドルの最大数を調整します。ulimit -nで確認します。 - スワップの無効化:
swapoff -aですべてのスワップパーティションとファイルを無効にします。swapon --showで確認し、有効でない場合は出力されません。
- 仮想メモリエリア数の変更:
ストレージ
Doris Operatorは本番環境でノードストレージを保存するために永続化設定を使用する必要があります。EBSをお勧めします。
以下の点に注意してください:
- クラスター設定インストールまたは管理インターフェースで、EBSストレージプラグインを追加します。EKS自律モード(非推奨)を使用する場合は、EFSのインストールをお勧めし、ストレージプラグインには対応するロール権限が必要です
- EKSノードのIAMロールが以下の権限を持つことを確認してください:
- AmazonEC2FullAccess
- AmazonEKSWorkerNodePolicy
- AmazonEKS_CNI_Policy
- AmazonSSMManagedInstanceCore
コンピュートリソースプール設定
-
AWS Resource Groups(推奨) クラスター作成インターフェースでノードグループを作成するか、クラスター初期化後にノードグループを追加できます。EC2 > Launch Template > Create Launch Templateを使用して、ノードプール用のノードグループ起動テンプレートを設定します。テンプレートを使用してスクリプトを注入し、EC2インスタンスのシステム環境設定を自動調整して、ノードが起動時に必要なシステムパラメータを自動設定することを保証します。ノードテンプレートを設定することで、EKS自動弾性拡張・縮小を使用する際に新たに追加されるノードのシステムパラメータを自動設定する機能も実現できます。 起動スクリプトの例:
#!/bin/bash
chmod +x /etc/rc.d/rc.local
echo "sudo systemctl stop firewalld.service" >> /etc/rc.d/rc.local
echo "sudo systemctl disable firewalld.service" >> /etc/rc.d/rc.local
echo "sysctl -w vm.max_map_count=2000000" >> /etc/rc.d/rc.local
echo "swapoff -a" >> /etc/rc.d/rc.local
current_limit=$(ulimit -n)
desired_limit=1000000
config_file="/etc/security/limits.conf"
if [ "$current_limit" -ne "$desired_limit" ]; then
echo "* soft nofile 1000000" >> "$config_file"
echo "* hard nofile 1000000" >> "$config_file"
fi
さらに、ノードグループを作成する際に、コマンドラインからアクセスしたい場合は、リモートノードアクセス権限を設定する必要があります。
-
Default node pools(推奨されません)
EKS自律モードで使用されるリソースプールを有効化します。ノードプールを作成する際に、カスタムEC2インスタンスタイプを選択し、インスタンスのCPU、メモリ、その他のリソースを調整できます。ノードプールを設定する際に、EC2インスタンスの起動スクリプトを追加してシステムパラメータを調整できます。ただし、このタイプのリソースプールは自律モードが必要であり、クラスタを管理する自由度が低下します。具体的な変更操作の詳細については、次を参照してください:Cluster Environment OS Checking