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
  • 橋接模式

開啓虛擬化
安裝過程就略過了。基本上設置一下root密碼,選擇一下自動分配空間即可。注,在圖形界面中最好也將網絡連接,默認是未連接的。
點擊網絡和主機名開啓連接
可以再打開的界面中設置主機名 管理節點可設置爲 manager 受控節點可設置爲agent
設置主機名

2 設置靜態IP 設置主機名和DNS服務。

如果圖形界面時未開啓網絡。搜索一下如何解決吧
dhclient

ip addr 	# 查看網絡
dhclient 網卡
1,設置靜態IP

設置靜態IP不是必要的。但是我之前用的虛擬機重啓後IP總是變動。所以就設置一下了。。。
查看網絡設置文件夾

ls /etc/sysconfig/network-scripts

可以查看到ip地址和網卡名(我的是)。然後編輯網卡的配置文件
修改靜態IP

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

IP變爲101

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

ping manager
設置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 查看硬盤分配情況
未添加硬盤
添加新硬盤。最好在關機情況下添加然後重啓manager虛擬機
添加新硬盤
再次查看硬盤情況。發現多了一個 /dev/sdb 的硬盤。
多了一個硬盤
格式化硬盤 執行過程輸入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

查看完成後狀態
完成硬盤添加

掛載完成後 開始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

agent訪問
agent 節點 掛載二級存儲到 /opt 目錄

mount -t nfs manager:/export/secondary /opt

agent掛載二級存儲

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:123456@localhost --deploy-as=root:123456

數據初始化

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/
成功顯示
默認用戶名是 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

驗證libvirtd述
如果沒有結果執行

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:123456@localhost --deploy-as=root:root密碼

重新導入系統虛機:

重啓cloudstack服務

service cloudstack-management start

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章