天天看點

CentOS7下搭建CloudStack4.10.0雲平台

一篇學習性質的文章,關于CloudStack怎麼實作這些功能一概不了解。隻是跟着他人部落格學着搭建一下。如有侵權,立删。 建議(使用4.11.0 更好,4.10.0 添加主機經常失敗,不知是不是個人問題)

http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/4.9/qig.html#environment

https://www.cnblogs.com/sss4/p/10619350.html

https://blog.csdn.net/albenxie/article/details/80973674

https://www.cnblogs.com/wangmuchen/p/11215304.html

https://cloud.tencent.com/developer/article/1411396

https://wenku.baidu.com/view/94b9e377a31614791711cc7931b765ce05087abc.html

一、準備工作

1. 安裝CentOS系統

使用VMwareWorkststions設定兩個CentOS7的虛拟機。CentOS7鏡像下載下傳位址CentOS-7-x86_64-DVD-1908.iso

一台作為管理節點 manager 用于管理雲平台。建議配置設定

  • 20G硬碟
  • 3G 記憶體(2G也可)
  • 2個處理器 開啟虛拟化Intel VT
  • 橋接模式(使用比較友善,與所在主機使用用一個網段,可能引發IP沖突問題,但是一般自己做些小實驗應該沒問題)

另一台作為受控節點 agent 存放鏡像虛拟機等。

  • 20G硬碟
  • 4G 記憶體(3G也可) 受控節點才是為使用者提供虛拟計算服務的
  • 2個處理器 開啟虛拟化Intel VT
  • 橋接模式
CentOS7下搭建CloudStack4.10.0雲平台

安裝過程就略過了。基本上設定一下root密碼,選擇一下自動配置設定空間即可。注,在圖形界面中最好也将網絡連接配接,預設是未連接配接的。

CentOS7下搭建CloudStack4.10.0雲平台

可以再打開的界面中設定主機名 管理節點可設定為 manager 受控節點可設定為agent

CentOS7下搭建CloudStack4.10.0雲平台

2 設定靜态IP 設定主機名和DNS服務。

如果圖形界面時未開啟網絡。搜尋一下如何解決吧

dhclient

ip addr 	# 檢視網絡
dhclient 網卡
           
1,設定靜态IP

設定靜态IP不是必要的。但是我之前用的虛拟機重新開機後IP總是變動。是以就設定一下了。。。

檢視網絡設定檔案夾

ls /etc/sysconfig/network-scripts
           

可以檢視到ip位址和網卡名(我的是)。然後編輯網卡的配置檔案

CentOS7下搭建CloudStack4.10.0雲平台
vi ifcfg-網卡名
           

注,BOOTPROTO設定為靜态

IPADDR表示要設定的本機IP位址,

NETMASK 子網路遮罩

GATEWAY 網關

如manager 節點修改為

BOOTPROTO=static
IPADDR=192.168.199.101
NETMASK=255.255.255.0
GATEWAY=192.168.199.1
ONBOOT=yes
           

agent節點IPADDR修改為192.168.199.102

設定完成儲存退出,重新開機網卡

systemctl restart network
           
CentOS7下搭建CloudStack4.10.0雲平台
2,修改主機名。

檢視主機名

hostname --fqdn
           

修改主機名

将管理節點主機設為manager受控節點設定為agent即可

vi /ets/hostname
           

在打開的檔案中輸入自己的主機名即可。

3,将管理節點和受控節點的IP位址和主機名添加進/etc/hosts
vi /etc/hosts
           
192.168.199.101	manager
192.168.199.102	agent
           
CentOS7下搭建CloudStack4.10.0雲平台

設定DNS服務。好像沒什麼太大必要。使用該DNS伺服器解析不在/etc/hosts中的主機名。

編輯 /etc/resolv.conf檔案設定為

nameserver 8.8.8.8
nameserver 8.8.4.4
           

測試聯通

agent主機測試聯通manager

ping manager
           

manager主機測試聯通agent

ping agent
           

測試聯通外網 www.baidu.com # 這裡是要設定/etc/resolv.conf才能ping通,或者将百度的ip 域名寫入 /etc/hosts檔案

二、開始進行安裝。

操作過多 就不放截圖了。。。 不加注明 表示manager和agent都需要進行改操作

1, 設定SELINUX

伺服器上的SELinux會攔截CloudStack的一些指令,導緻CloudStack操作失敗,是以啟動CloudStack前需要對SELinux進行設定。

setenforce 0
vi /etc/selinux/config
           

修改

SELINUX=permissive

以上修改需重新開機伺服器才能生效,為使設定立即生效可使用下邊的指令

setenforce permissive
           
2,關閉防火牆,簡單粗暴

關閉防火牆并設定開機不會自動啟動

systemctl stop firewalld.service
systemctl disable firewalld.service
           
3,安裝epel yum源 并進行源配置
yum -y install epel*
           

安裝wget

yum -y install wget
           

備份源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
           

安裝阿裡源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
           

然後我們建立cloudstack.repo檔案并編輯

vi /etc/yum.repos.d/cloudstack.repo
           

添加一下内容 實驗使用的是CentOS7系統CloudStack版本是4.10,是以baseurl這裡是http://cloudstack.apt-get.eu/centos7/4.10/ CentOS版本和CloudStack版本不同可自行更改

網絡源

[cloudstack]

name=cloudstack

baseurl=http://cloudstack.apt-get.eu/centos7/4.10/

enabled=1

gpgcheck=0
           

配置完成可以安裝一個vim測試一下

yum -y install vim
           
4,安裝ntp服務 保證主從時間同步。

(使用VMware測試時 最好不要安裝好後克隆。)ntpd 十分重要。。。如果未安裝或者服務未啟動。。。有可能添加主機時産生意想不到的錯誤。。。

yum -y install ntp
           

啟動服務并設定開機自啟

systemctl start ntpd.service
systemctl enable ntpd.service
           

這裡有可能開機自啟會和一個名為chronyd 的服務自啟動沖突,可以選擇關閉chronyd 的開機自啟

systemctl disable chronyd.service
           
5,安裝nfs服務。 并挂載nfs

CloudStack使用了兩種網絡存儲。一種是主存儲,主存儲用于存放虛拟機硬碟檔案。主存儲也可使用本地存儲,并非必需使用網絡存儲。二級存儲用于存放虛拟機模闆/快照/ISO檔案,二級存儲隻能使用網絡存儲。

Primary storage:一級存儲與 cluster 關聯,它為該 cluster 中的主機的全部虛拟機提供磁盤卷。一個 cluster 至少有一個一級存儲,且在部署時位置要臨近主機以提供高性能。

Secondary storage:二級存儲與 zone 關聯,它存儲模闆檔案,ISO 鏡像和磁盤卷快照。

網絡檔案系統能使使用者通路網絡上别處的檔案就像在使用自己的計算機一樣。

這裡manager和agent稍有不同。。。分開來寫

配置NFS提供兩個不同的挂載點。通過編輯/etc/exports檔案即可簡單實作。兩個挂載點分别在manager節點和agent節點,agent節點上是主存儲,manager節點上是二級存儲。

(1)manager

安裝 nfs 服務

yum -y install nfs-utils
           

挂載一個新硬碟到 /export/secondary目錄

建立 /export/secondary目錄

mkdir -p /export/secondary
           

manager的 /export/secondary作為二級存儲,用于存儲模闆檔案,ISO 鏡像和磁盤卷快照。

向manager主機添加一塊硬碟然後挂載到/export/secondary作為二級存儲

  • 檢視未加硬碟時狀态
df -h
fdisk -l
           

df -h 檢視空間使用情況

fdisk -l 檢視硬碟配置設定情況

CentOS7下搭建CloudStack4.10.0雲平台

添加新硬碟。最好在關機情況下添加然後重新開機manager虛拟機

CentOS7下搭建CloudStack4.10.0雲平台

再次檢視硬碟情況。發現多了一個 /dev/sdb 的硬碟。

CentOS7下搭建CloudStack4.10.0雲平台

格式化硬碟 執行過程輸入y

mkfs.ext4 /dev/sdb
           

然後将這塊硬碟挂載到 /export/secondary

注,給自己解釋一下指令是什麼意思

第一行表示将 /dev/sdb /export/secondary ext4 defaults 0 0這一句話添加到/etc/fstab 檔案中

第二行表示 挂載 fstab 中的所有檔案系統

echo "/dev/sdb  /export/secondary  ext4 defaults 0 0"  >> /etc/fstab
mount -a
           

檢視完成後狀态

CentOS7下搭建CloudStack4.10.0雲平台

挂載完成後 開始nfs的相關内容

編輯/etc/exports檔案

vim /etc/exports
           

添加下面内容

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

重新加載exports檔案

exportfs -a
           

打開NFS配置檔案

vim /etc/sysconfig/nfs
           

使以下配置生效 注: RQUOTAD_PORT=875需自己加入

LOCKD_TCPPORT=32803

LOCKD_UDPPORT=32769

MOUNTD_PORT=892

RQUOTAD_PORT=875

STATD_PORT=662

STATD_OUTGOING_PORT=2020
           

如果防火牆未關閉。 此時還是關閉了吧,CentOS7使用iptables配置防火牆政策的話要停掉firewalld,a安裝iptables 在配置。。。這個

如果防火牆已經關掉了 再修改重新開機iptables服務了。

vim /etc/sysconfig/iptables
           

添加以下内容

-A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 662 -j ACCEPT
           

重新開機iptables服務 現在應該是 firewalld

service iptables restart
           

開啟nfs服務并設定 開機自啟動

systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs
           

(2)agent

與manager操作類似 ,但是挂載的是主存儲點。

安裝 nfs 服務

yum -y install nfs-utils
           

為agent 節點也添加一塊硬碟。

建立 /export/primary目錄

mkdir -p /export/primary
           

格式化硬碟

fdisk -l
mkfs.ext4 /dev/sdb
           

挂載

echo "/dev/sdb  /export/primary  ext4 defaults 0 0"  >> /etc/fstab
mount -a
           

編輯/etc/exports檔案

vim /etc/exports
           

添加下面内容

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

重新加載exportfs檔案

exportfs -a
           

打開NFS配置檔案

vim /etc/sysconfig/nfs
           

使以下配置生效

LOCKD_TCPPORT=32803

LOCKD_UDPPORT=32769

MOUNTD_PORT=892

RQUOTAD_PORT=875

STATD_PORT=662

STATD_OUTGOING_PORT=2020
           

啟動nfs服務并設定開機自啟

systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs
           

(3)測試 和挂載

manager 檢視是否可通路agent

showmount -e agent
           

agent 檢視是否可通路 manager

showmount -e manager
           
CentOS7下搭建CloudStack4.10.0雲平台

agent 節點 挂載二級存儲到 /opt 目錄

mount -t nfs manager:/export/secondary /opt
           
CentOS7下搭建CloudStack4.10.0雲平台

6,CloudStack管理節點manager搭建

在manager節點上操作,安裝管理節點。

1,安裝資料庫 并進行相應設定

安裝 資料庫mariadb因為沒有mysql的版權 無法直接安裝mysql要下載下傳相應的mysql rpm包才能安裝。。mariadb和mysql效果一樣。

yum install mariadb-server mariadb
           

設定開機啟動

systemctl enable mariadb
           

設定資料庫配置 /etc/my.cnf檔案

vim /etc/my.cnf
           

使以下内容生效 要放在[mysqld] 子產品下

max_connections 最大連接配接數 據說設為 受控節點數量*350

innodb_rollback_on_timeout=1

innodb_lock_wait_timeout=600

max_connections=350

log-bin=mysql-bin

binlog-format = 'ROW'
           

啟動伺服器

systemctl start mariadb
           

設定mysql密碼删除空使用者 我設定的是123456

mysqladmin -uroot password 123456
mysql -uroot -p123456
           

删除空使用者

delete from mysql.user where user='';
           

給 root使用者授權 可以遠端通路資料庫

mysql -uroot -p123456 -e "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123456'";
           

2, 安裝Management

安裝。管理之前已經設定過CloudStack的網絡源,會安裝網絡源指定的版本。 不成功就再次安裝一次。

如果速度太慢可以下載下傳到到本地安裝

yum -y localinstall

yum -y install cloudstack-management cloudstack-common
           

安裝過程可能有警告

下載下傳一個vhd-util http://download.cloudstack.org/tools/vhd-util 然後放到/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/目錄

3,Cloudstack資料庫初始化

cloudstack-setup-databases cloud:[email protected] --deploy-as=root:123456
           
CentOS7下搭建CloudStack4.10.0雲平台

4,啟動Management服務

如果servlet容器是Tomcat7,則必須使用參數–tomcat7。

cloudstack-setup-management --tomcat7
           

這個看安裝的CloudStack是怎麼樣的

檢視cloudstack-management 運作狀态

systemctl status cloudstack-management
           

這時候就可以從浏覽器輸入http://managerIP:8080/client/檢視web控制台了 我的是 http://192.168.199.101:8080/client/

CentOS7下搭建CloudStack4.10.0雲平台

預設使用者名是 admin 密碼是 password 不過此時模闆鏡像管理之類的都沒裝,是以不能進行什麼操作。

5,安裝KVM模闆

CloudStack通過一系列系統虛拟機提供功能,如通路虛拟機控制台,如提供各類網絡服務,以及管理輔助存儲的中的各類資源。

該步驟會擷取系統虛拟機模闆,用于雲平台引導後系統虛拟機的部署。

然後需要下載下傳系統虛拟機模闆,并把這些模闆部署于剛才建立的輔助存儲中;管理伺服器包含一個腳本可以正确的操作這些系統虛拟機模闆:

選擇和CloudStack 版本相同的模闆進行安裝。

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /export/secondary \
-u http://cloudstack.apt-get.eu/systemvm/4.10/systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2 \
-h kvm -F
           

或者可以先将,模闆檔案下載下傳到本地,然後再使用腳本檔案進行操作。

cd /root/
wget http://cloudstack.apt-get.eu/systemvm/4.10/systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2
           

下載下傳完成後cloudstack自帶的一個腳本來導入模闆執行以下指令

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -f /root/systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2 -h kvm –F
           

安裝完成後應該不用重新開機 cloudstack-management 服務的。重新開機一下也沒關系. 重新啟動應該比較慢

systemctl restart cloudstack-management
           

7,CloudStack受控節點agent搭建

1,安裝Agent

yum -y install cloudstack-agent cloudstack-common
           

2,虛拟化配置

CloudStack也是通過libverd來管理所有的kvm

我們有兩部分需要進行配置, libvirt和QEMU

注意檔案名稱 不要改錯了

1) 編輯QEMU VNC配置檔案/etc/libvirt/qemu.conf

vim /etc/libvirt/qemu.conf
           

去掉注釋

vnc_listen="0.0.0.0"
           

2)CloudStack使用libvirt管理虛拟機

/etc/libvirt/libvirtd.conf檔案中進行配置

vim /etc/libvirt/libvirtd.conf
           
listen_tls = 0
listen_tcp = 1
tcp_port = "16059"
auth_tcp = "none"
mdns_adv = 0
           

配置/etc/sysconfig/libvirtd檔案

當管理節點添加此主機時,這個tcp_port = “16059"會自動變成16509,還有 LIBVIRTD_ARGS=”-1",這些都是cloudstack改變的。無須再手動改它!!

vim /etc/sysconfig/libvirtd
           
LIBVIRTD_ARGS="--listen"
           

3)重新開機libvirtd 并設定為開機自啟

systemctl restart libvirtd
systemctl enable libvirtd
           

4)檢查

lsmod | grep kvm
           
CentOS7下搭建CloudStack4.10.0雲平台

如果沒有結果執行

modprobe kvm
modprobe kvm_intel
           

如果不是管理節點的主機要作為計算節點添加。需要自己設定網橋檔案

agent會使用網橋,預設cloudbr0(這個需要自己建立,4.10版本如果管理節點計算節點是一個主機,添加主機時會自動建立,但是4.11就不會自動建立了。 而且一般不會把管理節點和計算節點當做一個主機。還是自己建立比較好)

檢視已有網橋 一般是virbr0

brctl show
           

安裝網絡管理工具

yum -y install net-tools
           

停掉已有網橋

ifconfig virbr0 down
           

删除該網橋

brctl delbr virbr0
           

建立橋接網卡配置檔案

vim /etc/sysconfig/network-scripts/ifcfg-cloudbr0
           

加入以下内容

TYPE=Bridge
BOOTPROTO=static
DEVICE=cloudbr0
IPV6INIT=no
ONBOOT=yes
IPADDR=192.168.0.92
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
STP=yes
           

修改使用的網卡

vim /etc/sysconfig/network-scripts/ifcfg-ens33
           

在末尾添加一行 之前設定的IPADDR NETMASK GATEDWAY可以删除,并設定BOOTPROTO=none

BRIDGE=cloudbr0
           

重新開機網絡服務

systemctl restart network
           

此時應該就可以通過WEB添加主機了。。。下面的不是必要的。

這一步不是必要的。。。編輯agent配置檔案

vi /etc/cloudstack/agent/agent.properties
           

使以下設定生效,注,這是控制節點manager的IP

host=192.168.199.101
           

初始化cloudstack-agent

cloudstack-setup-agent
           

一路回車就可以。完成後可以發現檔案有了變化

4.10版本的cloudstack 我嘗試添加主機時總是失敗。。。唉。如果管理節點也作為計算節點時倒是可以添加成功。原因應該是

2020-03-15 08:33:25,145 DEBUG [c.c.u.s.SSHCmdHelper] (catalina-exec-14:ctx-6ce193d6 ctx-8e15d638) (logid:15fc1fc0) Executing cmd: cloudstack-setup-agent  -m localhost -z 1 -p 1 -c 1 -g cf9c040c-b185-308b-8e04-35eaea7a0739 -a --pubNic=cloudbr0 --prvNic=cloudbr0 --guestNic=cloudbr0 --hypervisor=kvm
           

cloudstack-setup-agent -m localhost 的-m參數明顯是錯誤的。。。不應該是localhost。應該是要添加的主機IP。至于為什麼添加主機時會出現這樣的錯。我也是無奈。。。解決不了啊。

似乎是版本問題(我要罵人了。。。cloudstack4.11.0參數就沒問題。。。就這我試了一個星期。),似乎4.11的話計算節點與管理節點分開 如果選在繼續執行基本安裝。。。參數也會有問題。選擇我以前使用過,然後自己添加資源域參數 似乎沒問題(但是也不确定。。。)

2020-03-22 07:03:51,984 DEBUG [c.c.u.s.SSHCmdHelper] (qtp1644443712-19:ctx-adfb6aab ctx-bb08539e) (logid:3c44bc11) SSH command: cloudstack-setup-agent  -m 192.168.0.95 -z 1 -p 1 -c 1 -g 5d081189-f447-38c4-b95f-fd13d92bb18a -a --pubNic=cloudbr0 --prvNic=cloudbr0 --guestNic=cloudbr0 --hypervisor=kvm
SSH command output:Starting to configure your system:
Configure SElinux ...         [OK]
Configure Network ...         [OK]
Configure Libvirt ...         [OK]
Configure Firewall ...        [OK]
Configure Nfs ...             [OK]
Configure cloudAgent ...      [OK]
CloudStack Agent setup is done!

           

這個參數才是對的嘛。。。好氣。盡管标題是4.10,但是CentOS7安裝時安裝4.11就好,安裝步驟是一樣的。。。

添加成功後剛開始可能顯示二級存儲存儲空間為0。應該是沒加載出來吧。等個一段時間,比較長的一段時間,再看應該就不是0了。

但是4.11版本為什麼也會出現 -m localhost的情況呢。。。而且4.11版本出現這個參數後。。主機添加也會失敗。0

經過不仔細的驗證。。。使用之前建構成功的CloudStack管理節點 WEBUI界面添加新主機時。可以成功進行添加。就是說日志檔案 會出現類似 下列的參數。。。

2020-03-22 07:03:51,984 DEBUG [c.c.u.s.SSHCmdHelper] (qtp1644443712-19:ctx-adfb6aab ctx-bb08539e) (logid:3c44bc11) SSH command: cloudstack-setup-agent  -m 192.168.0.95 -z 1 -p 1 -c 1 -g 5d081189-f447-38c4-b95f-fd13d92bb18a -a --pubNic=cloudbr0 --prvNic=cloudbr0 --guestNic=cloudbr0 --hypervisor=kvm
           

-m 參數是正确的。。。這能不能說明其實影響-m參數的隻有管理節點 而不是計算節點的的檔案配置出錯?感覺應該是吧。。。可為什麼管理節點一樣的安裝方式,結果差的有點多呢。。。

8,節點日志檢視

manager檢視管理節點日志

tail -f /var/log/cloudstack/management/management-server.log
           

檢視管理節點安裝日志

tail -f /var/log/cloudstack/management/setupManagement.log 
           

agent 檢視Agent節點日志

tail -f /var/log/cloudstack/agent/agent.log 
           

受控節點安裝日志

tail -f /var/log/cloudstack/agent/setup.log 
           

有關如何通過Web界面 UI進行設定。後續再記錄。

三 CloudStack重裝

安裝完CloudStack後,我們往往會做各種實驗,可能會把系統搞得很亂。想删除的話非常麻煩,因為它們之間往往存在層級關系,必須先從最底層删起。有沒簡單的辦法直接推倒重來呢?答案是有的,最簡單隻要重置下其資料庫即可。

先停掉CloudStack服務:

systemctl stop cloudstack-management
           

登陸mysql控制台,删除資料庫:

mysql -u root -p
           
drop database cloud;
drop database cloud_usage;
drop database cloudbridge;
quit;
           

重新導入基礎資料:

cloudstack-setup-databases cloud:[email protected] --deploy-as=root:root密碼
           

重新導入系統虛機:

重新開機cloudstack服務

service cloudstack-management start
           

至此,已經在CentOS系統上部署了一個CloudStack,可以通路http://managerIP:8080/client/ 對CloudStack進行設定了。

關于添加主機失敗的問題。大機率是全局設定host的問題。

這個問題也困擾了我好多天。。。

在未建立資源域前,建議檢查一下全局設定的host 如果是localhost一定會有問題(除非管理節點計算節點同一個主機)

将其修改為管理節點主機IP 即可

CentOS7下搭建CloudStack4.10.0雲平台

CloudStack4.10.0 似乎不支援超配。。。設定後添加虛拟機時報資源不足錯誤。。。

繼續閱讀