OpenStack Ussuri マニュアルインストールその1―環境構築編
セキュリティ
OpenStack の各種サービスにはパスワードを設定する必要がある
本番環境では強固なパスワードを使いましょう
データベース接続には
@
などの特殊文字が使えない可能性があるので注意コマンドで生成するのもありだそうです
openssl rand -hex 10
パスワード一覧
Password name Description Database password MySQL データベースの root パスワード ADMIN_PASS admin
ユーザのパスワードCINDER_DBPASS ブロックストレージサービスのデータベースパスワード CINDER_PASS cinder
ユーザ(ブロックストレージサービスユーザ)のパスワードDASH_DBPASS ダッシュボードのパスワード DEMO_PASS demo
ユーザのパスワードGLANCE_DBPASS イメージサービスのデータベースパスワード GLANCE_PASS glance
ユーザ(イメージサービスユーザ)のパスワードKEYSTONE_DBPASS 認証サービスのデータベースパスワード METADATA_SECRET メタデータプロキシのためのシークレット NEUTRON_DBPASS ネットワークサービスのデータベースパスワード NEUTRON_PASS neutron
ユーザ(ネットワークサービスユーザ)のパスワードNOVA_DBPASS コンピュートサービスのデータベースパスワード NOVA_PASS nova
ユーザ(コンピュートサービスユーザ)のパスワードPLACEMENT_PASS placement
ユーザ(リソース状況管理サービスユーザ)のパスワードRABBIT_PASS RabbitMQ の openstack
ユーザのパスワード- 今後、インストール手順にこれらのパスワードを設定する箇所が大量に出てくる
- インストール手順内でこれらの Password name の変数は正式なパスワードに書き換えてください
ネットワーク
OpenStack Docs: Host networking
インターフェースの設定
Controller Compute
プロバイダネットワークのインターフェースは IP を振らない設定をしておく
管理ネットワークのインターフェースにはそれぞれの
MANAGEMENT_IP
を振るUbuntu 20.04 なので netplan する
/etc/netplan/99-mynetwork.yaml
など作成(既にあるやつを上書きしてもよい)network: ethernets: PROVIDER_INTERFACE: dhcp4: no dhcp6: no MANAGEMENT_INTERFACE: dhcp4: no dhcp6: no addresses: # ex) - 192.168.0.xxx/24 - MANAGEMENT_IP(CIDR) # ex) gateway4: 192.168.0.1 gateway4: MANAGEMENT_GATEWAY_IP nameservers: addresses: # 好きなDNSサーバ - 1.1.1.1 - 8.8.8.8 search: [] version: 2
root user
netplan apply
名前解決の設定
Controller Compute
管理ネットワーク上で各ノードの名前解決ができない場合は
/etc/hosts
を設定する# controller 192.168.0.11 controller # compute1 192.168.0.12 compute1
- コンピュートノードを追加しやすいように
compute1
と番号付けしておく
- コンピュートノードを追加しやすいように
疎通確認
Controller
any user
ping -c 4 docs.openstack.org ping -c 4 compute1
- docs.openstack.org で外部疎通を、compute1 で内部疎通を確認している
Compute
any user
ping -c 4 docs.openstack.org ping -c 4 controller
- docs.openstack.org で外部疎通を、controller で内部疎通を確認している
NTP
OpenStack Docs: Network Time Protocol (NTP)
- ノード間でサービスを適切に同期するためには NTP で時刻同期する必要がある
- Chrony を使う
Chrony インストール
Controller Compute
root user
apt install chrony
/etc/chrony/chrony.conf
編集
Controller
# ... # poolをコメントアウト #pool ntp.ubuntu.com iburst maxsources 4 #pool 0.ubuntu.pool.ntp.org iburst maxsources 1 #pool 1.ubuntu.pool.ntp.org iburst maxsources 1 #pool 2.ubuntu.pool.ntp.org iburst maxsources 2 # NTPサーバを追加(好きなところでいいです) server ntp.nict.jp iburst server ntp1.jst.mfeed.ad.jp iburst server ntp2.jst.mfeed.ad.jp iburst # ... # 時刻同期を許可する範囲を追記 # 管理ネットワークのサブネットに適宜変更する # ex) allow 192.168.0.0/24 allow MANAGEMENT_SUBNET(CIDR)
root user
systemctl restart chrony
Compute
# ... # poolをコメントアウト #pool ntp.ubuntu.com iburst maxsources 4 #pool 0.ubuntu.pool.ntp.org iburst maxsources 1 #pool 1.ubuntu.pool.ntp.org iburst maxsources 1 #pool 2.ubuntu.pool.ntp.org iburst maxsources 2 # controllerノードを同期先に選択 server controller iburst
root user
systemctl restart chrony
Chrony 動作確認
Controller Compute
root user
chronyc sources
- コントローラノードでは外部の NTP サーバとの同期状況が見える
- コンピュートノードではコントローラノードとの同期状況が見える
OpenStack パッケージ
OpenStack Docs: OpenStack packages
Controller Compute
- これを入れると
openstack
コマンドが使えるようになる - Ubuntu 20.04 ではデフォルトで Ussuri をインストールできるので、Ubuntu Cloud Archive のリポジトリを有効にする必要はない
root user
apt update && apt dist-upgrade
apt install python3-openstackclient
SQL データベース
Controller
- OpenStack の各種サービスの情報はコントローラノードの SQL データベースに格納される
MySQL インストール
root user
apt install mariadb-server python3-pymysql
- ドキュメントでは
python-pymysql
と書いてあるがpython3-pymysql
に修正する
MySQL コンフィグ作成
/etc/mysql/mariadb.conf.d/99-openstack.cnf
を作成する[mysqld] # ex) bind-address = 192.168.0.11 bind-address = CONTROLLER_MANAGEMENT_IP default-storage-engine = innodb innodb_file_per_table = on max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8
MySQL 再起動
root user
systemctl restart mysql
データベース保護
root user
mysql_secure_installation
- 対話形式でいろいろ聞かれる
- データベースの root パスワードを適切に設定する Caution
- 他にもいろいろ聞かれるが基本的に Yes でよいと思う
メッセージキュー
Controller
- OpenStack のサービス間操作やステータス情報はコントローラノードのメッセージキューを通して調整される
- メッセージキューとして RabbitMQ や Qpid、ZeroMQ が使えるらしいが RabbitMQ を使う
RabbitMQ インストール
root user
apt install rabbitmq-server
RabbitMQ にopenstack
ユーザを作成する
root user
rabbitmqctl add_user openstack RABBIT_PASS
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
-
Caution
RABBIT_PASS
は適切なパスワードに書き換える set_permissions
では構成、書き込み、読み込みの順に正規表現で権限を付与しているらしい (rabbitmqctl(8) — RabbitMQ)
Memcached
Controller
- Memcached はデータベースの問い合わせ結果を一時的にキャッシュしてくれる高性能な分散メモリキャッシュサーバらしい
- OpenStack では認証トークンをキャッシュしてくれるらしい
- コントローラノードで実行する
Memcached インストール
root user
apt install memcached python3-memcache
- ドキュメントでは
python-memcache
と書いてあるがpython3-memcache
に修正する
/etc/memcached.conf
編集
# ...
# ex) -l 192.168.0.11
-l CONTROLLER_MANAGEMENT_IP
# ...
- Memcached がコントローラノードの管理ネットワークの IP アドレスを使用するように設定
Memcached 再起動
root user
systemctl restart memcached
Etcd
Controller
- Etcd は分散 KVS でクラスタ間のデータを共有する
- コントローラノードで実行する
Etcd インストール
root user
apt install etcd
/etc/default/etcd
編集
ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER="controller=http://CONTROLLER_MANAGEMENT_IP:2380"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://CONTROLLER_MANAGEMENT_IP:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://CONTROLLER_MANAGEMENT_IP:2379"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://CONTROLLER_MANAGEMENT_IP:2379"
CONTROLLER_MANAGEMENT_IP
は適宜書き換える(例では192.168.0.11
に書き換える)- 管理ネットワークを通して他のノードからアクセスできるように設定
Etcd 有効化・再起動
root user
systemctl enable etcd
systemctl restart etcd
おわり
以上で環境構築編終了です
お疲れ様でした
関連記事一覧
- OpenStack Ussuriをマニュアルインストールしてみたメモ
- OpenStack Ussuriマニュアルインストールその1―環境構築編(当記事)
- OpenStack Ussuriマニュアルインストールその2―Keystone編
- OpenStack Ussuriマニュアルインストールその3―Glance編
- OpenStack Ussuriマニュアルインストールその4―Placement編
- OpenStack Ussuriマニュアルインストールその5―Nova編
- OpenStack Ussuriマニュアルインストールその6―Neutron編
- OpenStack Ussuriマニュアルインストールその7―Horizon編
- OpenStack Ussuriマニュアルインストールその8―Cinder編
- OpenStack Ussuriマニュアルインストールその9―起動編
- OpenStack Ussuri 追加インストールその1―Octavia編
- OpenStack Victoriaをマニュアルインストールしてみたメモ
- OpenStack Tips
- Issues