CentOS7部署安裝CloudStack4.11.0成功添加第一個主機

上一篇博客使用CentOS7 部署安裝CloudStack4.10.0.。不知什麼原因 添加主機時一直失敗。。。管理節點的日誌文件。。。 -m 參數一定不對,應該是管理節點IP纔是。

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

使用CloudStack4.11.0 中間也出來過這個問題。不過這幾次都添加成功了。

對我來說這是一個巨坑。。。管理節點配置cloudbr0一定要在安裝cloudstack之前!!!應該說是初始化管理節點management數據之前,計算節點配置cloudbr0可以在安裝設置agent之後,但是一定要配置。。。。要先安裝好net-tools工具包。。。才能設置cloudbr0 和 ens33 然後重啓network,沒有安裝net-tools仍然會出現-m localhost
並不是。管理節點並不是必須設置橋接文件,只是在管理節點安裝完成後查看一下全局設置,看一下全局設置的host 如果是localhost,修改成管理節點IP 即可。。。

準備實驗環境。。。沒有單獨主機。就用VMware workstations來使用虛擬機做實驗了。。。VMware版本12.5
系統 CentOS7 本次實驗把管理節點和計算節點佈置在一臺虛擬主機之上了。二者分離差不太多。可能會在文末再寫一段不再同一個主機上怎麼部署。

經過多次測試。。。建議安裝4.13.1版本.系統模板選擇4.11.3。。。

http://download.cloudstack.org/centos/7/4.12/
http://download.cloudstack.org/systemvm/4.11/systemvmtemplate-4.11.2-kvm.qcow2.bz2

一,安裝CentOS7

1.下載系統鏡像 http://mirrors.aliyun.com/centos/7/isos/x86_64/阿里雲的下載地址。
2.編輯虛擬機設備 網絡橋接模式 4G 內存(分配更多更好) 2個處理器(更多更好) 開啓CPU虛擬化
虛擬化IntelVT-x或AMD-v
3. 選擇最小安裝。安裝過程設置網絡連接。
網絡連接
開啓網絡連接並設置 主機名 如allinone.cloud.feng cloud.feng 可以看成一個域名
開啓網絡並設置主機名
設置時區 Asia/Shanghai。這個也不是必須的。
設置時區

二,安裝完成後。可進行一些基本設置。

系統安裝完畢 可以 yum -y upgrade 升級一下軟件包
1.關閉防火牆並禁止開機啓動。主要是可能阻止nfs 服務器的運行訪問

systemctl disable firewalld
systemctl stop firewalld

2.設置 Selinux爲permissive模式
編輯 /etc/selinux/config 文件 將SELINUX值設爲permissive

vi /etc/selinux/config
SELINUX=permissive

設置完成後要重啓才能生效 reboot
想要立即生效可使用命令 setenforce permissive

3.設置靜態IP。這裏坑了我一下。。。要先安裝 net-tools 工具,然後再設置。官方建議是安裝bridge-utils工具包。我試了一下,只安裝bridge-utils包,不安裝net-tools然後設置cloudbr0作爲網卡的橋接文件,添加主機時會出錯。。。一個讓我深惡痛絕的 -m localhost。。。
先安裝 epel*

yum -y install epel*
yum -y install net-tools

安裝完成可先查看一下 當前網橋。可以看到就是默認的網卡

route -n

網橋

編輯網卡橋接文件 cloudbr0

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

內容如下,根據自己實際IP修改

TYPE=Bridge
BOOTPROTO=none
DEVICE=cloudbr0
ONBOOT=yes
IPADDR=192.168.199.93
NETMASK=255.255.255.0
GATEWAY=192.168.199.1
STP=yes

設置網卡文件 我的是 ens33

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

修改或添加如下內容。

BOOTPROTO="none"
ONBOOT="yes"
BRIDGE=cloudbr0

這樣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="0ffad9c6-4d9b-4813-b9f7-e67aad7383fa"
DEVICE="ens33"
ONBOOT="yes"
BRIDGE=cloudbr0

重新啓動網絡服務

systemctl restart network

再次查看網橋,應當發現有了變化
修改後的網橋

這裏cloudbr0 設置的有問題,使用虛擬機測試時一切正常,當真正使用真實主機遠程連接配置時,設置後連接直接斷開了,具體設置還需要再看。

4.設置dns服務器。 不同機器情況可能不同。 這裏使用公網的dns服務器
修改 /etc/resolv.conf文件

vi	/etc/resolv.conf

加上

nameserver	8.8.8.8
nameserver 	8.8.4.4

保存完成可以 ping 一下百度 ping www.baidu.com 應該會根據www.baidu.com解析出一個IP

5.設置主機名,一般來說需要修改兩個地方。
修改 /etc/hostname

vi /etc/hostname

設置爲

allinone.cloud.feng

修改 /etc/hosts

vi /etc/hosts

加上一句

192.168.199.93	allinone.cloud.feng

192.168.199.93 是設置的靜態IP,一般設置完成不會立即生效。需要重啓。 reboot
重啓完成 查看主機名

hostname --fqdn

如果返回

allinone.cloud.feng

表示修改 主機名成功。

三,安裝必備軟件。

1.安裝 epel, EPEL 是yum的一個軟件源,裏面包含了許多基本源裏沒有的軟件了 這個上一步已經安裝過了 yum -y install epel*
安裝完成重新創建 本地倉庫緩存 yum clean all && yum makecache
有時候CentOS7 x86_64 系統默認是已安裝 EPEL 的,不過卻是未啓用狀態,所以安裝後還要啓用epel 一般來說 安裝 epel* 之後 不用特意執行下面的代碼 就已經啓用了 EPEL

yum install -y yum-utils && yum-config-manager --enable epel

2.安裝vim。 這個不是必須的,只是爲了編輯文件更方便。

yum -y install vim

3.安裝時間同步模塊 ntp。 一般來說現在的 CentOS已經安裝過 chronyd的,作用和ntp基本是一樣的?應該不用再安裝 ntp。
如果要使用ntp,那就要先停止chronyd 服務,並禁止開機自啓

systemctl disable chronyd
systemctl stop chronyd

一定要確保 chronyd停止纔可以啓動 ntp 不然會衝突
安裝ntp

yum -y install ntp

設置爲開機自啓並啓動

systemctl enable ntpd
systemctl start ntpd

4.安裝nfs 服務。CloudStack實驗部署使用nfs就夠了。

CloudStack使用了兩種網絡存儲。一種是主存儲,主存儲用於存放虛擬機硬盤文件。主存儲也可使用本地存儲,並非必需使用網絡存儲。二級存儲用於存放虛擬機模板/快照/ISO文件,二級存儲只能使用網絡存儲。

Primary storage:一級存儲與 cluster 關聯,它爲該 cluster 中的主機的全部虛擬機提供磁盤卷。一個 cluster 至少有一個一級存儲,且在部署時位置要臨近主機以提供高性能。
Secondary storage:二級存儲與 zone 關聯,它存儲模板文件,ISO 鏡像和磁盤卷快照。
首先,可以爲虛擬機掛載兩塊新硬盤。
掛載一塊硬盤
添加後 查看磁盤狀態 有兩塊新增硬盤 /dev/sdb /dev/sdc

fdisk -l

兩塊硬盤未掛載
格式化硬盤

mkfs.ext4 /dev/sdb
mkfs.ext4 /dev/sdc

創建掛載點

mkdir -p /export/primary
mkdir -p /export/secondary

開始掛載 將/dev/sdb掛載到 /export/primary目錄 /dev/sdc掛載到 /export/secondary。
/etc/fstab文件表示的是開機掛載, mount -a命令立即掛載/etc/fstab 文件中內容。

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

查看當前磁盤狀態
掛載後磁盤狀態
掛載新硬盤並不是必須的。只是爲了看上去直觀一點。。。但是兩個目錄是必須創建的。
主存儲是可以 設置成本地存儲的,因此當主存儲和二級存儲不放在一個主機上時。主存儲可以不必安裝設置nfs。 只用編輯共享文件目錄。然後WEBUI 設置主存儲時 選擇 ShareMountPoint協議 即可。

安裝 nfs

yum -y install nfs-utils

編輯共享文件目錄

vim /etc/exports

添加如下內容

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

修改nfs的配置文件 /etc/sysconfig/nfs

vim /etc/sysconfig/nfs

在文件末尾添加或者將這幾句的註釋去掉

LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020

RQUOTAD_PORT=875 原配置文件似乎沒有

編輯/etc/idmapd.conf中的域設置是未註釋的,並設置如下:Domain = cloud.feng

vim /etc/idmapd.conf
Domain = cloud.feng

啓動nfs服務

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

啓動完成可以查看。一下本機的共享

showmount -e allinone.cloud.feng

本機共享

nfs想要正常使用一般來說要開放端口,讓防火牆不攔截,但是這裏爲了方便把防火牆關了。如果不想關閉防火牆可以設置開放端口https://blog.csdn.net/dandanfengyun/article/details/105202321

5.數據庫的安裝。Centos7不能直接安裝MySQL,可以使用mariadb代替,至於MySQL怎麼安裝,可以百度。。。

安裝 mariadb

yum -y install mariadb-server mariadb

設置開機啓動

systemctl enable mariadb

編輯配置文件 /etc/my.ini

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'

據說 max_connections 應該等於管理節點個數 * 350

啓動mariadb 服務

systemctl start mariadb

可以執行一下數據庫安全 按提示操作就好。

mysql_secure_installation

如果上一步執行了,可能已經設置了密碼
設置root密碼進入數據庫操作界面

mysqladmin -uroot password 123456
mysql -uroot -p123456

刪除掉空用戶

delete from mysql.user where user='';

然後退出數據庫

exit

設置root用戶遠程訪問權限

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

6.MySQL連接器安裝 mysql-connector-python
這一步不是必要的,因爲該包是management的依賴包,沒有單獨安裝的話的話在安裝cloudstack-management時會安裝該包。但是有個前提,那就是 安裝過 epel 並且啓用,參見上文,不然解析出不來該依賴包如何安裝
mariadb可以看做MySQL的分支,因此連接器是可以使用MySQL的。
如果epel* 未安裝或者未啓用,解析依賴關係時就會出錯。

Error: Package: cloudstack-management-4.11.0.0-1.el7.centos.x86_64 (/cloudstack-management-4.11.0.0-1.el7.centos.x86_64)
           Requires: mysql-connector-python
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest

安裝過程
創建文件/etc/yum.repos.d/mysql.repo

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

內容如下:

[mysql-connectors-community]
name=MySQL Community connectors
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/$releasever/$basearch/
enabled=1
gpgcheck=1

從MySQL導入GPG公鑰:

rpm --import http://repo.mysql.com/RPM-GPG-KEY-mysql

安裝mysql連接器

yum -y install mysql-connector-python

7.配置CloudStack包存儲庫
ApacheCloudStack官方版本是源代碼。因此,沒有“官方”二進制文件可用。使用社區提供的yum存儲庫之一。此外,這個示例假設有一個4.11CloudStack安裝版本–根據需要替換版本。

新建cloudstack.repo文件並編輯

vi /etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/centos7/4.11/
enabled=1
gpgcheck=0

安裝 epel vim ntp nfs mariadb*

四,安裝CloudStack。

一.管理節點 management

yum -y install cloudstack-management

如果我們這麼做,將會從上一步中設置的包存儲庫中選擇合適的版本安裝,一般是4.11.3。如果想要安裝指定版本,如4.11.0可以下載到本地安裝主要需要三個文件 management agent common
http://cloudstack.apt-get.eu/centos7/4.11/

1.下載到本地後安裝

yum -y install cloudstack-common-4.11.0.0-1.el7.centos.x86_64.rpm cloudstack-management-4.11.0.0-1.el7.centos.x86_64.rpm 

如果是計算節點是Xenserver 主機需要
下載一個vhd-util http://download.cloudstack.org/tools/vhd-util 放到
/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/目錄

2.數據庫初始化

cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:123456

數據庫初始化
3.啓動Management服務

cloudstack-setup-management

如果servlet容器是Tomcat7,則必須使用參數–tomcat7 比如CloudStack4.10版本,啓動cloudstack-setup-management --tomcat7

4.還需要安裝一個KVM模板 根據計算節點 的 虛擬控制程序決定,常見的kvm Xenserver等等。。。這裏使用的kvm
CloudStack通過一系列系統虛擬機提供功能,如訪問虛擬機控制檯,如提供各類網絡服務,以及管理輔助存儲的中的各類資源。

可以通過網絡安裝

/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.0-kvm.qcow2.bz2  \
-h kvm -F

如果覺得速度過慢可以下載到本地安裝

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

-m 指定的就是二級存儲的目錄。要把該模板安裝到二級存儲中。由於我們使用的是本地磁盤然後用nfs共享,所以可以直接使用。如果不在本地,要先把改目錄掛載到本地,安裝完成後再卸載。

二.計算節點agent 安裝設置

yum -y install cloudstack-agent

將會從上一步中設置的包存儲庫中選擇合適的版本安裝,一般是4.11.3。如果想要安裝指定版本,如4.11.0可以下載到本地安裝
1.本地安裝

 yum -y install cloudstack-common-4.11.0.0-1.el7.centos.x86_64.rpm cloudstack-agent-4.11.0.0-1.el7.centos.x86_64.rpm  

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

這裏tcp_port="16059"或者是"16509"都是可以的。沒什麼影響

配置/etc/sysconfig/libvirtd文件

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

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

3)重啓libvirtd 並設置爲開機自啓

systemctl restart libvirtd
systemctl enable libvirtd

4)檢查

lsmod | grep kvm

lsmod| grep kvm
如果沒有 可能就是CPU虛擬化沒有開

3.日誌文件查看
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 

五,進行基本配置

安裝完成 可以嘗試進行一下基本設置
先查看管理節點日誌

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

打開一個瀏覽器 訪問 http://managerIP:8080/client/
比如 http://192.168.199.93:8080/client/
可以選擇簡體中文。。。美滋滋
輸入賬號密碼 初始化賬號 admin 密碼 password
登錄後選擇繼續執行基本安裝,跟着界面說明一步一步來就可以

添加資源域
添加資源域
添加提供點
添加提供點
添加來賓網絡
來賓網絡
集羣選擇 kvm
添加集羣
添加主機 就是一個計算節點。。這裏計算節點和管理節點同一個主機
添加主機
添加主存儲
添加主存儲
添加二級存儲
繼續 後查看 管理節點日誌文件。。。
一般看到如下日誌,基本代表成功

2020-03-27 18:40:39,041 DEBUG [c.c.u.s.SSHCmdHelper] (qtp1644443712-13:ctx-9e6a500b ctx-792cd6e4) (logid:dd4f3a9f) SSH command: cloudstack-setup-agent  -m 192.168.199.93 -z 1 -p 1 -c 1 -g c30c6113-3cd1-3ce6-b62f-aae3bc6bd028 -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!

如果不幸看到 -m localhost 那大概率這次添加失敗了。。。
如果成功會看到
成功設置雲
點擊啓動即可
然後點擊基礎架構即可看到剛配置的雲
基礎架構

六,我覺最坑的幾個點。

嘗試部署了n多遍,中間有的成功,有的不成功,疑惑非常。。。最討厭看到的的就是

2020-03-24 05:17:01,169 DEBUG [c.c.u.s.SSHCmdHelper] (qtp1644443712-15:ctx-bacde7e2 ctx-d77ec991) (logid:d754755e) Executing cmd: cloudstack-setup-agent  -m localhost -z 1 -p 1 -c 1 -g e2aa0a07-271e-3e5e-8246-bddf881c1dd0 -a --pubNic=cloudbr0 --prvNic=cloudbr0 --guestNic=cloudbr0 --hypervisor=kvm

一旦出現localhost。基本代表失敗。。。但是我又不明白爲什麼會是localhost 這裏應該是管理節點的ip纔對。。。

經過好多次的實驗。感覺問題好像出在了設置靜態IP上。。。這感覺沒什麼道理。但是確實好像是這樣的,因爲修改了之後,成功好多次,沒有再再見到localhost了。。。
又出錯了。。。在這裏踩了好多坑了。似乎設置網卡文件一定要在 安裝cloudstack之前。。。
簡單來說,要設置ens33 的網卡橋接文件 cloudbr0 首先要安裝 net-tools

yum -y install net-tools

再編輯cloudbr0文件

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

然後再設置 ens33

BRIDGE=cloudbr0

最後重啓網絡

systemctl restart network

如果先編輯cloudbr0 和 ens33 ,然後安裝net-tools 再重啓network,應該也是可行的。

如果沒有安裝 net-tools 直接設置cloudbr0 和 ens33 也是可以當做靜態IP來使用的,但是每次添加主機時就會出錯。。。這個錯誤,我真的服了。感覺沒什麼道理,但卻是好像是這樣解決的。。。

計算節點和管理節點的安裝在不同主機上。基本步驟和安裝在一個主機上類似。
不同的地方大概有
IP 和主機名
nfs 共享點的設置 一般管理節點可以添加一個二級存儲,計算節點可以添加主存儲
計算節點不用 安裝 mariadb
管理節點安裝 management 計算節點安裝 agent
其他的類似。。。

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