メインコンテンツまでスキップ
バージョン: 2.0.0

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をインストールする流れは以下の順序になります.

  1. Ubuntu22.04のイメージファイルをダウンロードする。
  2. USBメモリ(16GB)にイメージファイルを書き込む。
  3. サーバーにUSBメモリを差し込む。
  4. BIOSモードで起動する。
  5. BIOSから起動するUSBメモリの優先順位を一番上にする。
  6. Ubuntuをインストールする。
  7. Ubuntuの起動確認
  8. 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)というファイルがイメージファイルになるので保管しておく。

Ubuntu 22.04 LTSの公式サイト

select-os-image

2. USBメモリ(16GB)にイメージファイルを書き込む。

MacでイメージファイルをUSBメモリに書き込むために、Balena Etcherというツールを使用する。 EtcherをMacにインストールしていない場合はこちらからダウンロードする。

Etcherのダウンロード

インストールが完了したらEtcherを起動する。起動完了すると以下のような画面が表示される。 USBメモリをMacBookに差し込み、マウントされていることを確認する。

まず、Select Imageをクリックし、手順1でダウンロードしたイメージファイルを選択する。 Select targetをクリックし、差し込んだ USBを選択する。 Falsh!をクリックすることで、USBメモリをフォーマットしイメージファイルを書き込む。

etcher-ui

イメージの書き込みが完了したら、USBメモリをMacから抜く。

3. サーバーにUSBメモリを差し込む。

サーバーのUSBポートにUSBメモリを挿入してください。

4. サーバーをBIOSモードで起動する。 電源ボタンを押し、DELLのロゴが画面に表示されると、F2を連打するとBIOSモードで起動できる。 さらにF2を押すと、“System Setup”の画面が表示される。

5. BIOSから起動するUSBメモリの優先順位を一番上にする。 System BIOSを選択する。 bios-ui-1

Boot Settingを選択 bios-ui-2

UEFI Boot Settingsを選択 bios-ui-3

UEFI Boot Sequenceを選択すると、起動するディスクの優先順位を設定できる。 差し込んだUSBメモリ(Disk connected to front USB 1: STORE N GO)を一番上にする。 設定が完了したら、Backボタンを押し、FInishボタンを押して設定を保存して、サーバーを再起動する。 bios-ui-4

Ubuntuのインストール 再起動すると対話型のインストーラが起動します。

参考1 参考2

さくらの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にログインし、ジョブを作成します。

login-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になればセットアップは完了です。

03.証明書の適用とNginxのデプロイ

04.コンソールのデプロイ