一.條件要求
1.硬件支持虛擬化,並在BIOS中開啟(Inter-VT設為 Enable).
3.環境中的每台主機均為靜態IP地址。
4.cloudstack安裝版本為4.4.1
二.本文章的硬件資源以及基本參數配置如下
1.服務器配置:12T硬盤、96G內存、e52620v2、4塊網卡,共6台機器。
2.此環境中4台kvm計算節點+主存儲(Gluster),1台管理節點+Mysql,一台NFS輔存儲。
3.首先主機名以及對應的ip詳情
- kvm200 br0:192.168.30.200 br1:10.10.0.200 br2:10.11.0.200 br3:10.12.0.200
- kvm201 br0:192.168.30.201 br1:10.10.0.201 br2:10.11.0.201 br3:10.12.0.201
- kvm202 br0:192.168.30.202 br1:10.10.0.202 br2:10.11.0.202 br3:10.12.0.202
- manage br0:192.168.30.203 br1:10.10.0.203 br2:10.11.0.203 br3:10.12.0.203
- kvm204 br0:192.168.30.204 br1:10.10.0.204 br2:10.11.0.204 br3:10.12.0.204
- nfs205 br0:192.168.30.205 br1:10.10.0.205 br2:10.11.0.205 br3:10.12.0.205
4.進行下一步之前,每台主機需要 yum upgrade !!!
三.主機名、網絡配置、SELinux
1.主機名:需要修改三處位置,分別是/etc/sysconfig/network、/etc/hosts、/etc/idmapd.conf
[root@kvm200 ~]# vi /etc/sysconfig/network NETWORKING=yes HOSTNAME=kvm200.test.com
[root@kvm200 ~]# vi /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 10.10.0.200 kvm200.test.com
[root@kvm200 ~]# vi /etc/idmapd.conf [General] #Verbosity = 0 # The following should be set to the local NFSv4 domain name # The default is the host's DNS domain name. Domain = test.com
[root@kvm200 ~]# hostname kvm200.test.com kvm200.test.com
[root@kvm200 ~]# hostname --fqdn kvm200.test.com
如果--fqdn能得到完整域名,即表示主機配置成功。
2.網卡橋接:進入 /etc/sysconfig/network-scripts 目錄中,先依次復制 系統網卡為對應的cloudbr0、1、2、3,如下
[root@kvm200 network-scripts]# cp ifcfg-eth0 ifcfg-cloudbr0 [root@kvm200 network-scripts]# cp ifcfg-eth1 ifcfg-cloudbr1 [root@kvm200 network-scripts]# cp ifcfg-eth2 ifcfg-cloudbr2 [root@kvm200 network-scripts]# cp ifcfg-eth3 ifcfg-cloudbr3
先修改ifcfg-eth*,
[root@kvm200 network-scripts]# vi ifcfg-eth0 DEVICE="eth0" BOOTPROTO="static" ONBOOT="yes" TYPE="Ethernet" BRIDGE="cloudbr0" [root@kvm200 network-scripts]# vi ifcfg-eth1 DEVICE="eth1" BOOTPROTO="static" ONBOOT="yes" TYPE="Ethernet" BRIDGE="cloudbr1" [root@kvm200 network-scripts]# vi ifcfg-eth2 DEVICE="eth2" BOOTPROTO="static" ONBOOT="yes" TYPE="Ethernet" BRIDGE="cloudbr2" [root@kvm200 network-scripts]# vi ifcfg-eth3 DEVICE="eth3" BOOTPROTO="static" ONBOOT="yes" TYPE="Ethernet" BRIDGE="cloudbr3"
再修改對應的橋接網卡ifcfg-cloudbr*
[root@kvm200 network-scripts]# vi ifcfg-cloudbr0 DEVICE="cloudbr0" BOOTPROTO="static" ONBOOT="yes" TYPE="Bridge" IPADDR=192.168.30.200 NETMASK=255.255.255.0 GATEWAY=192.168.30.1 DNS1=114.114.114.114 DNS2=8.8.8.8 [root@kvm200 network-scripts]# vi ifcfg-cloudbr1 DEVICE=cloudbr1 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=10.10.0.200 NETMASK=255.255.0.0 [root@kvm200 network-scripts]# vi ifcfg-cloudbr2 DEVICE=cloudbr2 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=10.11.0.200 NETMASK=255.255.0.0 [root@kvm200 network-scripts]# vi ifcfg-cloudbr3 DEVICE=cloudbr3 TYPE=Bridge ONBOOT=yes BOOTPROTO=static IPADDR=10.12.0.200 NETMASK=255.255.0.0
3.關閉SELinux
[root@kvm200 network-scripts]# vi /etc/sysconfig/selinux # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - SELinux is fully disabled. SELINUX=disabled #將此處設置為permissive或者disable都是可以的。 # SELINUXTYPE= type of policy in use. Possible values are: # targeted - Only targeted network daemons are protected. # strict - Full SELinux protection. SELINUXTYPE=targeted
[root@kvm200 network-scripts]# setenforce 0 #立即生效
其余5台同樣道理,按照主機對應詳情配置主機名、橋接網卡
記得重啟網卡喲,另外想要主機名立即生效的話,可以Ctrl + D 注銷即可。
四.NTP服務器
如果你的server可以連網,並且可以同步時間,這個步驟可以忽略。如果是本地的環境,那則需要有一台NTP服務器,用來同步主機間的時間。
此處將kvm200設置為NTP服務器
[root@kvm200 network-scripts]# vi /etc/ntp.conf # Permit all access over the loopback interface. This could # be tightened as well, but to do so would effect some of # the administrative functions. restrict 127.0.0.1 restrict -6 ::1 restrict 0.0.0.0 mask 0.0.0.0 nomodify notrap noquery restrict 192.168.166.0 mask 255.255.255.0 nomodify # Hosts on local network are less restricted. #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). 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 210.72.145.44 prefer server 127.127.1.0 fudge 127.127.1.0 stratum 8
#圖中紅色部分的字體是新添加的。保存后重啟ntp服務
[root@kvm200 ~]# service ntpd restart
Shutting down ntpd: [ OK ]
Starting ntpd: [ OK ]
其余5台機器全為客戶端,以kvm201為例。修改配置文件並手動同步:
[root@kvm201 ~]# vi /etc/ntp.conf ...... # Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). #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 192.168.30.200 iburst #此處為ntp服務器的IP地址,要求能通信。如果不能通信則是服務器的iptables問題,后續我們將開放iptables端口。
[root@kvm201 ~]# service ntpd restart
Shutting down ntpd: [ OK ]
Starting ntpd: [ OK ]
[root@kvm201 ~]# ntpdate -u 192.168.30.200 #手動同步時間,或者等待系統自動同步也可,但等待時間可能較長,同步機制可谷歌NTP服務器介紹
NTP服務器搭建完成后。基本的環境配置已經完成。下面就是存儲服務器的安裝了(存儲分為主存儲和輔存儲,在此主存儲我們用Gluster群集、輔存儲用NFS)
五.IPtables防火牆設置以及修改掛載文件和創建掛載文件夾
1.修改每台防火牆設置為
[root@kvm200 ~]# iptables -I INPUT 1 -s 10.10.0.0/16 -j ACCEPT [root@kvm200 ~]# iptables -I INPUT 1 -s 10.11.0.0/16 -j ACCEPT [root@kvm200 ~]# iptables -I INPUT 1 -s 10.12.0.0/16 -j ACCEPT [root@kvm200 ~]# iptables -I INPUT 1 -s 192.168.30.0/24 -j ACCEPT [root@kvm200 ~]# service iptables save [root@kvm200 ~]# service iptables restart
2.修改掛載文件:/etc/fstab 在此文件中最后添加兩行(此處建設時已規划好,在后續就使用此文件夾來掛載存儲系統)
[root@kvm200 ~]# vi /etc/fstab 10.12.0.204:/secondary /icq1 nfs defaults 0 0 10.12.0.200:/Mian /primary glusterfs defaults,_netdev 0 0
3.在每台機器上都創建相同的文件夾(供掛載使用,icq1是輔存儲掛載目錄、primary是gluster的掛載目錄,如第2步所示)
[root@kvm200 ~]# mkdir /icq1 /primary
六.存儲服務器
1.主存儲
- 搭建Gluster服務器之前,我們先配置Gluster源,之后去下載安裝包。
[root@kvm200 ~]# cd /etc/yum.repos.d/ [root@kvm200 yum.repos.d]# wget http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/EPEL.repo/glusterfs-epel.repo [root@kvm200 yum.repos.d]# cd ~ [root@kvm200 ~]# wget http://download.fedora.redhat.com/pub/epel/6/x86_64/epel-release-6-5.noarch.rpm [root@kvm200 ~]# rpm -ivh epel-release-latest-6.noarch.rpm [root@kvm200 ~]# yum -y install glusterfs-server
安裝完成之后,下面安裝其它4台客戶端:(注意:其它三台也需要先安裝下面的才可以繼續進行去。主要安裝:glusterfs glusterfs-server glusterfs-fuse三個軟件包)
[root@kvm201 ~]# cd /etc/yum.repos.d/ [root@kvm201 yum.repos.d]# wget -P http://download.gluster.org/pub/gluster/glusterfs/3.7/LATEST/EPEL.repo/glusterfs-epel.repo [root@kvm201 yum.repos.d]# cd ~ [root@kvm201 ~]# wget ftp://ftp.muug.mb.ca/mirror/centos/6.7/extras/x86_64/Packages/epel-release-6-8.noarch.rpm [root@kvm201 ~]# rpm -ivh epel-release-6-8.noarch.rpm [root@kvm201 ~]# yum install glusterfs glusterfs-fuse glusterfs-server
上面的步驟做完后,我們回到kvm200機器上,將它們(200、201、202、203)加入gluster節點,並創建存儲卷:
-
[root@kvm200 ~]# gluster peer probe 10.12.0.201 [root@kvm200 ~]# gluster peer probe 10.12.0.202 [root@kvm200 ~]# gluster peer probe 10.12.0.203 [root@kvm200 ~]# gluster peer probe 10.12.0.204 [root@kvm200 ~]# gluster volume create Mian stripe 2 10.12.0.200:/storage 10.12.0.201:/storage 10.12.0.202:/storage 10.12.0.203:/storage force [root@kvm200 ~]# gluster volume start Mian
(如果加節點時報錯,可能跟防火牆有關,請檢查各個主機的防火牆設置。)
查看狀態:[root@kvm200 ~]# gluster volume status Status of volume: Mian Gluster process TCP Port RDMA Port Online Pid ------------------------------------------------------------------------------ Brick 10.12.0.200:/storage 49152 0 Y 3512 Brick 10.12.0.201:/storage 49152 0 Y 3417 Brick 10.12.0.202:/storage 49152 0 Y 3460 Brick 10.12.0.203:/storage 49152 0 Y 3428 Task Status of Volume Mian ------------------------------------------------------------------------------ There are no active volume tasks [root@kvm200 ~]# gluster peer status Number of Peers: 4 Hostname: 10.12.0.204 Uuid: 23194295-4168-46d5-a0b3-8f06766c58b4 State: Peer in Cluster (Connected) Hostname: 10.12.0.202 Uuid: de10fd85-7b85-4f28-970b-339977a0bcf6 State: Peer in Cluster (Connected) Hostname: 10.12.0.201 Uuid: 0cd18fe2-62dd-457a-9365-a7c2c1c5c4b2 State: Peer in Cluster (Connected) Hostname: 10.12.0.203 Uuid: d160b7c3-89de-4169-b04d-bb18712d75c5 State: Peer in Cluster (Connected)
2.輔存儲(NFS)
輔存儲安裝在kvm204上面,進入到204的系統內:(安裝nfs,創建secondary共享目錄,並修改NFS配置文件)
[root@kvm204 ~]# yum install nfs-utils [root@kvm204 ~]# mkdir /secondary [root@kvm204 ~]# vi /etc/exports /secondary *(rw,async,no_root_squash,no_subtree_check) [root@kvm204 ~]# vi /etc/sysconfig/nfs LOCKD_TCPPORT=32803 LOCKD_UDPPORT=32769 MOUNTD_PORT=892 RQUOTAD_PORT=875 STATD_PORT=662 STATD_OUTGOING_PORT=2020
重啟服務:
[root@kvm204 ~]# service rpcbind restart Stopping rpcbind: [ OK ] Starting rpcbind: [ OK ] [root@kvm204 ~]# service nfs restart Shutting down NFS daemon: [ OK ] Shutting down NFS mountd: [ OK ] Shutting down NFS quotas: [ OK ] Shutting down RPC idmapd: [ OK ] Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS mountd: [ OK ] Starting NFS daemon: [ OK ] Starting RPC idmapd: [ OK ]
3.客戶端掛載文件系統
以上步驟如果沒有出錯的話,現在就是客戶端掛載了,掛載完成之后我們就可以進行最重要的一步,既安裝cloudstack。以下掛載命令需在每台機器上執行:
[root@kvm200 ~]# mount -a [root@kvm200 ~]# mount /dev/mapper/vg1-lv1_root on / type ext4 (rw) proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) tmpfs on /dev/shm type tmpfs (rw) /dev/sda1 on /boot type ext4 (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 10.12.0.200:/Mian on /primary type fuse.glusterfs (rw,default_permissions,allow_other,max_read=131072) 10.12.0.204:/secondary on /icq1 type nfs (rw,vers=4,addr=10.12.0.204,clientaddr=10.12.0.200) nfsd on /proc/fs/nfsd type nfsd (rw)
七.安裝cloudstack
1.進入到192.168.30.203上面。安裝cloudstack-management + mysql
- 先安裝mysql
[root@management ~]# yum -y install mysql-server
修改mysql配置文件(紅色部分為添加的配置文件)
[root@management ~]# vi /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 innodb_rollback_on_timeout=1 innodb_lock_wait_timeout=600 max_connections=350 log-bin=mysql-bin binlog-format = 'ROW'
修改完成后,重啟mysql
[root@management ~]# service mysqld restart
Stopping mysqld: [ OK ]
Starting mysqld: [ OK ]
- 接着安裝management
首先,本環境下載的全是rpm包(在root目錄下),為了統一固定版本。所以后續操作都是本地安裝,除了少量的依賴包會從網絡上下載,如果你去下載cloudstack-repo源,放在/etc/yum.repos.d/文件夾下,也可以安裝特定的版本。
[root@management ~]# yum localinstall cloudstack-cli-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-management-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-awsapi-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-common-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-usage-4.4.1-NONOSS_3.el6.x86_64.rpm
安裝程序執行完成后,需初始化數據庫,通過如下命令和選項完成:(此處注意,如果你的mysql有密碼,下面命令的最后處需這樣寫'--deploy-as=root:密碼',否則插入數據庫會失敗。)
[root@management ~]# cloudstack-setup-databases cloud:password@localhost --deploy-as=root
數據庫創建后,最后一步是配置管理服務器,執行如下命令:
[root@management ~]# cloudstack-setup-management
- 現在來上傳系統虛擬機模板(創建系統VM時必須的,注意:此模板需要和自己的cloudstack版本相對應,不可隨意)
以下文字引自官方:
CloudStack通過一系列系統虛擬機提供功能,如訪問虛擬機控制台,如提供各類網絡服務,以及管理輔助存儲的中的各類資源。該步驟會獲取系統虛擬機模板,用於雲平台引導后系統虛擬機的部署。
然后需要下載系統虛擬機模板,並把這些模板部署於剛才創建的輔助存儲中;管理服務器包含一個腳本可以正確的操作這些系統虛擬機模板:
[root@management ~]# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /icq1 -f /root/systemvm64template-4.4.1-7-kvm.qcow2.bz2 -h kvm -F
里面有些參數需要說明一下:-m 是掛載的輔存儲目錄位置,-f 是系統虛擬機模板的路徑(此處我已放到root目錄下),-h 是表示我們的虛擬化管理類型是kvm,-F 我也不知道這個參數
- 管理節點至此我們安裝完畢。下面進行計算節點的安裝。
2.安裝cloudstack-agent 計算節點
- 先安裝1台kvm(192.168.30.200)已經下載好rpm包,直接yum安裝
[root@kvm200 ~]# yum localinstall cloudstack-agent-4.4.1-NONOSS_3.el6.x86_64.rpm cloudstack-common-4.4.1-NONOSS_3.el6.x86_64.rpm -y
- 安裝完成,我們進行配置KVM(修改3處:/etc/libvirt/qemu.conf、/etc/libvirt/libvirtd.conf、/etc/libvirt/libvirtd.conf)
為了實現動態遷移,libvirt需要監聽使用非加密的TCP連接。還需要關閉libvirts嘗試使用組播DNS進行廣播。這些都是在 /etc/libvirt/libvirtd.conf文件中進行配置。
16509端口是libvirtd監聽端口。
[root@kvm200 ~]# vi /etc/libvirt/qemu.conf vnc_listen="0.0.0.0" [root@kvm200 ~]# vi /etc/libvirt/libvirtd.conf listen_tls = 0 listen_tcp = 1 tcp_port = "16059" auth_tcp = "none" mdns_adv = 0 [root@kvm200 ~]# /etc/sysconfig/libvirtd LIBVIRTD_ARGS="--listen"
- 上面kvm的參數修改完畢后,我們把libvirtd重啟一下
[root@kvm200 ~]# service libvirtd restart
至此,我們的所有在系統內要安裝的軟件以及修改配置文件工作已經完成,現在就可以登陸cloudstack的web界面進行配置區域、添加主機等操作了。
八.Web界面的操作及安裝
1.先登錄界面:瀏覽器訪問 http:10.10.0.203:8080/client后,先點擊”我已熟悉安裝”,別用向導安裝,因為我們的區域類型是高級!
2.進去之后,點擊全局設置,修改三個參數(secstorage.allowed.internal.sites、management.network.cidr、host),值在下面
sites:10.10.0.0/16
host:10.10.0.203 (這個是管理節點的ip)
cidr:10.10.0.0/16 (這個是管理主機以及存儲的網段。)
將上面3個全局參數修改完畢后,需要重啟cloudstack-management使修改生效
[root@management ~]# /etc/init.d/cloudstack-management restart
此時重啟需要等待一分鍾左右,再次訪問web站點,進行下一步的操作。
3.配置區域(點擊基礎架構-->區域‘查看全部'-->添加區域-->高級--Next)
- 名稱:Zone1
- 公共DNS1:114.114.114.114
- 內部DNS1: 8.8.8.8
- 虛擬機管理程序:KVM
- NExt
2.配置物理網絡
- 管理和公用:cloudbr1
- 來賓:cloudbr2
- 存儲:cloudbr3
注意:以上填寫的是單獨流量的走向。管理和公用共用一個網絡br1(10.10.0.0/16),來賓單獨一個網絡br2(10.11.0.0/16),存儲單獨一個網絡br3(10.12.0.0./16).
3.公共通信
- 網關:10.14.0.1
- 掩碼:255.255.0.0
- 起始IP:10.14.0.200
- 截至IP:10.14.200.200
4.提供點
- 名稱:P
- 網關:10.10.0.1
- 掩碼:255.255.0.0
- 起始IP10.10.0.230
- 截至IP:10.10.200.200
5.來賓通信
- VLAN:2-4
6.存儲通信
- 網關:10.12.0.1
- 掩碼:255.255.0.0
- 起始IP:10.12.0.230
- 截至IP:10.12.200.200
7.群集
- 群集名稱:C
8.主機
- 主機名稱:10.10.0.200
- 用戶名:root
- 密碼:***
9.主存儲
- 名稱:Pri
- 協議:SharedMountPoint
- 路徑:/primary
10.輔存儲
- 提供程序:NFS
- 服務器:10.12.0.204
- 路徑:/secondary
- Next 啟動
11.啟動區域
提示:區域已准備就緒,可隨時啟動;請繼續執行下一步驟。點擊Launch zone 。至此cloudstack搭建完成。如果出現無法添加主機或者網絡或者存儲時,請去看日志!請去看日志!請去看日志!
重要的事情說三遍哈。
鑒於官方文檔簡單明了(坑你沒得說)辛苦碼字3小時作此文章,可能有遺漏之處,還請提出,如果轉載,還請注明源地址!
參考:http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/4.5/choosing_deployment_architecture.html