fbpx

Windows 10 の Hyper-V で Apache CloudStack 検証環境を構築する:第2回 #HyperV #Apache #CloudStack

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

第1回 では、Apache CloudStack(以後、ACS)検証環境の土台となる Hyper-V リソースの作成を行いました。

今回は、Hyper-V VM の CentOS にログインし、ネットワークの設定や ACS に必要なソフトウェアのインストールとその設定を行います。

※本稿のシステム構成はこちらを前提としています。本稿を参考に構築される場合は、IP アドレスなどをそれぞれの環境の値に置き換えてください。

VM1(ACS マネージメントサーバー)のセットアップ

VM1 の CentOS に root でログインして、以下の作業を行います。

ネットワークの設定

外部ネットワーク (eth0) を設定します。

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
IPADDR=192.168.24.111
NETMASK=255.255.255.0
GATEWAY=192.168.24.1
DNS1=192.168.24.1

内部ネットワーク (eth1) を設定します。

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1 

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
IPADDR=172.16.24.111
NETMASK=255.255.255.0

ホスト名から名前解決できるようにします。以下のように、内部ネットワークの IP アドレスにホスト名を割り当てます。VM1 は acsms, VM2 は kvm01 にします。設定後、ネットワークを再起動します。

[root@localhost ~]# vi /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.24.111 acsms
172.16.24.121 kvm01

[root@localhost ~]# service network restart

一度ログアウトし、再度 root でログインします。ホスト名が変更されていることを確認します。

[root@acsms ~]# hostname --fqdn
acsms

SELinux の設定

SELinux を permissive にします。

[root@acsms ~]# vi /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive 
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

[root@acsms ~]# setenforce 0

NTP のインストール

各サーバーで時刻を合わせるために、NTP をインストールし、起動します。

[root@acsms ~]# yum -y install ntp 
[root@acsms ~]# chkconfig ntpd on
[root@acsms ~]# service ntpd start

bind のインストールと設定

ACS のシステム VM から、内部ネットワーク経由で名前解決をできるようにするため、bind をインストールします。/etc/named.conf を編集し、liste-on port と allow-query パラメーターを設定します。

[root@acsms ~]# yum -y install bind 
[root@acsms ~]# vi /etc/named.conf
...
options {
 listen-on port 53 { 127.0.0.1; 172.16.24.111; };
 listen-on-v6 port 53 { ::1; };
 directory "/var/named";
 dump-file "/var/named/data/cache_dump.db";
 statistics-file "/var/named/data/named_stats.txt";
 memstatistics-file "/var/named/data/named_mem_stats.txt";
 allow-query { localhost; 172.16.24.0/24; };
 recursion yes;
...
[root@acsms ~]# chkconfig named on
[root@acsms ~]# service named status

NFS のインストールと設定

追加 ディスクのパーティションを作成し、ext4 でフォーマットします。フォーマット完了後、/export ディレクトリを作成し、ここに /dev/sdb1 をマウントします。

[root@acsms ~]# fdisk /dev/sdb 
コマンド (m でヘルプ): n
コマンドアクション
 e 拡張
 p 基本パーティション (1-4)
p
パーティション番号 (1-4): 1
最初 シリンダ (1-133674, default 1): 
Using default value 1
Last シリンダ, +シリンダ数 or +size{K,M,G} (1-133674, default 133674): 
Using default value 133674

コマンド (m でヘルプ): w
パーティションテーブルは変更されました!

[root@acsms ~]# mkfs.ext4 /dev/sdb1
[root@acsms ~]# mkdir /export 
[root@acsms ~]# mount /dev/sdb1 /export

/etc/fstab の最下行に、/export のマウント設定を追加します。

[root@acsms ~]# vi /etc/fstab

/dev/sdb1 /export ext4 defaults 1 2

CloudStack の primary と secondary ストレージ用に NFS をインストールします。

[root@acsms ~]# yum -y install nfs-utils

共有するディレクトリを作成し、NFS の設定をします。

[root@acsms ~]# mkdir /export/primary 
[root@acsms ~]# mkdir /export/secondary
[root@acsms ~]# vi /etc/exports 

/export/secondary *(rw,async,no_root_squash,no_subtree_check)
/export/primary *(rw,async,no_root_squash,no_subtree_check)

NFS で使用するポートの設定を行います。ファイルの最下行に、以下の設定を追加します。

[root@acsms ~]# vi /etc/sysconfig/nfs 
...
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

iptables の設定を行います。

[root@acsms ~]# vi /etc/sysconfig/iptables 

# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p udp --dport 111 -j ACCEPT 
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p udp --dport 662 -j ACCEPT
-A INPUT -s 172.16.24.0/24 -m state --state NEW -p udp --dport 53 -j ACCEPT
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

最後に、iptables を再起動し、NFS を起動します。

[root@acsms ~]# service iptables restart
[root@acsms ~]# chkconfig rpcbind on 
[root@acsms ~]# chkconfig nfs on
[root@acsms ~]# service rpcbind start
[root@acsms ~]# service nfs start

MySQL のインストールと設定

ACS マネージメントサーバーで使用するデータベースをインストールします。

[root@acsms ~]# yum -y install mysql-server

設定を行います。[mysqld] セクションに、以下を追加します。

[root@acsms ~]# vi /etc/my.cnf

innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'

サービスを起動します。

[root@acsms ~]# chkconfig mysqld on
[root@acsms ~]# service mysqld start

ACS マネージメントサーバーのインストールと設定

ACS マネージメントサーバーをインストールするためのリポジトリを追加し、インストールを行います。

[root@acsms ~]# vi /etc/yum.repos.d/cloudstack.repo

[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/centos/6/4.9/
enabled=1
gpgcheck=0

また、依存するパッケージ mysql-connector-python をインストールするためのリポジトリの追加と、インストールに必要な公開鍵をダウンロードします。

[root@acsms ~]# vi /etc/yum.repos.d/mysql.repo

[mysql-community]
name=MySQL Community connectors
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/$releasever/$basearch/
enabled=1
gpgcheck=1

[root@acsms ~]# rpm --import http://repo.mysql.com/RPM-GPG-KEY-mysql

ACS マネージメントサーバーをインストールし、初期設定を行います。

[root@acsms ~]# yum -y install cloudstack-management
[root@acsms ~]# cloudstack-setup-databases cloud:password@localhost --deploy-as=root
[root@acsms ~]# cloudstack-setup-management

システムテンプレートのダウンロード

ACS のシステム VM を作成時に使用するテンプレートをダウンロードし、NFS の  /secondary に配置します。

[root@acsms ~]# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
> -m /export/secondary \
> -u http://cloudstack.apt-get.eu/systemvm/4.6/systemvm64template-4.6.0-kvm.qcow2.bz2 \
> -h kvm -F

web 管理画面の表示確認

web ブラウザーで、http://192.168.24.111:8080/client を開きます。以下のログイン画面が表示されれば OK です。今は表示できることを確認しただけなので、まだログインする必要はありません。

これで、VM1 のセットアップは完了です。

VM2(KVM ホスト)のセットアップ

VM2 の CentOS に root でログインして、以下の作業を行います。

ネットワークの設定

外部ネットワーク (eth0) を設定します。また、ifcfg-cloudbr0 というブリッジインターフェースも作成します。

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0 

DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=cloudbr0

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-cloudbr0

DEVICE=cloudbr0
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
IPADDR=192.168.24.121
NETMASK=255.255.255.0
GATEWAY=192.168.24.1
DNS1=192.168.24.1

内部ネットワーク (eth1) を設定します。また、ifcfg-cloudbr1 というブリッジインターフェースも作成します。

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1 

DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BRIDGE=cloudbr1

[root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-cloudbr1

DEVICE=cloudbr1
TYPE=Bridge
ONBOOT=yes
NM_CONTROLLED=no
IPADDR=172.16.24.121
NETMASK=255.255.255.0

ホスト名から名前解決できるようにします。以下のように、内部ネットワークの IP アドレスにホスト名を割り当てます。VM1 は acsms, VM2 は kvm01 にします。設定後、ネットワークを再起動します。

[root@localhost ~]# vi /etc/hosts

127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.24.111 acsms
172.16.24.121 kvm01

[root@localhost ~]# service network restart

一度ログアウトして、再度 root でログインします。ホスト名が変更されていることを確認します。

[root@kvm01 ~]# hostname --fqdn 
kvm01

SELinux の設定

SELinux を permissive にします。

[root@kvm01 ~]# vi /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive 
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

[root@kvm01 ~]# setenforce 0

NTP のインストール

各サーバーで時刻を合わせるために、NTP をインストールし、起動します。

[root@kvm01 ~]# yum -y install ntp 
[root@kvm01 ~]# chkconfig ntpd on
[root@kvm01 ~]# service ntpd start

CloudStack Agent のインストール

CloudStack Agent をインストールするためのリポジトリを追加し、インストールを行います。

[root@kvm01 ~]# vi /etc/yum.repos.d/cloudstack.repo

[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/centos/6/4.9/
enabled=1
gpgcheck=0

[root@kvm01 ~]# yum -y install cloudstack-agent

KVM の設定

qemu.conf を開き、vnc_listen のコメントを外します。

[root@kvm01 ~]# vi /etc/libvirt/qemu.conf
...
# VNC is configured to listen on 127.0.0.1 by default.
# To make it listen on all public interfaces, uncomment
# this next option.
#
# NB, strong recommendation to enable TLS + x509 certificate
# verification when allowing public access
#
vnc_listen = "0.0.0.0"
...

libvirtd.conf を開き、以下を最下行に追加します。

[root@kvm01 ~]# vi /etc/libvirt/libvirtd.conf
...
listen_tls = 0
listen_tcp = 1
tcp_port = "16059"
auth_tcp = "none"
mdns_adv = 0

/etc/sysconfig/libvirtd を開き、LIBVIRTD_ARGS のコメントを外します。

[root@kvm01 ~]# vi /etc/sysconfig/libvirtd
...
# Listen for TCP/IP connections
# NB. must setup TLS/SSL keys prior to using this
LIBVIRTD_ARGS="--listen"
...

libvirtd を再起動します。

[root@kvm01 ~]# service libvirtd restart

これで VM2 のセットアップは完了です。

まとめ

今回は、各 VM の CentOS にソフトウェアのインストールを行いました。Hyper-V VM であることは特に意識せずにインストールできたと思います。
特に VM2 の CloudStack Agent は、インストール時に KVM の構築も行われますが、Hyper-V の Nested Virtualization が有効になっているため、問題なく完了できるはずです。KVM が問題なく動作していることを確認するには、以下のコマンドを実行します。

[root@kvm01 ~]# lsmod | grep kvm
kvm_intel 55432 0 
kvm 346318 1 kvm_intel

次回は、ACS の web 管理ページにログインして、ゾーンの作成やネットワークの設定、KVM ホストの登録などを行っていきます。

参考文献

Quick Installation Guide for CentOS 6
http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/4.9/qig.html

新規CTA