在VirtualBox中创建CentOS并构建OpenStack(环境部分)
OpenStack 是什么?
・OpenStack项目是一个开源的云计算平台,支持各种类型的云环境。它的目标是实现简单的实施、大规模的可扩展性和丰富的功能。来自世界各地的云计算技术人员都在为该项目做出贡献。
・OpenStack通过组合各种互补服务提供基础设施即服务(IaaS)解决方案。每个服务都提供应用程序编程接口(API),以便可以轻松地进行协作。
・至少需要两个节点(主机),即控制节点和计算节点。
・每个节点至少需要两个网络接口。引用自官方来源
構築方法としては一から手動で入れていく方法と、PackStackという一括でバッとやってくれる方法があります。
この記事では一から手動で入れていく方法を書いていきます。
PackStackについては以下あたりを参考に
https://www.rdoproject.org/install/quickstart/
http://blog.bit-isle.jp/bird/2014/11/527
基本的に公式のインストールガイドに沿ってやっていきます。
単純化のために、hogehoge_PASSみたいなのは統一(root++)
ずっとrootで操作していたので、root権限がいらないコマンドも# hogehogeと書いています。
虛擬機環境
-
- Windows7(ホストOS)で動作させているVirtualBox上に立ち上げました。
http://docs.openstack.org/liberty/ja/install-guide-rdo/environment-networking.html の図を見ながらだとイメージつきやすいです。
図の左2つのノード(ゲストOS)を立ち上げる感じ。
网络
公共的 de)
-
- 外と直接繋がるネットワーク
-
- IP: 192.168.12.0/24
- ゲートウェイ: 192.168.12.1
管理
-
- VirtualBoxのNAT経由で外と繋がるネットワーク
-
- IP: 10.0.3.0/24
- ゲートウェイ: 10.0.3.1
节点(客户操作系统,虚拟机)
- ノードのネットワーク設定は、CentOSのインストール時に設定してしまってもいいし、/etc/sysconfig/networkscriptsで後で書いてもいい。
共通
-
- user/pass = root/root++
-
- OS: CentOS7
Memory: 8GB
Storage: 10GB
ネットワークインタフェースは2つ。設定は以下:
ブリッジアダプター
ホストOSのインタフェースと繋げて通信する。
NATネットワーク
ゲストOS同士の通信を可能にしつつ、VirtualBoxのNATを利用して外と通信する
VirtualBoxの環境設定->ネットワークでNATネットワークを作成し、上記の設定にした。
控制节点
-
- OpenStackの脳ミソ的な役割をするノード。
-
- PublicNetwork:
インタフェース: enp0s3
IP: 192.168.12.11
NetMask: 255.255.255.0
ゲートウェイ: 192.168.12.1
ネームサーバ: 8.8.8.8
ManagementNetwork:
インタフェース: enp0s8
IP: 10.0.3.11
NetMask: 255.255.255.0
ゲートウェイ: 10.0.3.1
hostname: controller.localdomain
计算节点
-
- OpenStack内のインスタンスを動作させるノード。
-
- PublicNetwork:
インタフェース: enp0s3
IP: 192.168.12.12
NetMask: 255.255.255.0
ゲートウェイ: 192.168.12.1
ネームサーバ: 8.8.8.8
ManagementNetwork:
インタフェース: enp0s8
IP: 10.0.3.12
NetMask: 255.255.255.0
ゲートウェイ: 10.0.3.1
hostname: compute.localdomain
安装后的处理
网络周围
/etc/sysconfig/network-script/ifcfg-xxxを編集
BOOTPROT=none
ONBOOT=yes
IPとかの指定が出来てなればそれも行う。
ネットワーク再起動
systemctl restart network
初回だけOSごと再起動したかも
ip addr show
IPとか確認
ping google.com
とかして外と繋がってるか+名前解決できてるか確認
周围的美味
-
- yum update
yum install net-tools
お好みで。慣れ親しんだコマンドが使えるようになるやつ。
主持人周围
-
- ホスト名の変更
$ hostname で確認できる
# vi /etc/sysconfig/networkを書き換えて再起動で変更できる
インストール時に名前を設定していたら今回は不要
ホスト入力
# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.12.11 controller controller.localdomain
192.168.12.12 compute compute.localdomain
ping compute でつながればOK
服务周围
NetworkManagerを停止
# systemctl stop NetworkManager
# systemctl disable NetworkManager
SELinuxを設定
# setenforce 0
# getenforce
permissiveであることを確認
# vi /etc/selinux/config で
SELINUX=permissive
开放堆栈
- ここから環境に従って、OpenStackに必要なサービスを入れていきます。
网络时间协议(NTP)
为了在节点之间正确同步服务,应安装实现NTP的Chrony。建议将控制节点配置为参考尽可能准确(较小的层级值)的服务器,并将其他节点配置为参考控制节点。
@控制节点
-
- # yum install chrony
# vi /etc/chrony.conf
server ntp.nict.jp iburst を追加
allow 10.0.3.0/24
# systemctl enable chronyd
OS起動時に起動するようにして
# systemctl start chronyd
サービス起動
计算节点
-
- # yum install chrony
# vi /etc/chrony.conf
server controller iburst
を追加し,残りのserver項目はすべてコメントアウト
allow 10.0.3.0/24
# systemctl enable chronyd
# systemctl start chronyd
验证
# chronyc sources
controllerなら,参照しているNTPサーバのアドレス
他のノードならcontrollerが表示される
打开堆栈软件包
-
- 全てのノードで行う
# yum install centos-release-openstack-liberty
インスコ
# yum upgrade
パッケージをアップグレード
# yum install python-openstackclient
Openstackクライアントのインスコ
# yum install openstack-selinux
openstack用selinuxのインスコ
這個需求可以用SQL來實現。
大多数的OpenStack服务使用SQL数据库来存储信息。数据库通常在控制节点上运行。根据本指南的步骤,具体使用MariaDB或MySQL取决于所选择的发行版。OpenStack的服务还支持其他SQL数据库,如PostgreSQL。
-
- コントローラノードにて行う
# yum install mariadb mariadb-server MySQL-python
インスコ
# vi /etc/my.cnf.d/mariadb_openstack.cnf
作成して以下を記入
[mysqld]
# 管理ネットワーク経由で他のノードによりアクセスできるようにする
bind-address = 10.0.3.11
# 有用なオプションとUTF-8文字セットを有効にする
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
-
- # systemctl enable mariadb
# systemctl start mariadb 起動設定
# /usr/bin/mysql_secure_installation
mysqlの設定を行う。
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): //enter
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] Y // rootパスワードの設定
New password: // root++
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] Y // アノニマスユーザの削除
... Success!
Normally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] Y // rootユーザのリモートログインの禁止
... Success!
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] Y // テストDBの削除
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] Y // 権限の変更を再読み込みする
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
# mysql -u root -p
root++を入力して操作ができることを確認
非关系型数据库
遥测服务使用NoSQL数据库来存储信息。该数据库通常在控制节点上运行。在本指南的步骤中,我们使用MongoDB。
-
- コントローラノードで行う
# yum install mongodb-server mongodb
インスコ
# vi /etc/mongod.conf 以下の設定を記述
bind_ip = 10.0.3.11
コントローラノードのIPアドレスに変更
smallfiles = true
コメントアウトを解除 ジャーナルファイルのサイズを減らす
起動処理 (mongodをenableにしてstart)
消息队列
将客户的请求传递给适当的工作人员。任务完成后,将输出返回给客户端。
OpenStack使用消息队列来在服务之间进行操作和状态交换。消息队列服务通常在控制节点上运行。OpenStack支持RabbitMQ、Qpid、ZeroMQ等消息队列服务。然而,大多数提供OpenStack软件包的发行版只支持特定的消息队列服务。在本指南中,我们将介绍大多数发行版支持的RabbitMQ消息队列服务。如果你想要安装其他的消息队列服务,请参考相关文档。
-
- コントローラノードで行う
-
- # yum install rabbitmq-server
-
- 起動処理 (rabbitmq-serverをenableにしてstart)
# rabbitmqctl add_user openstack RABBIT_PASS
openstackユーザとパスワードを追加
RABBIT_PASSにはroot++を入力
# rabbitmqctl set_permissions openstack “.*” “.*” “.*”
openstack ユーザーに対して、設定、書き込み、読み出しアクセスを許可する。