今回はIBM Cloud Private 3.1.0(以下、ICPを記載します)のインストール方法をご紹介します。 ICPはいくつかのエディションがあります。
- Community Edition
- Cloud Native Edition
- Enterprise Edition
今回はCloud Native Editionを使ってインストールをしていきます。 Community Editionは無償ですが本番用途では使用できないなど制約があります。
ICPの情報リソース
現段階ではあまり情報が公開されていません。IBMのKnowledge Centerがさくっとみられる情報です。
https://www.ibm.com/support/knowledgecenter/en/SSBS6K/product_welcome_cloud_private.html
今回はここにあるインストール手順を参考にインストールを行います。
※記載の手順と順番が異なる部分があります。あらかじめご了承ください。
構築する環境
2台のサーバーを使いICPをインストールします。
1台目:Master node (master,management,etcd,Proxy)
2台目:Worker node (Worker)
※インストール手順では、1台目を「Master」、2台目を「Worker」を表記します。
サーバーはどちらも同一スペックを用意しています。
OS | RedHat Endterprise Linux 7.4 |
物理/仮想 | 仮想 |
CPU(Core) | 8 |
Memory | 24GB |
Disk | 300GB |
NIC | 1つ |
FirewallとSELinuxについては無効にしています。
利用するファイル類の準備
今回はライセンス品になりますので、IBM社のサイトからダウンロードしてきます。
ICP用のDockerについてもIBM社から提供されますので、ICP本体とDockerファイルをダウンロードします。
- IBM Cloud Private 3.1.0 for Linux (x86_64) Docker (CNW6SEN )
Size : 8,839MB - IBM Cloud Private 3.1.0 Docker for Linux (x86_64) (CNVP4EN )
Size : 141MB
今回これらのファイルは「/root/」に配置しています。
[root@tokyo-master01 ~]# ls -l /root
total 9640628
-rw-------. 1 root root 1992 Oct 18 11:17 anaconda-ks.cfg
-rw-r--r--. 1 root root 9268925381 Oct 2 10:19 ibm-cloud-private-x86_64-3.1.0.tar.gz
-rwxr-xr-x. 1 root root 148057785 Oct 2 09:50 icp-docker-18.03.1_x86_64.bin
-rw-r--r--. 1 root root 455008787 Sep 12 22:52 mcm-3.1.0_x86.tgz
※ ファイル名:mcm-3.1.0_x86.tgz は今回使用しません。
OSインストールで気を付けること
OSインストールではDiskパーティションの構成に気を付ける必要があります。
具体的には、「/」を250GB以上割り当てておかないとインストール時にWarningがでます。テスト用のインストールであれば、150GB程度でも動作しております。
今回の環境では下記のようにパーティションを設定しています。
[root@tokyo-master01 ~]# fdisk -l
Disk /dev/sda: 322.1 GB, 322122547200 bytes, 629145600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000c5d5b
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 629137407 313519104 8e Linux LVM
Disk /dev/mapper/rhel_tokyo--master01-root: 268.4 GB, 268435456000 bytes, 524288000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/rhel_tokyo--master01-swap: 23.4 GB, 23416799232 bytes, 45735936 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/rhel_tokyo--master01-home: 29.2 GB, 29183967232 bytes, 56999936 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
インストール(Master/Worker共通)
すべてrootでログインして作業しています。
共通でやること
Pythonのインストール
Pythonがインストールされていない場合はPythonを先にインストールします。
Pythonは3系にも対応しています。3系を利用する場合は「Python」コマンドでPython3が呼び出されるようにリンクを作成しておく必要があります。
Dockerのインストール
Dockerインストーラへの実行権限付与
ダウンロードしてきたDockerのインストーラには実行権限がないので実行権限を付与します(上記のファイルリスト上ではすでに権限を付与しています)
cd ~/
chmod +x icp-docker-18.03.1_x86_64.bin
Dockerのインストール
./icp-docker-18.03.1_x86_64.bin --install
systemctl start docker
systemctl enable docker
SSH鍵の交換
SSH鍵の作成
ssh-keygen -b 4096 -f ~/.ssh/id_rsa -N ""
許可された鍵のリストに追加
cat ~/.ssh/id_rsa.pub | sudo tee -a ~/.ssh/authorized_keys
各ノード間でSSH公開鍵をコピー
##サンプル ssh-copy-id -i ~/.ssh/id_rsa.pub <user>@<node_ip_address>
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx
ssh-copy-id -i ~/.ssh/id_rsa.pub root@xxx.xxx.xxx.xxx
SSHの再起動
systemctl restart sshd
パスワードなしでお互いにログインできるか確認
ssh (Master or Worker IP)
SSH接続後、抜けるのを忘れずに行う
exit
/etc/hostsを指定する
/etc/hostsでMasterとWorkerが名前解決できるように設定します。
vi /etc/hosts
#############
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
# ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 # コメントアウト
## 追加する
MasterIP MasterHostname
WorkerIP WorkerHostName
#############
SELinuxを止める
今回はざっくりと止めます。
vi /etc/selinux/config
###########
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled # enforcingからdisabledに変更する
# SELINUXTYPE= can take one of three two values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
###########
Firewallも止める
Firewallも止めてしまいます。
systemctl stop firewalld
systemctl disable firewalld
再起動
OSを再起動します。
reboot
インストール(Master編)
ここから先はWorkerで作業をすることはありません。Masterのみで実行していきます。
DokcerコンテナのイメージをMasterに取り込む
cd ~/
tar xf ibm-cloud-private-x86_64-3.1.0.tar.gz -O | sudo docker load
※ 環境にもよりますが10~20分かかります。
取り込んだイメージの確認
docker images
※重要※イメージ名を確認
イメージ名に ibmcom/icp-inception- が含まれるイメージを確認してメモします。
docker images | grep ibmcom/icp-inception-
ibmcom/icp-inception-amd64 3.1.0-ee 481dbd525a28 4 weeks ago 744MB
ディレクトリを作成して移動
mkdir /opt/ibm-cloud-private-3.1.0
cd /opt/ibm-cloud-private-3.1.0/
イメージから構成ファイルを抽出
docker run -v $(pwd):/data -e LICENSE=accept ibmcom/icp-inception-amd64:3.1.0-ee cp -r cluster /data
ここで指定している ibmcom/icp-inception-amd64:3.1.0-ee が手順「※重要※イメージ名を確認」で確認したイメージ名になります。
作成されたフォルダ内のファイルリストを確認
ls -la /opt/ibm-cloud-private-3.1.0/cluster
###
total 28
drwxr-xr-x 3 root root 4096 Sep 27 15:03 .
drwxr-xr-x 3 root root 4096 Sep 27 15:03 ..
-rw-r--r-- 1 root root 7452 Sep 27 15:03 config.yaml
-rw-r--r-- 1 root root 104 Sep 27 15:03 hosts
drwxr-xr-x 3 root root 4096 Sep 27 15:03 misc
-r-------- 1 root root 1 Sep 27 15:03 ssh_key
###
クラスター内の各ノードのIPアドレスをすべて指定 /<installation_directory>/cluster/hosts ファイルに追加します。
ナレッジ︓ https://www.ibm.com/support/knowledgecenter/SSBS6K_3.1.0/installing/hosts.html
vi /opt/ibm-cloud-private-3.1.0/cluster/hosts
[master]
xxx.xxx.xxx.xxx # MasterのIPを入力
[worker]
xxx.xxx.xxx.xxx # WorkerのIPを入力
[proxy]
xxx.xxx.xxx.xxx # MasterのIPを入力
#[management]
#4.4.4.4
#[va]
#5.5.5.5
※今回はProxyをMasterにインストールしています。
ICP ClusterにSSH秘密鍵をコピー
cp /root/.ssh/id_rsa /opt/ibm-cloud-private-3.1.0/cluster/ssh_key
インストールディレクトリに移動し、Imageフォルダを作成
cd /opt/ibm-cloud-private-3.1.0
mkdir -p cluster/images
作成したフォルダにインストールイメージファイルをコピー
mv ~/ibm-cloud-private-x86_64-3.1.0.tar.gz cluster/images/
コピーされていることを確認
ls cluster/images/
環境のデプロイ
cd ./cluster
sudo docker run --net=host -t -e LICENSE=accept -v "$(pwd)":/installer/cluster ibmcom/icp-inception-amd64:3.1.0-ee install
ここで指定している ibmcom/icp-inception-amd64:3.1.0-ee が手順「※重要※イメージ名を確認」で確認したイメージ名になります。
インストールが完了すると下記のメッセージが表示されます。
PLAY RECAP *********************************************************************************************
xxx.xxx.xxx.xx0 : ok=164 changed=82 unreachable=0 failed=0
xxx.xxx.xxx.xx1 : ok=130 changed=62 unreachable=0 failed=0
localhost : ok=267 changed=163 unreachable=0 failed=0
POST DEPLOY MESSAGE ************************************************************************************
The Dashboard URL: https://xxx.xxx.xxx.xx0:8443, default username/password is admin/admin
Playbook run took 0 days, 0 hours, 31 minutes, 27 seconds
管理コンソールログイン
インストール完了時に表示されたURLにWebブラウザでアクセスしてログインします。
- ログインユーザー: admin
- パスワード: admin
注意事項
docker loadするDockerイメージ名について
今回、Docker loadで下記のイメージ名を指定しています。
ibmcom/icp-inception-amd64:3.1.0-ee
[:]以下の値がバージョンになるのですが、このバージョンの指定が間違っていると latest のイメージをDocker Hubからダウンロードしてきてしまいます。
Docker Hubのイメージではインストールができないため、インストール時にエラーが発生してしまいます。
必ず、イメージをロード後、docker images | grep ibmcom/icp-inception- で保持しているイメージを確認してください。
※ IBM Knowledge Centerで指定しているイメージが今回利用したイメージ名と異なっているのでご注意ください。
Dockerのインストールに失敗したとき
Dockerのインストールに失敗することがあります。失敗の原因はパッケージが不足しているためですが、通常、yumが使える環境であれば自動的にパッケージをインストールします。
yumが利用できるように設定していただくか、インストールイメージもしくはDVDをマウントしていただいてDiskをyumのリポジトリとして利用できるようにしていただければと思います。
今回の内容は以上になります。次回はMulti Cloud Managerという製品を今回作成した環境にインストールしていきたいと思います。(すずきけ)