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