一篇學習性質的文章,關於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地址和網卡名(我的是)。然後編輯網卡的配置文件
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
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
設置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 節點 掛載二級存儲到 /opt 目錄
mount -t nfs manager:/export/secondary /opt
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
如果沒有結果執行
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進行設置了。