メインコンテンツまでスキップ

Check environment configurations

環境設定の確認

このトピックでは、StarRocksを展開する前に確認して設定する必要のあるすべての環境とシステムの設定項目をリストします。これらの設定項目を適切に設定することで、StarRocksクラスタは高い可用性とパフォーマンスで動作します。

ポート

StarRocksでは、異なるサービスに対して特定のポートを使用します。これらのポートがインスタンス上で占有されていないか確認してください。これらのインスタンスに他のサービスを展開している場合は、これらのポートが占有されていないか確認してください。

FEポート

FE展開用のインスタンスでは、次のポートを確認する必要があります:

  • 8030:FE HTTPサーバーポート(http_port
  • 9020:FE Thriftサーバーポート(rpc_port
  • 9030:FE MySQLサーバーポート(query_port
  • 9010:FE内部通信ポート(edit_log_port

FEインスタンスで次のコマンドを実行して、これらのポートが占有されているかどうかを確認します:

netstat -tunlp | grep 8030
netstat -tunlp | grep 9020
netstat -tunlp | grep 9030
netstat -tunlp | grep 9010

上記のポートのいずれかが占有されている場合は、FEノードを展開する際に後ほど代替ポートを見つけて指定する必要があります。詳細な手順については、StarRocksを展開する-リーダーFEノードの起動を参照してください。

BEポート

BE展開用のインスタンスでは、次のポートを確認する必要があります:

  • 9060:BE Thriftサーバーポート(be_port
  • 8040:BE HTTPサーバーポート(be_http_port
  • 9050:BEハートビートサービスポート(heartbeat_service_port
  • 8060:BE BRPCポート(brpc_port

BEインスタンスで次のコマンドを実行して、これらのポートが占有されているかどうかを確認します:

netstat -tunlp | grep 9060
netstat -tunlp | grep 8040
netstat -tunlp | grep 9050
netstat -tunlp | grep 8060

上記のポートのいずれかが占有されている場合は、BEノードを展開する際に後ほど代替ポートを見つけて指定する必要があります。詳細な手順については、StarRocksを展開する-BEサービスの起動を参照してください。

CNポート

CN展開用のインスタンスでは、次のポートを確認する必要があります:

  • 9060:CN Thriftサーバーポート(be_port
  • 8040:CN HTTPサーバーポート(be_http_port
  • 9050:CNハートビートサービスポート(heartbeat_service_port
  • 8060:CN BRPCポート(brpc_port

CNインスタンスで次のコマンドを実行して、これらのポートが占有されているかどうかを確認します:

netstat -tunlp | grep 9060
netstat -tunlp | grep 8040
netstat -tunlp | grep 9050
netstat -tunlp | grep 8060

上記のポートのいずれかが占有されている場合は、CNノードを展開する際に後ほど代替ポートを見つけて指定する必要があります。詳細な手順については、StarRocksを展開する-CNサービスの起動(オプション)を参照してください。

ホスト名

StarRocksクラスタのFQDNアクセスを有効化する場合は、各インスタンスにホスト名を割り当てる必要があります。

各インスタンスのファイル**/etc/hosts**で、クラスタ内のすべての他のインスタンスのIPアドレスと対応するホスト名を指定する必要があります。

注意

ファイル**/etc/hosts**内のすべてのIPアドレスは一意である必要があります。

JDKの設定

StarRocksは、インスタンス上の環境変数JAVA_HOMEを使用してJavaの依存関係を検出します。

環境変数JAVA_HOMEを確認するには、次のコマンドを実行します:

echo $JAVA_HOME

JAVA_HOMEを設定するには、次の手順に従ってください:

  1. ファイル**/etc/profile**でJAVA_HOMEを設定します:

    sudo vi /etc/profile
    # <path_to_JDK>JDKがインストールされているパスに置き換えてください。
    export JAVA_HOME=<path_to_JDK>
    export PATH=$PATH:$JAVA_HOME/bin
  2. 変更を有効にします:

    source /etc/profile

変更が有効になったことを確認するために、次のコマンドを実行します:

java -version

CPUのスケーリングガバナー

この設定項目はオプションです。CPUがスケーリングガバナーをサポートしていない場合は、この設定をスキップできます。

CPUのスケーリングガバナーは、CPUの電力モードを制御します。CPUがこれをサポートしている場合、CPUパフォーマンスを向上させるためにperformanceに設定することをお勧めします:

echo 'performance' | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

メモリの設定

メモリのオーバーコミット

メモリのオーバーコミットを有効にすると、オペレーティングシステムはプロセスに対してメモリリソースを過剰に割り当てることができます。メモリのオーバーコミットを有効にすることをお勧めします。

echo 1 | sudo tee /proc/sys/vm/overcommit_memory

透過的な巨大ページ

透過的な巨大ページはデフォルトで有効になっていますが、メモリアロケーターと干渉する可能性があるため、パフォーマンスの低下につながる可能性がありますので、この機能を無効にすることをお勧めします。

echo 'madvise' | sudo tee /sys/kernel/mm/transparent_hugepage/enabled

スワップ領域

スワップ領域を無効にすることをお勧めします。

スワップ領域を確認して無効にするために、次の手順に従ってください:

  1. スワップ領域を無効にします。

    swapoff /<path_to_swap_space>
  2. 設定ファイル**/etc/fstab**からスワップ領域の情報を削除します。

    /<path_to_swap_space> swap swap defaults 0 0
  3. スワップ領域が無効になっていることを確認します。

    free -m

スワッピネス

パフォーマンスへの影響を排除するために、スワッピネスを無効にすることをお勧めします。

echo 0 | sudo tee /proc/sys/vm/swappiness

ストレージの設定

使用しているストレージメディアに応じて適切なスケジューラーアルゴリズムを選択することをお勧めします。

次のコマンドを実行して、使用しているスケジューラーアルゴリズムを確認することができます:

cat /sys/block/${disk}/queue/scheduler
# 例:cat /sys/block/vdb/queue/schedulerを実行してください

SATAディスクにはmq-deadlineスケジューラーアルゴリズムを、SSDおよびNVMeディスクにはkyberスケジューラーアルゴリズムを使用することをお勧めします。

SATA

mq-deadlineスケジューラーアルゴリズムは、SATAディスクに適しています。

この項目を一時的に変更するには、次のコマンドを実行します:

echo mq-deadline | sudo tee /sys/block/${disk}/queue/scheduler

この項目を変更した後、次のコマンドを実行して変更を永続化します:

chmod +x /etc/rc.d/rc.local

SSDおよびNVMe

kyberスケジューラーアルゴリズムは、NVMeまたはSSDディスクに適しています。

この項目を一時的に変更するには、次のコマンドを実行します:

echo kyber | sudo tee /sys/block/${disk}/queue/scheduler

システムがSSDとNVMeのためにkyberスケジューラをサポートしていない場合は、none(またはnoop)スケジューラを使用することをお勧めします。

echo none | sudo tee /sys/block/${disk}/queue/scheduler

この項目を変更した後、次のコマンドを実行して変更を永続化します:

chmod +x /etc/rc.d/rc.local

SELinux

SELinuxを無効にすることをお勧めします。

sed -i 's/SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sed -i 's/SELINUXTYPE/#SELINUXTYPE/' /etc/selinux/config
setenforce 0

ファイアウォール

ファイアウォールが有効になっている場合は、FEノード、BEノード、およびブローカーの内部ポートを開きます。

systemctl stop firewalld.service
systemctl disable firewalld.service

LANG変数

LANG変数を確認および手動で設定するには、次のコマンドを実行します:

echo "export LANG=en_US.UTF8" >> /etc/profile
source /etc/profile

タイムゾーン

自身のタイムゾーンに基づいてこの項目を設定してください。

次の例では、タイムゾーンを/Asia/Shanghaiに設定しています。

cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock

ulimitの設定

StarRocksで問題が発生する可能性がありますので、max file descriptorsmax user processesの値が異常に小さい場合は、以下のコマンドを実行して設定することができます。

Max file descriptors

以下のコマンドを実行して、ファイルディスクリプタの最大数を設定します:

ulimit -n 65535

Max user processes

以下のコマンドを実行して、ユーザープロセスの最大数を設定します:

ulimit -u 40960

ファイルシステムの設定

ext4またはxfsジャーナリングファイルシステムを使用することをお勧めします。マウントタイプを確認するには、次のコマンドを実行します:

df -Th

ネットワークの設定

tcp_abort_on_overflow

システムが現在新しい接続要求でオーバーフローしている場合、システムが新しい接続をリセットすることができるようにします:

echo 1 | sudo tee /proc/sys/net/ipv4/tcp_abort_on_overflow

somaxconn

リッスンソケットに対してキューに入れることができる接続要求の最大数を1024に指定します:

echo 1024 | sudo tee /proc/sys/net/core/somaxconn

NTPの設定

StarRocksクラスタ内のノード間で時間の同期を設定する必要があります。これにより、トランザクションの線形一貫性が確保されます。pool.ntp.orgで提供されるインターネットの時刻サービスを使用するか、オフライン環境の中に組み込まれたNTPサービスを使用することができます。たとえば、クラウドサービスプロバイダーが提供するNTPサービスを使用することができます。

  1. NTP時刻サーバが存在するかどうかを確認します。

    rpm -qa | grep ntp
  2. NTPサービスが存在しない場合は、NTPサービスをインストールします。

    sudo yum install ntp ntpdate && \
    sudo systemctl start ntpd.service && \
    sudo systemctl enable ntpd.service
  3. NTPサービスを確認します。

    systemctl list-unit-files | grep ntp
  4. NTPサービスの接続性と監視状態を確認します。

    netstat -tlunp | grep ntp
  5. アプリケーションがNTPサーバと同期しているかを確認します。

    ntpstat
  6. ネットワーク内で設定されたすべてのNTPサーバの状態を確認します。

    ntpq -p

高並行性の設定

StarRocksクラスタの負荷並行性が高い場合、次の設定を行うことをお勧めします:

echo 120000 > /proc/sys/kernel/threads-max
echo 262144 > /proc/sys/vm/max_map_count
echo 200000 > /proc/sys/kernel/pid_max