OpenStackとは

OpenStackはオープンソースで開発されているクラウド環境構築用のソフトウェア群。

IaaSとして仮想クラウド環境 (ネットワーク/サーバ(instance)/ルータ/NWインターフェース等)一式が構築可能。

英語で扱い辛いのが難点だが、良質なネット記事や書籍もある。

上記等と併用して読み進めると理解が深まる。

OpenStackネットワーク(neutron)の全体像、FloatingIPの仕組みは右記 OpenStack Networking の仕組み  が解りやすかった。

RDO(Red Hat OpenStack)プロジェクト よりPackStackを使ったインストール

RDOではBash引数で外部ネットワークへの接続  を提示しているが、下記ではAnswerファイルの生成/編集により対話的にインストールする方法を記載する。

●前提条件

公式のハードウェア要件は満たしていること。

  • OS:CentOS7-Minimal

  • NICx2

    NICの1枚目にControllerのホストアドレスとなる、外部接続可能なアドレスが設定されていること(2枚目NICはIP不要)

    例)10.200.20.2 →Controllerのホストアドレスとなる
  • FloatingIP用アドレス帯x1

    例)10.100.20.160/27 →OpenStack内部でのPublicネットワーク。FloatingIPはこのアドレス帯より動的に確保できる。FloatingIPをインスタンスに割り当てるとNATされ、インスタンスが外部通信可能となる

1.Packstackのインストール

https://www.rdoproject.org/install/packstack/  上記のStep 0-Step 2

$sudo yum install -y openstack-packstackまでを 実行する。 Step 0の下記コマンドは必須。

$ sudo systemctl disable firewalld $ sudo systemctl stop firewalld $ sudo systemctl disable NetworkManager $ sudo systemctl stop NetworkManager $ sudo systemctl enable network $ sudo systemctl start network
  • $ sudo yum install -y centos-release-openstack-xxxxx (xxxxxはpike,queens,rockyなどのバージョン名に置き換えて下さい) queensではopenvswitch-agentでcpuが高負荷になる現象を複数環境で確認

  • RHELとCentOSでは インストールパッケージが異なる。 CentOS用のコマンドを使用することに注意

  • 以降でAnswerファイルを出力後修正するため、サイトにある$ sudo packstack --allinoneは実行しない

2.Answerfile生成

$packstack --gen-answer-file=answer.txt

カレントディレクトリにanswer.txtが生成される。

$yum install -y python-setuptools
  • rockyでは問題なし

3.Answerfile編集

変更は2箇所

  • 箇所1

    • CONFIG_PROVISION_DEMO_FLOATRANGE=[FloatingIPを使用するサブネット]
    ex.)CONFIG_PROVISION_DEMO_FLOATRANGE=10.100.20.160/27
  • 箇所2

    • CONFIG_NEUTRON_OVS_BRIDGE_IFACES=[Bridge設定ファイル名]:[2枚目NICデバイス名]
    ex.)CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:ens224

4.OpenStackのインストール

$packstack --answer-file=answer.txt

各種設定ファイルが自動生成/更新され、OpenStackがインストールされるキャプチャ.PNG

  • puppetによる設定時間が30分位は掛かるので気長に待つこと

  • ifcfg-br-ex等は自動生成されない場合は、インストール手順が間違ってます。

/etc/配下に nova/newtron/keystone等のディレクトリが作成され、設定ファイルが格納されます。

5.Horizonにログイン確認

http://コントローラアドレスorホスト名/dashboard/

  • アカウント:admin
  • パスワード:カレントに生成されたkeystonerc_adminファイル参照

インストールは以上です。


以降はログイン後の設定 (作成中)

  • 最初はpublicネットワーク一つだけが存在する。 [ネットワーク]→[ネットワークの作成]でprivateネットワーク作成を行う。 privateネットワークに使うアドレスは任意。

    設定項目
    【ネットワーク種別】VXLAN
    【ネットワークアドレス】192.168.1.0/24
    【ゲートウェイIP(ルータ)】192.168.1.1
    【IPアドレス割り当てプール[=インスタンスのアドレス範囲]】192.168.1.10,192.168.1.30
    【DNS】8.8.8.8
    【DHCP】有効
  • [ネットワーク]→[ルータ]→ルータの作成を実行する。ゲートウェイ(public側)及びインターフェース(private側)を追加

    • 作成時に[外部][SNAT]をチェックすると、ルータにpublic側の空きIPが振られる
    • タブインターフェースの追加でprivate側から見たルータのアドレス(=サブネットのGWアドレス)を付与
  • セキュリティールールにpingとsshを追加

  • ssh用のキーペア作成(novaコマンドを使い、controllerホストのコンソールで作成する方が簡単)

    $ source keystonerc_admin # novaコマンドを使用するために認証ファイルを噛ます $ nova keypair-add admin > admin_key.pem # adminにキーを追加
  • [インスタンス]→[インスタンスの起動]にてprivate側のネットワークにインスタンスを作成

  • インスタンスと外部をNATするためにFloatingIP確保

    • publicネットワークから動的にFloatingIPが確保されます。
  • インスタンスへFloatingIP割り当て→インスタンス再起動

  • インスタンスのnoVNCコンソールからホスト/ルータ/外部にping確認

    • packstackに含まれるcirrosパスワード:)の入力にはUSキーボードを使用する。
    • 面倒なら別Linuxのイメージを登録してbootしてね(イメージの登録方法は割愛)
  • インスタンスのssh通信確認


インスタンスからルータ/外部/コントローラへの通信の様子

  • インフラ勉強会検証環境ではインスタンス画面を表示する「noVNCコンソール」で使用する6080ポートを共用していたため、「localhost」へSSH転送で画面表示してURLがlocalhostとなっていることをご承知置き下さい。インストール後はcontrollerのIPアドレスとなるので、ドメイン名を使用する場合は要変更。公開するにはHTTPS(証明書)対応も必要です。 ad9d6a917725b758.PNG

memo

  • VNCのアドレスをドメイン表示にしたい場合 (インフラ勉強会検証環境の例)

    /etc/nova/nova.conf

    nova.confの設定を以下に変更

    #novncproxy_base_url=http://10.100.20.1:6080/vnc_auto.html
    novncproxy_base_url=http://vm01.infra-workshop.tech:6080/vnc_auto.html

    restart openstack-nova-compute

(0Δさん情報ありがとうございます!)

ドメイン名を付けるならインストール前に上位(nginx)の設定を予め設定済ませておいた方がよいかも。VLANを使う場合trunkの設定も必要(trunkの設定はどうぞのさんに担当して頂いた)

  • cirrOSログイン時に使うUSキーボード対応の例(詳しくはUSキーボードの配置の画像を検索して下さい)
    • : キーボードの「Shift」+「れ」
    • ) キーボードの「Shift」+「0」
    • @ キーボードの「Shift」+「2」
    • ~キーボードの「Shift」+「全角半角」
    • _キーボードの「Shift」+「-」
  • Horizonの画面(ネタです) どこかがおかしく.png

参考サイト

wiki情報は前提としてインフラ勉強会、及びStudy-Infraチャンネルの皆様の協力によるものです。