データベース
 Computer >> コンピューター >  >> プログラミング >> データベース

ソースからOpenStackをインストールする-パート2

このシリーズの最初の記事では、OpenStackをソースからインストールし始めました。 keystoneをインストールし、Servicesプロジェクトや新しいOpenStackインストールの管理者ユーザーなどの基本情報を入力しました。さらに、最初のスクリプトで、Imageサービス(glance)、Networkingサービス(neutron)、Compute service(nova)、Volume service(cinder)の今後のインストール用にユーザーとディレクトリを設定します。それでは、続行して、コントローラーノードにglanceプロセスをインストールして開始しましょう。

最初の記事では、bashrcファイルにいくつかの情報を追加して、残りのセットで使用するシェル変数をいくつか設定しました。これらの変数の少なくとも1つが設定されていることを確認してください。

echo $MY_IP

Imageサービス(glance)のインストールを開始するには、いくつかの追加のglanceサブディレクトリを作成し、それらに適切な権限があることを確認する必要があります(基本的なglanceディレクトリは前の記事のスクリプトによって作成されました):

mkdir -p /var/lib/glance/images
mkdir -p /var/lib/glance/scrubber
mkdir -p /var/lib/glance/image-cache

次に、ダウンロード(リポジトリのクローンを作成)してglanceをインストールします:

git clone https://github.com/openstack/glance.git -b stable/kilo

注:上記のコマンドから-b stable / kiloを削除することで、トランクからのインストールに変更できることに注意してください。

cp -R glance/etc/* /etc/glance/
cd glance
python setup.py install

データベース接続情報、メッセージキュー情報、キーストーン接続情報などの基本情報を設定して、Glanceを構成します。

sed -i "s|#connection = <None>|connection = mysql://glance:glance@$MY_PRIVATE_IP/glance|g" /etc/glance/glance-api.conf
sed -i "s/rabbit_host = localhost/rabbit_host = $MY_PRIVATE_IP/g" /etc/glance/glance-api.conf
sed -i "s/auth_host = 127.0.0.1/auth_host = $MY_PRIVATE_IP/g" /etc/glance/glance-api.conf
sed -i 's/%SERVICE_TENANT_NAME%/service/g' /etc/glance/glance-api.conf
sed -i 's/%SERVICE_USER%/glance/g' /etc/glance/glance-api.conf
sed -i 's/%SERVICE_PASSWORD%/glance/g' /etc/glance/glance-api.conf
sed -i 's/#flavor=/flavor = keystone/g' /etc/glance/glance-api.conf
sed -i 's/#show_image_direct_url = False/show_image_direct_url = True/g' /etc/glance/glance-api.conf

上記と同じ情報を使用してGlance-Registryを構成します。

sed -i "s|#connection = <None>|connection = mysql://glance:glance@$MY_PRIVATE_IP/glance|g" /etc/glance/glance-registry.conf
sed -i "s/auth_host = 127.0.0.1/auth_host = $MY_PRIVATE_IP/g" /etc/glance/glance-registry.conf
sed -i 's/%SERVICE_TENANT_NAME%/service/g' /etc/glance/glance-registry.conf
sed -i 's/%SERVICE_USER%/glance/g' /etc/glance/glance-registry.conf
sed -i 's/%SERVICE_PASSWORD%/glance/g' /etc/glance/glance-registry.conf
sed -i 's/#flavor=/flavor = keystone/g' /etc/glance/glance-registry.conf
sed -i 's|#connection = <None>|connection = mysql://glance:glance@$MY_IP|g' /etc/glance/glance-api.conf
sed -i 's|#connection = <None>|connection = mysql://glance:glance@$MY_IP|g' /etc/glance/glance-registry.conf

glance用のMySQLデータベースを作成し、新しく作成したデータベースにglanceテーブルを入力します。

mysql -u root -pmysql -e 'CREATE DATABASE glance;'
mysql -u root -pmysql -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'glance';"
mysql -u root -pmysql -e "GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';"
glance-manage db_sync

この環境では必要ありませんが、glance-image-syncをインストールし、定期的に実行するように設定します。複数のglanceAPIノードがある場合、ノード間でglance画像が同期されます。

git clone https://github.com/rcbops/glance-image-sync
pushd glance-image-sync
mv glance-image-sync.py /usr/local/bin/glance-image-sync
chmod +x /usr/local/bin/glance-image-sync
popd

cat >> /etc/glance/glance-image-sync << EOF
[DEFAULT]
api_nodes = $MY_IP
rsync_user = glance
lock_file = /var/run/glance-image-sync
EOF

cat >>  /etc/cron.d/glance-image-syn << EOF
*/5 * * * * glance /usr/local/bin/glance-image-sync
EOF

glanceログファイルをローテーションすることを忘れないでください:

cat >> /etc/logrotate.d/glance << EOF
/var/log/glance/*.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        nocreate
}
EOF

ImageサービスのIdentityService署名証明書を取得しない場合、ImageAPIリクエストは失敗します。一目でわかるキーストーン署名証明書を取得して、これを防ぎます:

cp /etc/keystone/ssl/certs/ca.pem /var/lib/glance/cacert.pem
cp /etc/keystone/ssl/certs/signing_cert.pem /var/lib/glance/
chown glance:glance /var/lib/glance/*
chmod 600 /var/lib/glance/cacert.pem
chmod 600 /var/lib/glance/signing_cert.pem

glanceを開始する準備がほぼ整いましたが、最初にglanceupstartスクリプトを作成する必要があります。

注:これらのスクリプトは、Ubuntuオペレーティングシステムのパッケージバージョンのglanceがインストールするスクリプトからコピーされたものです。

cat >> /etc/init/glance-api.conf << EOF
description "Glance API server"
author "Soren Hansen <soren@linux2go.dk>"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec start-stop-daemon --start --chuid glance --exec /usr/local/bin/glance-api -- --config-file=/etc/glance/glance-api.conf --config-file=/etc/glance/glance-api-paste.ini
EOF

cat >> /etc/init/glance-registry.conf << EOF
description "Glance registry server"
author "Soren Hansen <soren@linux2go.dk>"

start on runlevel [2345]
stop on runlevel [!2345]

respawn

exec start-stop-daemon --start --chuid glance --exec /usr/local/bin/glance-registry -- --config-file=/etc/glance/glance-registry.conf --config-file=/etc/glance/glance-registry-paste.ini

EOF

一瞥を開始し、実行されていることを確認します:

start glance
start glance-registry

約15秒待ってから、次のコマンドを実行して、glanceが実行されていることを確認します。

ps aux|grep glance

一瞥すると、実行中のプロセスに関する情報を示す最後のコマンドの行が表示されます。それが発生せず、glanceが起動しない、または実行を継続しない場合は、以下を使用して、トラブルシューティングのためにglanceを手動で開始します。

sudo -u glance glance-api --config-file=/etc/glance/glance-api.conf --config-file=/etc/glance/glance-api-paste.ini > /dev/null 2>&1 &

sudo -u glance glance-registry --config-file=/etc/glance/glance-registry.conf --config-file=/etc/glance/glance-registry-paste.ini > /dev/null 2>&1 &

注: 値の設定debug = True ファイル/etc/glance/glance.conf 失敗のデバッグに役立つように、ログ出力を増やします。

次に、VMのベースとしてOpenStackが完全にインストールされたら、使用するイメージを一目でインストールします。利用可能なUbuntuオペレーティングシステムに基づいた、cirrosという名前の小さなクラウドイメージがあります。 glanceを実行しながら、cirrosイメージをダウンロードし、glanceにロードします。

wget https://cdn.download.cirros-cloud.net/0.3.3/cirros-0.3.3-x86_64-disk.img

glance image-create --name=cirros-qcow2 \
                    --disk-format=qcow2 \
                    --container-format=bare \
                    --is-public=true < cirros-0.3.3-x86_64-disk.img

2番目のプロセスが実行され、ネットワークサービス(neutron)のインストールに注意を向けることができます。これは、コントローラーノード上のneutronサーバーと、ネットワークおよびコンピューティングノード上のneutronエージェントの3つのneutronインストールの最初のものです。

nova、neutron、glanceプロセスは、さまざまなタスクを実行するためにrootまたはsudo権限を必要とするため、これらのプロセスユーザー用に特別なsudo権限を作成する必要があります。 OpenStackは、rootwrap構成を使用して、これらの特権の範囲も制限します。次のスクリプトを実行して、sudo権限を設定します。

for SERVICE in neutron nova cinder
do
echo $SERVICE
cat > '/etc/sudoers.d/'$SERVICE'_sudoers' << EOF
Defaults:$SERVICE !requiretty

$SERVICE ALL = (root) NOPASSWD: /usr/local/bin/$SERVICE-rootwrap  /etc/$SERVICE/rootwrap.conf *
EOF

chmod 440 /etc/sudoers.d/$SERVICE_sudoers
done
chmod 750 /etc/sudoers.d

一部のpip前提条件には、自動的にインストールされないパッケージ前提条件がいくつかあります。これらのパッケージを今すぐインストールしてください:

apt-get -y install git mysql-client python-dev libxml2-dev libffi-dev

中性子応答のクローンを作成します:

git clone https://github.com/openstack/neutron.git -b stable/kilo

提供された構成ファイルをコピーします:

cp neutron/etc/* /etc/neutron/

必要な構成サブディレクトリをいくつかコピーします:

cp -R neutron/etc/neutron/plugins/ml2/* /etc/neutron/plugins/ml2
cp -R neutron/etc/neutron/rootwrap.d/* /etc/neutron/rootwrap.d

次にneutronをインストールします:

cd neutron
python setup.py install
cd ~

neutron用のMySQLデータベースを作成します:

mysql -u root -pmysql -e 'CREATE DATABASE neutron;'
mysql -u root -pmysql -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron';"
mysql -u root -pmysql -e "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'neutron';"

前の記事で実行されたサンプルデータスクリプトは、neutronサービスのデータを挿入しません。 keystoneでNeutronサービスユーザーを作成します:

keystone user-create --tenant service --name neutron --pass neutron

新しく作成されたNeutronサービスユーザーに「管理者」の役割を付与します:

keystone user-role-add --user neutron --tenant service --role admin

そして、ユーザーの作成が機能したことを確認します。サービスのユーザーとロールを一覧表示し、neutronユーザーが存在し、管理者のロールを持っていることを確認します。

keystone user-list --tenant Services
keystone user-role-list --tenant service --user neutron

前の2つのコマンドの出力で、neutronユーザーが作成され、適切な権限を持っていることがわかります。次に、neutronサービスをkeystoneサービスカタログに入力します。

keystone service-create --name=neutron --type=network --description="Neutron Network Service"

中性子エンドポイント情報をキーストーンサービスカタログに配置します:

keystone endpoint-create --region RegionOne --service neutron --publicurl=https://$MY_PUBLIC_IP:9696 --internalurl=https://$MY_PRIVATE_IP:9696 --adminurl=https://$MY_PRIVATE_IP:9696

SERVICE_TENANT_ID=`keystone tenant-get service | awk '/ id / { print $4 }'`

最後に、neutronを構成する必要があります。基本設定ファイルがパッケージクローズプロセスで提供されている場合は、非常に長く編集が難しいため、削除してください。次に、次のシーケンスで、より単純なシーケンスに置き換えます(将来、これを確認する必要がある場合は、元のシーケンスがクローンされたneutronディレクトリに残ります):

rm /etc/neutron/neutron.conf

cat > /etc/neutron/neutron.conf << EOF
[DEFAULT]
verbose = True
debug = True
core_plugin = ml2
service_plugins = router
auth_strategy = keystone
allow_overlapping_ips = True
dhcp_agents_per_network = 1
notify_nova_on_port_status_changes = True
notify_nova_on_port_data_changes = True
nova_url = https://$MY_PRIVATE_IP:8774/v2
nova_admin_username = nova
nova_admin_tenant_id = $SERVICE_TENANT_ID
#nova_admin_tenant_name = service
nova_admin_password = nova
nova_admin_auth_url = https://$MY_PRIVATE_IP:35357/v2.0

[agent]
root_helper=sudo /usr/local/bin/neutron-rootwrap /etc/neutron/rootwrap.conf
[keystone_authtoken]
auth_uri = https://$MY_PRIVATE_IP:35357/v2.0/
identity_uri = https://$MY_PRIVATE_IP:5000
admin_tenant_name = service
admin_user = neutron
admin_password = neutron
[database]
connection = mysql://neutron:neutron@$MY_PRIVATE_IP/neutron

[oslo_concurrency]
lock_path = /var/lock/neutron

[oslo_messaging_rabbit]
rabbit_host = $MY_PRIVATE_IP
EOF

中性子ログファイルを回転させます:

cat >> /etc/logrotate.d/neutron << EOF
/var/log/neutron/*.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        nocreate
}
EOF

Neutronは、ML2プラグインを介して複数のネットワークレイヤー2テクノロジーをサポートします。プロジェクトネットワークの分離にGREトンネルを使用するようにneutronML2プラグインエージェントを設定します。このエージェントはコントローラーノードでは実行されませんが、neutronサーバーはプラグインについて知っている必要があります:

rm /etc/neutron/plugins/ml2/ml2_conf.ini
cat > /etc/neutron/plugins/ml2/ml2_conf.ini  << EOF

[ml2]
type_drivers = gre
tenant_network_types = gre
mechanism_drivers = openvswitch

[ml2_type_gre]
tunnel_id_ranges = 1:1000

[securitygroup]
enable_security_group = True
enable_ipset = True
firewall_driver = neutron.agent.linux.iptables_firewall.OVSHybridIptablesFirewallDriver
EOF

chown neutron:neutron /etc/neutron/*.{conf,json,ini}
chown -R neutron:neutron /etc/neutron/plugins

cat > /etc/default/neutron << EOF
--config-file=/etc/neutron/plugins/ml2/ml2_conf.ini
EOF

一見したように、neutronデータベーステーブルを作成します:

neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head

neutronプロセスを開始する前に、起動スクリプトにいくつかのオプション情報を提供して、ml2構成ファイルを読み取る必要があります。

cat > /etc/default/neutron-server << EOF
NEUTRON_PLUGIN_CONFIG="/etc/neutron/plugins/ml2/ml2_conf.ini"
EOF

そして最後に、neutronサーバープロセスを開始するために使用されるupstartスクリプトを作成します。

cat > /etc/init/neutron-server.conf << EOF
# vim:set ft=upstart ts=2 et:

start on runlevel [2345]
stop on runlevel [!2345]

script
  [ -r /etc/default/neutron-server ] && . /etc/default/neutron-server
  [ -r "\$NEUTRON_PLUGIN_CONFIG" ] && CONF_ARG="--config-file \$NEUTRON_PLUGIN_CONFIG"
  exec start-stop-daemon --start --chuid neutron --exec /usr/local/bin/neutron-server -- \
    --config-file /etc/neutron/neutron.conf \
    --log-file /var/log/neutron/server.log \$CONF_ARG
end script

EOF

neutronサーバーの実行を開始し、実行が継続されることを確認します。 2行目は、実行中のneutronプロセスに関する情報を示しています(2番目のコマンドを実行する前に約15秒待ちます):

start neutron
ps aux|grep neutron

中性子が開始しない場合は、次の行を使用して手動で中性子を開始します。中性子プロセスの開始時にエラーが発生した場合は、問題のデバッグに役立つ出力が提供されます。

sudo -u neutron neutron-server --config-file=/etc/neutron/neutron.conf --config-file=/etc/neutron/plugins/ml2/ml2_conf.ini --log-file /var/log/neutron/server.log

このシリーズの次の記事では、いくつかのnovaプロセスをコントローラーノードにインストールします。


  1. コマンド プロンプトまたは PowerShell からアプリをインストールする方法

    ソフトウェアのインストールは、複雑で反復的で、エラーが発生しやすいプロセスになる可能性があります。使用する前に、まずダウンロードしてインストール プロセスを開始し、インストールされるまで待つ必要があります。これには多くの時間がかかります。コマンド プロンプトからアプリをインストールする方法を学習することで、この時間を節約できます。同時に PowerShell からアプリをインストールすることもできます。 PowerShell とコマンド プロンプトは、Windows 10 または 11 にアプリケーションをシームレスにインストールできます。ただし、アプリのインストールに必要な手順は少し異なり

  2. Windows 11 を最初からインストールする方法 (USB を使用してインストール)

    Microsoft は、世界で最も使用されているコンピューター オペレーティング システムの新しいバージョンである Windows 11 をリリースしました。 Windows 11 オペレーティング システムの最新バージョンには、ゲーム特典、簡素化されたレイアウト、直感的なショートカットなど、多くの新機能が搭載されています。 Windows 11 の最小ハードウェア要件を満たす Windows 10 コンピューターをお持ちの場合は、無料で Windows 11 にアップグレードできます。 Windows 11 をインストールする方法もいくつかあります すでにお伝えしたとおりですが、あなたの場合