Newtroidの構築方法
概要
本ページでは0からNewtroidを構築する場合のマニュアルを記載する。 このマニュアルは開発者向けのドキュメントである。
Newtroidのソースコードを改変し、Newtoridをクラウドにデプロイするところまでを 想定したマニュアルである。
01.Serverの構築
オンプレの場合
OSをインストールします。
# 対応OS
Ubuntu 22.04 LTS
Ubuntu22.04を自社サーバーにクリーンインストールします。 Desktop版ではなくServer版(CLIのみ)をインストールすることを推奨します。 OSのインストールからNewtroid(Container Manager)を構築するまでの手順を説明します。 ここではOSをインストールし、手元のMacbookからSSH接続(LAN)が行えることを確認するまでを実施します。
本事例の準備物
- サーバー(DELL, Power Edge R240) × 3 ... OSをインストールするサーバー
- USBメモリ(16GB) ... OSインストール用
- MacBook Pro ... リモート操作端末
操作手順の概要 ServerにOSをインストールする流れは以下の順序になります.
- Ubuntu22.04のイメージファイルをダウンロードする。
- USBメモリ(16GB)にイメージファイルを書き込む。
- サーバーにUSBメモリを差し込む。
- BIOSモードで起動する。
- BIOSから起動するUSBメモリの優先順位を一番上にする。
- Ubuntuをインストールする。
- Ubuntuの起動確認
- MacBookからSSH接続する
1. Ubuntu22.04のイメージファイルをダウンロードする
Macbookで以下のURLにアクセスし、Server install imageの64-bit PC (AMD64) server install imageをクリックするとイメージファイルのダウンロードが始まる。 ダウンロードが完了すると、ubuntu-22.04.4-live-server-amd64.iso(2.1GB)というファイルがイメージファイルになるので保管しておく。
2. USBメモリ(16GB)にイメージファイルを書き込む。
MacでイメージファイルをUSBメモリに書き込むために、Balena Etcherというツールを使用する。 EtcherをMacにインストールしていない場合はこちらからダウンロードする。
インストールが完了したらEtcherを起動する。起動完了すると以下のような画面が表示される。 USBメモリをMacBookに差し込み、マウントされていることを確認する。
まず、Select Imageをクリックし、手順1でダウンロードしたイメージファイルを選択する。 Select targetをクリックし、差し込んだ USBを選択する。 Falsh!をクリックすることで、USBメモリをフォーマットしイメージファイルを書き込む。
イメージの書き込みが完了したら、USBメモリをMacから抜く。
3. サーバーにUSBメモリを差し込む。
サーバーのUSBポートにUSBメモリを挿入してください。
4. サーバーをBIOSモードで起動する。 電源ボタンを押し、DELLのロゴが画面に表示されると、F2を連打するとBIOSモードで起動できる。 さらにF2を押すと、“System Setup”の画面が表示される。
5. BIOSから起動するUSBメモリの優先順位を一番上にする。 System BIOSを選択する。
Boot Settingを選択
UEFI Boot Settingsを選択
UEFI Boot Sequenceを選択すると、起動するディスクの優先順位を設定できる。 差し込んだUSBメモリ(Disk connected to front USB 1: STORE N GO)を一番上にする。 設定が完了したら、Backボタンを押し、FInishボタンを押して設定を保存して、サーバーを再起動する。
Ubuntuのインストール 再起動すると対話型のインストーラが起動します。
さくらのVPSの場合
AWS(EC2)の場合
ポート53問題
NewtroidのnXtalは53番ポートを使用する必要があります。しかし、Ubuntu 22.04ではデフォルトでインストールした状態だとPortの53が既存のプロセスに占有されている場合があります。 原因はいくつかある場合があります。
実際にEC2に構築したときに起きた事例をもとに、その解決方法を示します。
まずはポートが使用されているか確認します。
To see if port 53 is in use on your system, use:
すると以下のようにUbuntu 22.04ではsystemd-resolved
というプロセスが53番を使用していることがわかります。
$ sudo lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 610 systemd-resolve 12u IPv4 19377 0t0 UDP localhost:domain
systemd-r 610 systemd-resolve 13u IPv4 19378 0t0 TCP localhost:domain (LISTEN)
このプロセスを停止する設定を行います。
そのためには/etc/systemd/resolved.conf
を編集していきます。
sudo vim /etc/systemd/resolved.conf
開いたファイルで
DNS=
のコメントアウトを外し1.1.1.1
にします。
同様にDNSStubListener=
をno
に編集します。
[Resolve]
DNS=1.1.1.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no
DNSStubListener=no
#ReadEtcHosts=yes
反映するために以下のコマンドを実行します。
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
最後にサーバーを再起動してください。
再度sudo lsof -i :53
を実行し、何も表示されなくなっていれば成功です。
$ sudo lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
参考リンク:Ubuntu: How To Free Up Port 53, Used By systemd-resolved
02.Newtroidのインストール
サーバーの構築が終わったらNewtroidをサーバーにインストールします。
以下の情報が必要となります。
- newtroidのソースコードリポジトリへのアクセス権限
- newtroidをビルド/デプロイするためのJenkinsサーバー
- ビルドイメージを保管するためのDocker Registry
- newtroidをデプロイするサーバー
- newtroidをデプロイするサーバーへのSSH接続情報
- newtroidをデプロイを完了後に確認するためのローカル環境コンソール
- newtroidのコンソール、APIに使用するドメインとSSL証明書
- newtoridのサービス間通信、簡易ホスティングに利用するためのドメインとSSL証明書(ワイルドカード対応のもの)
詳細手順
リポジトリにcicd
フォルダがあります。
Jenkinsにログインし、ジョブを作成します。
Jenkinsのジョブのフォルダと命名規則
JenkinsではフォルダとジョブでCICDを管理します。 命名規則は管理をしやすくするために重要です。
ビルドジョブの作成
デプロイジョブの作成
03.ノードの構築
このステップではnewtroidで利用可能なノードを構築します。 ノードにはnewtoridから自由にコンテナを起動できるようになります。
概要
ノードの構築の作成
ノードサーバー構築の前提
マスターサーバーからSSH接続できるようにネットワーク・ファイアーウォールの設定を行なってください。
以下の情報が必要となります。
- newtroidマスターサーバーが構築済みであること
- newtroidコンソールのアカウント
- nAnsibleのOptXの利用権
- ノードサーバーへのSSH接続情報
STEP1:nAnsibleの登録
newtroidコンソールにログインします。
OptX画面からOptX「nAnsible」を登録します。
nAnsibleのバージョンを作成します。
nAnsibleのJenkinsjobを設定します。 TODO
以上の手順で新しいnewtroidにnAnsibleが登録されました。
STEP2:ノードサーバーの登録
ノードサーバーを登録します。
- newtroidコンソールにログインします。
- InfrastructureページのServerタブを開き新規作成をクリックします。
- 登録フォームに入力します。
- サーバーのIPを設定してください。IPは複数登録できますが、
IP1
はマスターノードのリバースプロキシから到達可能なIPアドレスを設定してください。 - SSH情報を入力してください。この情報はnAnsibleがノードサーバーへアクセスするときに使用されます。
マスターノードを登録してない場合は同様の手順でマスターノードをサーバーとして登録してください。マスターノードとはNewtroidをインストールしたサーバーです。
STEP3:nAnsibleの実行
nAnsibleを実行します。 nAnsibleを実行するとノードサーバー上にDocker Engine, Container Managerがインストールされます。 これによってノードの構築が完了し、newtroidで操作可能なノードになります。
Xerviceを作ります。 nAnsibleを選択します。
環境変数の設定
nAnsibleの環境変数を設定します。
起動サーバーの設定
nAnsibleの稼働サーバーはnewtroidとマスターノードにします。
起動
- 起動ボタンで起動をします。
初回起動時はDokcerイメージのpullが走るため時間がかかる場合があります。
確認
- newtroidコンソールにアクセスします。
- InfrastructureページのServerタブを開き新規作成をクリックします。
- ノードサーバーのステータスが
online
になればセットアップは完了です。