目錄
本文旨在介紹如何在本機虛擬機器器裡部署一套CloudStack環境的測試流程,包括一臺管理節點(manager)和一臺計算節點(agent)。其中,manager節點會搭建作為二級儲存的NFS服務,agent會搭建用於映象下載的nginx伺服器。
本文使用KVM建立虛擬機器器,通過libvirtd管理虛擬機器器。
軟體安裝:
VMWare Workstation,XShell
資源下載:
CentOS-7-x86_64-Minimal-1810.iso //系統映象
cloudstack-common-4.13.1.0-1.el7.x86_64.rpm
cloudstack-management-4.13.1.0-1.el7.x86_64
cloudstack-agent-4.13.1.0-1.el7.x86_64.rpm
systemvmtemplate-4.11.3-kvm.qcow2.bz2
本文所用所有資源的百度雲分享連結:https://pan.baidu.com/s/1AiuZUF5JvudgIgFjc_8j4Q 提取碼:oy3h
首先,開啟Wmware Workstation,選擇選單欄「編輯」->虛擬網路編輯器,檢視VMnet8的子網地址。
每臺機器VMnet8被分配的子網地址都不相同,但在每個網段中,本機都預設為1,閘道器都預設為2。
以本機「192.168.100.0」網段為例,在該網段中,預設本機的IP地址為「192.168.100.1」,預設閘道器的IP地址為「192.168.100.2」。
而若是「192.168.67.0」網段,則預設本機的IP地址為「192.168.67.1」,預設閘道器的IP地址為「192.168.67.2」。
請注意並修改後續操作中IP地址,以保證在VMnet8的網段中。
若想更改網段,可以點選右下角「更改設定」,以管理員許可權開啟虛擬網路編輯器,修改左下角子網IP。
預設DHCP分配IP範圍為128-254,可以點選「DHCP設定」調整,本文調整如下。開放地址範圍為192.168.100.100-192.168.100.254。
綜上,本機虛擬網路相關的資訊如下:
地址範圍:192.168.100.100-192.168.100.254
閘道器:192.168.100.2
子網掩碼:255.255.255.0
本文先建立manager節點虛擬機器器,安裝必要的軟體後,會克隆該虛擬機器器作為agent節點,再分別部署各自節點。
manager節點IP設定為192.168.100.100
agent節點IP設定為192.168.100.101
在VmWare Station 中新建虛擬機器器,在新建嚮導中依次選擇「典型」、「稍後安裝作業系統」、「Linux」、「CentOS 7 64位元」。
命名該虛擬機器器為Manager,避免混淆。
磁碟容量為預設20G足可,在最後一步中點選「自定義硬體」,按下圖設定。
Manager節點推薦記憶體為2G,處理器核心2顆,開啟Intel VT-x/EPT,CD驅動器載入CentOS的iso映象,並確定已勾選啟動時連線,再刪除多餘的音效卡和印表機硬體,點選「關閉」並點選「完成」。
再次編輯該虛擬機器器設定,點選左下角新增,新增硬碟。
一路點「下一步」,最後完成新硬碟新增。
啟動虛擬機器器,開始映象安裝。點選虛擬螢幕,按上下鍵選擇「Install CentOs 7」,進入視覺化安裝介面。
第一步,選擇中文。
點選「繼續」,等待依賴檢索完成,依次設定「安裝位置」、「網路和主機名」。
設定manager節點IP地址「192.168.100.100」,並設定阿里DNS伺服器。點選「儲存」和「完成」。
點選「開始安裝」。
在安裝時,設定ROOT密碼,本文設定為12345。若密碼過於簡單,點選兩次完成也可以完成設定。
安裝完成後,重新啟動。
開啟XShell,新建對談。
點選「使用者身份驗證」,輸入root和ROOT密碼。
儲存並連線,驗證主機金鑰,選擇「接受並儲存」。
在XShell中完成以下設定。
(1)設定IP對映
設定後可以直接通過Hostname,存取到對應節點。
複製一下指令到XShell對談框中,按回車執行。
vi /etc/hosts
在該檔案新的一行中插入以下內容:
192.168.100.100 manager
192.168.100.101 agent
小提示
按I鍵進入INSERT模式。
按ESC,輸入「:wq」儲存並退出,輸入「:q!"不儲存退出。
按ESC,按兩下D刪除遊標所在行。
(2)關閉防火牆
systemctl disable firewalld
systemctl stop firewalld
然後設定selinux為permissive模式
修改config檔案
vi /etc/selinux/config
找到selinx並改成
SELINUX=permissive
重新啟動生效
reboot
檢視selinux
getenforce
(3)時區設定(非必要)
timedatectl set-timezone Asia/Shanghai
檢視時區
timedatectl
(4)安裝EPEL
yum -y install epel*
重建本地倉庫快取
yum clean all && yum makecache
安裝VIM,用以編輯檔案。
yum -y install vim
安裝lrzsz,用以向虛擬機器器傳送檔案。
yum -y install lrzsz
(5)安裝時間同步模組
yum -y install chrony
修改組態檔
vim /etc/chrony.conf
將伺服器修改為阿里雲的時間同步伺服器
找到以下四行
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
修改為
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
server ntp4.aliyun.com iburst
重新啟動chronyd服務
systemctl restart chronyd
(5)安裝NFS服務
yum -y install nfs-utils
編輯組態檔
vim /etc/sysconfig/nfs
取消如下項的註釋。其中,RQUOTAD_PORT需要手動新增。
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020
啟動服務並設定開機啟動。
systemctl enable rpcbind
systemctl start rpcbind
systemctl enable nfs
systemctl start nfs
檢視新增硬碟
fdisk -l
格式化硬碟,建立ext4檔案系統
mkfs.ext4 /dev/sdb
至此,兩節點的通用設定已完成。
關閉manager節點,在庫中,右鍵manager節點,選擇「管理」->「克隆」,進入克隆虛擬機器器嚮導。
依次選擇「克隆當前狀態」、「建立完整克隆」,命名為「agent」,然後點選完成。
由於克隆後agent節點IP與manager衝突,建議先在虛擬機器器內部修改完靜態IP地址後,再通過XShell設定。
開啟agent虛擬機器器,輸入賬戶root,密碼12345。
修改host名
vim /etc/hostname
修改manager為agent
修改IP地址
vim /etc/sysconfig/network-scripts/ifcfg-ens33
將IPADDR修改為192.168.100.101,修改後如下。
重新啟動虛擬機器器
reboot
在XShell中,建立新對談,名稱為「agent」,主機為192.168.100.101,賬號為root,密碼為12345。
在XShell的對談中完成後續設定。
前面已經設定過檔案,此步驟只需設定共用目錄。請注意各個操作與其操作節點,避免混淆。
建立掛載點
mkdir -p /export/secondary
硬碟掛載
echo "/dev/sdb /export/secondary ext4 defaults 0 0" >> /etc/fstab
快速掛載
mount -a
檢視掛載
df -h
結果如下
設定共用目錄
vim /etc/exports
新增
/export/secondary *(rw,async,no_root_squash,no_subtree_check)
重新匯入共用目錄設定
exportfs -a
建立掛載點
mkdir -p /export/primary
硬碟掛載
echo "/dev/sdb /export/primary ext4 defaults 0 0" >> /etc/fstab
快速掛載
mount -a
設定共用目錄
vim /etc/exports
新增
/export/primary *(rw,async,no_root_squash,no_subtree_check)
重新匯入共用目錄設定
exportfs -a
manager 節點檢視 agent的共用目錄
showmount -e agent
agent 節點檢視 manager 的共用目錄
showmount -e manager
yum -y install mariadb-server mariadb
編輯 mariadb 組態檔
vim /etc/my.cnf
在mysqld 模組下加入
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'
bind-address = 0.0.0.0
啟動mariadb 並設定為開機啟動
systemctl enable mariadb
systemctl start mariadb
執行資料庫初始化安全操作
mysql_secure_installation
初始未設定密碼按回車跳過,選擇設定密碼,設定為12345,移除匿名使用者,不遮蔽遠端登入等,其他按回車選擇預設。
賦予 root 遠端登入許可權
請注意並修改下方操作中的密碼為自己設定的密碼
mysql -uroot -p12345 -e "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '12345' WITH GRANT OPTION";
yum -y install net-tools bridge-utils
編輯網路卡橋接檔案 cloudbr
vim /etc/sysconfig/network-scripts/ifcfg-cloudbr0
修改後內容如下。靜態IP根據自己實際情況修改。
TYPE=Bridge
BOOTPROTO=none
DEVICE=cloudbr0
ONBOOT=yes
IPADDR=192.168.100.101
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DNS1=223.5.5.5
STP=yes
設定網路卡檔案
vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改後如下
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33"
UUID="ad4d6e67-ae59-4a3c-9270-7045700517cd"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE=cloudbr0
重新啟動網路服務
systemctl restart network
檢視 網橋 和路由
brctl show route -n
至此,基本環境安裝已經完成,建議拍攝快照,以免後期設定錯誤,功虧一簣。
設定網路原始檔,兩臺節點設定相同
vi /etc/yum.repos.d/cloudstack.repo
新增
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/centos7/4.13/
enabled=1
gpgcheck=0
yum -y install cloudstack-management
yum -y install cloudstack-agent
官方下載地址:
http://cloudstack.apt-get.eu/centos7/4.13/cloudstack-management-4.13.1.0-1.el7.x86_64.rpm
http://cloudstack.apt-get.eu/centos7/4.13/cloudstack-agent-4.13.1.0-1.el7.x86_64.rpm
http://cloudstack.apt-get.eu/centos7/4.13/cloudstack-common-4.13.1.0-1.el7.x86_64.rpm
或
本文提供的百度雲裡下載。
本文使用lrzsz進行檔案傳送,若遇問題,也可以使用WinSCP等其他軟體傳送。
將cloudstack-common和cloudstack-management兩個rpm檔案,分別拖入XShell對談框,傳送給虛擬機器器。
執行下述指令進行本地安裝。
yum -y install cloudstack-common-4.13.1.0-1.el7.x86_64.rpm cloudstack-management-4.13.1.0-1.el7.x86_64.rpm
安裝過程或以後使用過程中,有任何問題,可以通過紀錄檔檢視。
tail -f /var/log/cloudstack/management/management-server.log
初始化資料庫,建立新使用者cloud。
最後,root:12345為root賬號及root密碼,密碼不同請修改。
cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:12345
啟動management
cloudstack-setup-management
將cloudstack-common和cloudstack-agent兩個rpm檔案,分別拖入XShell對談框,傳送給虛擬機器器。
執行下述指令進行本地安裝。
yum -y install cloudstack-common-4.13.1.0-1.el7.x86_64.rpm cloudstack-agent-4.13.1.0-1.el7.x86_64.rpm
在二級儲存中安裝KVM模板。以下兩種方式二選一。
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /export/secondary \
-u http://cloudstack.apt-get.eu/systemvm/4.11/systemvmtemplate-4.11.3-kvm.qcow2.bz2 \
-h kvm -F
官方地址:
http://cloudstack.apt-get.eu/systemvm/4.11/systemvmtemplate-4.11.3-kvm.qcow2.bz2
或
本文提供的百度雲裡下載。
同上述過程,拖入對談即可。
注意:當前資料夾是否為root,不是請先「cd /root」,或者修改下述程式碼中路徑。
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /export/secondary \
-f /root/systemvmtemplate-4.11.3-kvm.qcow2.bz2 \
-h kvm –F
編輯QEMU VNC組態檔/etc/libvirt/qemu.conf
vim /etc/libvirt/libvirtd.conf
取消註釋或新增
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
小提示
可以按下ESC,使用「/+搜尋詞」,如「/listen」進行搜尋。
設定/etc/sysconfig/libvirtd檔案
LIBVIRTD_ARGS="--listen"
重新啟動libvirtd 並設定為開機自啟
systemctl restart libvirtd
systemctl enable libvirtd
預設存取埠為manager節點IP的8080埠。
開啟瀏覽器,存取http://192.168.199.100:8080/client/。
預設賬號為admin,預設密碼為password,選擇語言為「簡體中文」,登陸。
初次登陸選擇左下角「我以前使用過」。
選擇左下角「全域性設定」,搜尋並修改以下設定。
cpu.overprovisioning.factor 2.0 //CPU超配
mem.overprovisioning.factor 2.0 //記憶體超配,即2GB變4GB
secstorage.allowed.internal.sites 0.0.0.0/0 //從該網段下載ISO或模板,後期搭建ngix伺服器可修改
management.network.cidr 192.168.100.0/24 //管理網段,可不修改,但會有警報資訊
在manager節點中,重新啟動cloudsatck-management服務
systemctl restart cloudstack-management
重新啟動時間較長,請耐心等候,可以觀察紀錄檔檔案,瞭解啟動程序。
tail -f /var/log/cloudstack/management/management-server.log
重新登入,選擇左下角「基礎架構」,選擇「資源域」,點選工具列「+ 新增資源域」。
設定如下即可。
請注意,「新增主機」這一步,是新增計算節點作為叢集的預設主機,而不是管理節點。
點選「啟動資源域」,等待建立完成,然後啟動即可。
如下,等待系統VM建立成功後,開始後續步驟。
建立一個NGINX 伺服器當作映象下載站。
安裝 nginx 軟體
yum -y install nginx
編輯 nginx 組態檔
vim /etc/nginx/nginx.conf
在access_log /var/log/nginx/access.log main一行後加上
autoindex on;# 顯示目錄
autoindex_exact_size on;# 顯示檔案大小
autoindex_localtime on;# 顯示檔案時間
清空 /usr/share/nginx/html 目錄
小心謹慎
cd /usr/share/nginx/html
rm -rf *
將準備好的ISO映象放進去,本文使用的是虛擬機器器的映象,直接拖入對談框,傳送至/usr/share/nginx/html目錄。
重新啟動nginx 服務,設定為開機啟動
systemctl enable nginx
systemctl start nginx
可通過瀏覽器直接存取agent節點IP地址檢視。
選擇左側「模板」->選擇檢視「ISO」,點選工具列「註冊ISO」。
依次填寫所有資訊,URL可以從192.168.100.101網頁中複製連結。
點選「確定」,點選該ISO,點選「資源域」,檢視狀態。
安裝完成後,如下所示。
依次選擇左邊「範例」->工具列「新增範例」。
選擇ISO建立。
選擇剛剛註冊的ISO。
計算方案選擇Medium,分配記憶體為1GB,可在「服務方案」中修改。
其餘一律預設即可,最後填寫資訊。
啟動VM,等待VM建立並執行。
選擇該虛擬機器器快速檢視->檢視控制檯。
在彈出的控制檯網頁中,安裝ISO即可。
安裝過程同虛擬機器器大致一樣,不同的是網路只需開啟即可,不需要設定靜態IP和主機名。
安裝完成後,重新啟動。
至此,一臺可以用於生產的範例已經部署完成,後續可以安裝其他生產環境,本文僅做測試,安裝系統即可。
接下來是,將安裝有生產環境的範例建立模板,用以建立更多範例。
關閉範例。「快速檢視」->停止。
等待停止後,點選「檢視卷」。
選擇「快速檢視」->「建立模板」。
填寫資訊後,建立即可。
以後新增範例時,選擇該模板即可建立一模一樣的範例。
Q:安裝軟體時一直切換映象,最後也不下載,這是怎麼回事?
A:沒有設定DNS伺服器。
沒有設定網橋的話,設定網路
vi /etc/sysconfig/network-scripts/ifcfg-ens33
新增DNS伺服器
DNS1=223.5.5.5
設定網橋了的話,在網橋檔案裡新增DNS。
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr0
Q:管理節點重新啟動後,CloudStack 的WEB UI上不去,這是怎麼回事?
A:一般是Server還在啟動中,稍等即可。
可以通過檢視紀錄檔的方式排除問題。
tail -f /var/log/cloudstack/management/management-server.log
Q:系統VM建立失敗,紀錄檔顯示「can't create development for vm」,這是為什麼?
A:這可能有兩個原因造成:
1.agent節點硬體資源不足
本文建議的4GB記憶體加2核,再加上2倍超配,經多次試驗完全能滿足要求。
2.沒有安裝KVM模板
如果紀錄檔中報錯「Not such file or directory」,然後指向/export/secondary裡的template資料夾,那麼就是這個原因,按照第6部中的「安裝KVM模板」步驟完成即可。
Q:紀錄檔報資料庫中列錯誤,怎麼處理?
A:按照第6步中,初始化資料庫的步驟,重新建立使用者,安裝management。