參考文檔
https://blog.csdn.net/u012124304/article/details/80960504#Mysql_37
cloudstack的rpm包下載地址
http://download.cloudstack.org/centos/
環境部署規划,
虛擬化:esxi 6.7
操作系統版本:centos 6.9
cloudstack版本:4.9.3.0
python版本:2.6
主機名 |
IP地址 |
配置 |
用途 |
node1 |
172.16.103.2 |
16vcpu,32Gb內存,16G精簡配置硬盤 |
cloudstack控制節點,安裝數據庫,和控制節點的web控制台,同時也作為計算節點存在 |
node2 |
172.16.103.3 |
4vcpu,4G內存,16G精簡配置,300G精簡配置硬盤,100G精簡配置 |
模擬存儲節點,安裝nfs包,對外提供nfs的存儲服務,16G用於安裝操作系統,300G用於主存儲,100G用戶二級存儲 |
node3 |
172.16.103.4 |
16vcpu,32Gb內存,16G精簡配置硬盤 |
純的計算節點,為cloudstack提供計算資源 |
1,配置ntp服務器和數據庫服務器
關閉selinux和防火牆,重啟
vi /etc/selinux/config
chkconfig iptables off
修改hosts
vi /etc/hosts
172.16.103.2 node1
172.16.103.3 node2
172.16.103.4 node3
安裝ntp服務
yum install ntp -y
service ntpd start
chkconfig ntpd on
安裝mysql
yum -y install mysql mysql-server
service mysqld start
chkconfig --add mysqld
chkconfig mysqld on
修改mysql中root用戶的密碼為root
mysql
mysql> use mysql;
mysql> set password for root@localhost = password('root');
2,安裝管理端和服務端的rpm包
cloudstack主要的包
cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm #agent包。添加計算節點的時候,計算節點上需要安裝的包
cloudstack-common-4.9.3.0-1.el6.x86_64.rpm #common包,應該是主程序包
cloudstack-management-4.9.3.0-1.el6.x86_64.rpm #管理端的包
cloudstack-usage-4.9.3.0-1.el6.x86_64.rpm #計費用量包,本次項目不安裝
mysql-connector-python-2.1.3-1.el6.x86_64.rpm #cloudstack安裝所需要的mysql的python連接器,需要自行去mysql官網下載對應系統版本的即可
libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm #安裝libvirt所需要的依賴包,需要自行上網下載,通過rpm -ivh 安裝,必要是可以強制安裝,加上--force --nodeps參數
libvirt-lock-sanlock-0.10.2-62.el6.x86_64.rpm #安裝libvirt所需要的依賴包,需要自行上網下載,通過rpm -ivh 安裝,必要是可以強制安裝,加上--force --nodeps參數
sanlock-2.8-3.el6.x86_64.rpm #安裝libvirt所需要的依賴包,需要自行上網下載,通過rpm -ivh 安裝,必要是可以強制安裝,加上--force --nodeps參數
sanlock-lib-2.8-3.el6.x86_64.rpm #安裝libvirt所需要的依賴包,需要自行上網下載,通過rpm -ivh 安裝,必要是可以強制安裝,加上--force --nodeps參數
augeas-1.0.0-10.el6.x86_64.rpm #安裝libvirt所需要的依賴包,需要自行上網下載,通過rpm -ivh 安裝,必要是可以強制安裝,加上--force --nodeps參數
jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64 #添加計算節點的需要安裝的依賴包
systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2 #系統vm文件
將以上rpm包上傳到/root目錄下,然后使用yum localinstall 安裝
先安裝mysql的python連接器包
rpm -ivh mysql-connector-python-2.1.3-1.el6.x86_64.rpm
使用yum localinstall 安裝cloudstack包
yum localinstall cloudstack-management-4.9.3.0-1.el6.x86_64.rpm cloudstack-common-4.9.3.0-1.el6.x86_64.rpm -y
初始化數據庫
cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:root
參數解析:
cloud:cloud@localhost :其中cloud:cloud是cloudstack在mysql數據庫中創建的賬戶和密碼,localhost是mysql數據庫的地址,因為我們裝在本機上,所以是localhost,如果mysql數據庫在另外一台機器上,則需改為該機器的IP或域名
–deploy-as=root:root :這個參數的值root:root填的是數據庫的root用戶名和密碼
執行這個命令會在MySql數據庫上創建一個cloud的用戶,並使用這個用戶創建一個cloud數據庫。出現以下信息則表明cluodstack的數據庫初始化成功:
時間比較久,耐心等待。
初始化cloudstack管理服務器
cloudstack-setup-management
使用瀏覽器訪問,地址為[host_ipaddress]:8080/client,默認的用戶名和密碼為admin/password,首次登陸和首次使用最好走一遍下面的向導
3,配置該主機為計算節點。
配置為計算節點需要安裝cloudstack-agent包和cloudstack-common包,而在這之前還需要安裝libvirt和qemu,cloudstack對KVM虛擬化層的操作實際上都是libvirt和qemu來完成的,安裝libvirt和qemu需要安裝相關的依賴包,需要的依賴包如下
libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm
libvirt-lock-sanlock-0.10.2-62.el6.x86_64.rpm
sanlock-2.8-3.el6.x86_64.rpm
sanlock-lib-2.8-3.el6.x86_64.rpm
augeas-1.0.0-10.el6.x86_64.rpm
這5個包在centos的系統安裝鏡像里面沒有,需要自行上網搜索下載,下面安裝這幾個rpm包
rpm -ivh libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm
rpm -ivh sanlock-lib-2.8-3.el6.x86_64.rpm
rpm -ivh sanlock-2.8-3.el6.x86_64.rpm
rpm -ivh augeas-1.0.0-10.el6.x86_64.rpm --force --nodeps
安裝libvirt和qemu
yum install libvirt* qemu* -y
安裝cloudstack-agent包和cloudstack-common包,同時安裝cloudstack-usage包,如果是其他純計算節點,可以不安裝cloudstack-usage包,在安裝這些包之前還需要安裝一個依賴包,這個依賴包可能在centos的系統鏡像里面也沒有
rpm -ivh jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64.rpm
yum localinstall cloudstack-common-4.9.3.0-1.el6.x86_64.rpm cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm
啟動相關服務
service cloudstack-agent start
查看服務器狀態
service cloudstack-agent status
發現服務器為cloudstack-agent dead but subsys locked狀態,修復該錯誤,開啟宿主機的虛擬化支持,在vmware workstation設編輯虛擬機設置選擇CPU,勾選虛擬化引擎
修改配置文件
vi /etc/cloudstack/agent/agent.properties
private.network.device=eth0
public.network.device=eth0
這里主要修改的網橋設備,如果使用本地網卡作為網橋的話就寫ifconfig看到的本地網卡的名字即可
重新啟動服務
service cloudstack-agent restart
查看服務狀態
service cloudstack-agent status
4,配置存儲節點
關閉該節點的selinux和iptables,掛載系統鏡像,安裝nfs包
yum install nfs-utils rpcbind -y
設置開機啟動
chkconfig nfs on
chkconfig rpcbind on
建立data目錄
mkdir -p /data
mkdir primary
mkdir secondary
添加兩塊磁盤,將磁盤分區格式化之后掛載到/data/primary和/data/secondary 目錄,並寫入fstab文件,實現開機自動掛載
編輯nfs的配置文件
vi /etc/exports
/data/primary *(rw,sync)
/data/secondary *(rw,sync)
/data/primary為把該目錄共享出去,*代表所有網絡的主機可以連接該共享,(rw,sync) rw為權限,可讀可寫,sync代表數據同步寫入NFS服務器端的硬盤中。也可以用async,async是大數據時使用,是先寫到緩存區,再寫到磁盤里。
設置權限
chown -R nfsnobody:nfsnobody /data
重啟相關服務
service rpcbind restart
service nfs restart
查看nfs共享的目錄
5,創建系統vm
在管理節點上創建被掛載的二級存儲目錄/data/secondary,然后將上面nfs服務器的secondary目錄掛載的此目錄。
mkdir -p /data/secondary
mount -t nfs 172.16.103.3:/data/secondary /data/secondary/
同時寫入fstab文件,實現開機自動掛載
vi /etc/fstab
172.16.103.3:/data/secondary /data/secondary ext4 defaults 0 0
上傳系統vm文件到/data/secondary目錄
解壓縮系統vm文件
bunzip2 systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2
安裝系統vm
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /data/secondary/ -f /data/secondary/systemvm64template-4.10-4.10.0.0-kvm.qcow2 -h kvm -F
6,圖形化操作
注意看系統的vm是狀態,
如果代理狀態不是up的話,可以嘗試重啟一下資源域
如果是在esxi虛擬化下做此實驗的話,需要在esxi虛擬化平台中啟動混雜模式,具體操作是網絡,選擇節點橋接的網絡,啟用混雜模式,然后重啟cloudstack的資源域即可。
7,添加一個計算節點
計算節點安裝好操作系統,掛載系統鏡像為yum源,關閉selinux和iptables,注意在vmware workstation設編輯虛擬機設置選擇CPU,勾選虛擬化引擎
編輯hosts文件
vi /etc/hosts
172.16.103.4 node3
上傳相關的程序包和依賴包到/root目錄
augeas-1.0.0-10.el6.x86_64.rpm
cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm
cloudstack-common-4.9.3.0-1.el6.x86_64.rpm
jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64.rpm
libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm
sanlock-2.8-3.el6.x86_64.rpm
sanlock-lib-2.8-3.el6.x86_64.rpm
安裝安裝libvirt和qemu的依賴包
rpm -ivh sanlock-lib-2.8-3.el6.x86_64.rpm
rpm -ivh sanlock-2.8-3.el6.x86_64.rpm
rpm -ivh augeas-1.0.0-10.el6.x86_64.rpm --force --nodeps
安裝libvirt和qemu,cloudstack對KVM虛擬化層的操作實際上都是libvirt和qemu來完成的
yum install libvirt* qemu*
安裝cloudstack-agent包和cloudstack-common包的依賴包
yum install java-gcj-compat
rpm -ivh jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64.rpm
安裝cloudstack-agent包和cloudstack-common包
yum localinstall cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm cloudstack-common-4.9.3.0-1.el6.x86_64.rpm
編輯cloudstack-agent的配置文件
vi /etc/cloudstack/agent/agent.properties
private.network.device=eth0
public.network.device=eth0
這里主要修改的網橋設備,如果使用本地網卡作為網橋的話就寫ifconfig看到的本地網卡的名字即可
開啟cloudstack-agent服務
service cloudstack-agent start
查看cloudstack-agent服務的運行狀態
service cloudstack-agent status
圖形化操作,添加計算節點
8,默認情況下的cloudstack控制台上主存儲中顯示的容量為可分配的容量,由於虛擬化平台有一個存儲超配的概念,所以默認情況下這里顯示的是可分配的容量,默認情況下可分配的容量是實際容量的2倍(下圖中顯示的容量為實際容量,是本人修改做全局配置之后的容量),為了能夠顯示實際容量需要在全局配置中更改相關的參數,需要更改的參數為storage.overprovisioning.factor(默認這個值為2)修為該1即可,修改之后要重啟cloudstack控制台的服務。
9,添加iso鏡像
由於是內網環境,需要在nfs上搭建一個httpd服務,用於發布系統發iso鏡像包,目前版本無法支持在web端自由上傳iso鏡像,所以需要搭建模擬環境
安裝httpd服務
yum install httpd -y
編輯httpd.conf配置文件,將默認的html目錄更改為主存儲的目錄
cd /etc/httpd/conf
備份默認的配置文件
mv httpd.conf httpd.conf.bak
將原配置文件中的內容去掉注釋行導入到新配置文件
cat httpd.conf.bak |grep -v '#' > httpd.conf
vi httpd.conf
DocumentRoot "/data/primary" #此處修改為主存儲掛載的目錄
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/data/primary"> #此處修改為主存儲掛載的目錄
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
重啟http服務
service httpd restart
將win2008的系統鏡像和centos7.3的系統鏡像上傳至/data/primary目錄並且將win的鏡像名字修改為win08r2.iso,centos系統鏡像名字修改為centos1611every.iso
創建index.html文件,寫入上面的系統鏡像的下載地址
vi /data/primary/index.html
http://172.16.103.3/win08r2.iso
<p>
http://172.16.103.3/centos1611every.iso
</p>
在cloudstack平台添加iso
添加之后查看狀態一直處於Connection refused狀態,百度得知需要修改全局配置中
secstorage.allowed.internal.sites的配置,默認情況下,不允許連接任何地址,需要將這里配置成我們的httpd的網絡地址,注意,經過我的多次測試,這里不能寫IP地址,寫了IP地址后重啟了控制台依然還會出現connection refused的情況,所以所需要的填寫的一個網絡,例如我們的httpd服務在172.16.103.2,那么這里就需要填寫172.16.103.0/24
填寫完畢之后,重啟控制台機器,重啟不能夠使用restart參數,需要在控制節點(node1)上執行以下操作
service cloudstack-management stop
service cloudstack-management start
執行完start命令之后要確保8080端口打開之后才可以訪問控制台
netstat -nutpl |grep 8080
配置了以上全局配置之后可以看到鏡像處於downloaded狀態了
10,模板制作
首先使用上面的ISO鏡像安裝好操作系統,然后將安裝好的系統進行優化,最后制作成系統模板。
centos模板制作
安裝好的centos系統需要執行的操作,首先是網絡配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
僅保留上面的配置項,其他項均刪除
刪除udev綁定
rm -f /etc/udev/rules.d/70-persistent-net.rules
刪除歷史命令
history -c
其實還可以執行更多的優化操作例如,刪除日志,安裝一些需要的軟件之類的。
然后關機,等待cloudstack控制台上centos實例的狀態為stopped狀態之后在創建模板如下圖
創建模板
點擊實例名
點擊查看卷
點擊卷名名稱
點擊創建模板
輸入自定義的名稱和說明,選擇對應的操作系統,勾選公用,點擊確定即可創建模板,模板創建成功之后即可使用模板快速創建虛擬機。
windows主機創建模板的流程根上述大致相同,都是首先執行一些系統優化的操作,不同之處在於有些低版本的windows系統可能需要額外添加一些支持虛擬化的驅動(主要是磁盤的驅動),例如virtio-win.iso之類的,最后執行windows封裝命令即可。系統封裝的具體操作如下
在C:\Windows\System32\Sysprep目錄下,運行sysprep.exe,選擇進入系統全新體驗,關機,點確定即可。
制作模板的過程根上述制作centos模板的過程類似,都是選擇卷,制作模板,需要注意的是執行關機之后也要得到cloudstack控制上對應實例的狀態處於stopped之后再執行制作模板的操作