OceanBaseコミュニティ版のデプロイ

OceanBaseコミュニティ版のデプロイ

はじめに

OceanBaseには、エンタープライズ版とコミュニティ版の2種類があります。本記事では、コミュニティ版のデプロイ方法について解説します。エンタープライズ版とコミュニティ版の違いについては、公式サイトをご確認ください。

https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000000507492

デプロイメント方式

OceanBaseコミュニティ版は、以下の方法でデプロイできます。

  • OBDを使用したデプロイ
  • OCPを使用したデプロイ
  • Dockerイメージを使用したデプロイ
  • Kubernetes環境でのob-operatorを使用したデプロイ

適用シナリオ

  • 非サポートOS(MAC、Windowsなど)での体験: Dockerイメージを使用することをお勧めします。
  • サポートOS(Linux系)での体験: OBDを使用することをお勧めします。
  • オンプレミス環境: OBDを使用した標準デプロイをお勧めします。
  • Kubernetes環境: ob-operatorを使用したデプロイをお勧めします。

ハードウェア・ソフトウェア要件

OceanBaseは分散型クラスタ製品であるため、生産環境では最低3台のマシンが必要です。学習環境ではシングルノードでもデプロイ可能です。

ソフトウェアリソース

以下の表に、サポートされているOSと対応するインストールパッケージを示します。

OS インストールパッケージダウンロード
Alibaba Cloud Linux 2、CentOS 7、RedHat 7、Ubuntu 16.X、Debian 9.X el7 ダウンロード
Anolis OS 8.X、Alibaba Cloud Linux 3、CentOS 8、RedHat 8、Debian 10 el8 ダウンロード

ハードウェアリソース

以下の構成でシステムテストが実施されています。高性能・安定稼働のため、推奨構成を使用することをお勧めします。

項目 説明
OS Anolis OS 8.X、Alibaba Cloud Linux 2/3、RHEL/CentOS 7/8、Debian 9+、Ubuntu 16+、SUSE/openSUSE 15+、KylinOS V10、UOS V20、NFSChina 4.0+、Inspur kos 5.8(カーネルバージョン3.10.0以上)
物理CPU テスト環境: 最低2コア
生産環境: 最低4コア、推奨32コア以上
パフォーマンステスト: 24コア以上
メモリ テスト環境: 最低8GB
生産環境: 最低16GB、長期使用では32GB以上、推奨256GB~1024GB
パフォーマンステスト: 128GB~1024GB
ディスクタイプ SSDストレージ
ディスク容量 最低19GB
ファイルシステム EXT4またはXFS(16TBを超える場合はXFSを使用)
ネットワーク ギガビットイーサネット以上

デプロイメント手順

デプロイメントには、オンラインデプロイとオフラインデプロイの2つの方法があります。

  • オンラインデプロイ: OBDが外部ネットワークにアクセスできる環境で実行。デプロイ中に必要なパッケージをリモートリポジトリから自動的に取得します。
  • オフラインデプロイ: 外部ネットワークへのアクセスが不要。事前に必要なパッケージをOBDのローカルミラーリポジトリにアップロードしておく必要があります。

アカウント作成

OceanBaseをデプロイするための専用ユーザーを作成します。

useradd -m -s /bin/bash ocean_user
echo "ocean_user:ocean_pass" | chpasswd

作成したユーザーにsudo権限を付与します。

echo "ocean_user ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers

limits.confの設定

OceanBaseのプロセスが正常に動作するために、以下のリソース制限を設定します。

vi /etc/security/limits.conf
# ユーザー ocean_user のリソース制限
ocean_user soft nofile 655350
ocean_user hard nofile 655350
ocean_user soft stack unlimited
ocean_user hard stack unlimited
ocean_user soft nproc 655360
ocean_user hard nproc 655360
ocean_user soft core unlimited
ocean_user hard core unlimited

設定を反映させるために、ログアウトして再ログインするか、以下のコマンドを実行します。

ulimit -a

sysctl.confの設定

カーネルパラメータを調整し、OceanBaseのパフォーマンスを最適化します。

vi /etc/sysctl.conf

# OceanBase用のカーネルパラメータ
fs.aio-max-nr = 1048576
net.core.somaxconn = 2048
net.core.netdev_max_backlog = 10000
net.core.rmem_default = 16777216
net.core.wmem_default = 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.ip_local_port_range = 3500 65535
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_slow_start_after_idle = 0
vm.swappiness = 0
vm.min_free_kbytes = 2097152
fs.file-max = 6573688
vm.max_map_count = 655360
# OceanBaseのデータディレクトリを指定
kernel.core_pattern = /data/core-%e-%p-%t

設定を適用します。

sysctl -p

ファイアウォールとSELinuxの無効化

ファイアウォールを停止し、起動時に自動的に起動しないように設定します。

systemctl stop firewalld
systemctl disable firewalld

SELinuxを無効にします。

vi /etc/selinux/config
SELINUX=disabled

時間同期の設定

クラスタ内の全ノードで時間が同期されていることを確認します。NTPまたはChronyを使用して設定します。

SSHキーによるパスワードなしログインの設定

管理ノードから各ノードへのSSH接続をパスワードなしで行えるようにします。

# 管理ノードでSSHキーを生成(既に存在する場合はスキップ)
ssh-keygen -t rsa

# 公開鍵を各ノードにコピー
ssh-copy-id -i ~/.ssh/id_rsa.pub ocean_user@node1_ip
ssh-copy-id -i ~/.ssh/id_rsa.pub ocean_user@node2_ip
# ... 他のノードにも同様にコピー

透明大ページ(THP)の無効化

Red Hat系OSでは、透明大ページを無効にする必要があります。

echo never > /sys/kernel/mm/transparent_hugepage/enabled

JDKの設定

OceanBase 4.2.2以降では、JDK 1.8以上が必要です。OBDはSSH経由でJava環境を検出するため、シンボリックリンクを作成してPATHを通すことを推奨します。

# JDKのインストールディレクトリ
ln -s /opt/jdk1.8.0_333/bin/java /usr/bin/java

# バージョン確認
java -version

OBDのインストール

OBD(OceanBase Deployer)をインストールします。

オンラインインストール
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/oceanbase/OceanBase.repo
sudo yum install -y ob-deploy
source /etc/profile.d/obd.sh
オフラインインストール

all-in-oneパッケージをダウンロードしてインストールします。

tar -xzf oceanbase-all-in-one-*.tar.gz
cd oceanbase-all-in-one/bin/
./install.sh
source ~/.oceanbase-all-in-one/bin/env.sh

クラスタのデプロイ

OBDのWebインターフェースを使用してクラスタをデプロイします。

obd web -p 8681

ブラウザで表示されたURL(例: http://<管理ノードのIP>:8681)にアクセスし、Webインターフェースでクラスタ設定を行います。

  • モード: 「最大使用量」または「最小使用量」を選択できます。「最大使用量」モードはリソースを最大限に活用し、推奨されます。
  • rootパスワード: デフォルトはランダム生成されますが、カスタマイズ可能です(8~32文字、特殊文字可)。
  • データディレクトリ: 空のディレクトリを絶対パスで指定します。
  • ポート: デフォルトのポート(1024~65535)を使用するか、空いているポートを指定します。

特定バージョンのコンポーネントのデプロイ

all-in-oneパッケージに含まれるコンポーネントのバージョンを更新する場合、以下の手順でローカルミラーに新しいパッケージを追加します。

# 最新のRPMパッケージをダウンロードし、ローカルディレクトリに配置
cd /path/to/packages
obd mirror clone *.rpm

# ローカルミラーに追加されたパッケージを確認
obd mirror list local

クラスターコマンド

OBDを使用してクラスタを管理するためのコマンドです。

# クラスタ一覧の表示
obd cluster list

# クラスタの状態表示(デプロイ名: mycluster)
obd cluster display mycluster

# クラスタの停止(デプロイ名: mycluster)
obd cluster stop mycluster

# クラスタの削除(デプロイ名: mycluster)
obd cluster destroy mycluster

タグ: OceanBase OBD OCP Docker Kubernetes

7月22日 16:15 投稿