上一篇博客使用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虛擬化
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
如果沒有 可能就是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
其他的類似。。。