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