1. 程式人生 > >私有雲平臺CloudStack V4.11安裝和配置連載1

私有雲平臺CloudStack V4.11安裝和配置連載1

解決 是否 應用運維 grep -v 有關 epel yum源 egrep c++ 下載

CloudStack 的安裝和使用

1. CloudStack簡介:

  Apache CloudStack是一種開源軟件,旨在部署和管理大型虛擬機網絡,作為高度可用,高度可擴展的基礎架構即服務(IaaS)雲計算平臺。CloudStack被許多服務提供商用於提供公共雲服務,並由許多公司提供內部(私有)雲產品,或作為混合雲解決方案的一部分。

  CloudStack是一個開箱即用的解決方案,包括大多數組織希望使用IaaS雲的整個“堆棧”功能:計算編排,網絡即服務,用戶和帳戶管理,完整和開放的本機API,資源記帳和一流的用戶界面(UI)。

  CloudStack目前支持最流行的虛擬機管理程序:VMware,KVM,Citrix XenServer,Xen Cloud Platform(XCP),Oracle VM服務器和Microsoft Hyper-V。

  用戶可以使用易於使用的Web界面,命令行工具和/或功能齊全的RESTful API來管理他們的雲。此外,CloudStack還為希望部署混合雲的組織提供與AWS EC2和S3兼容的API

2. Cloudstack 私有雲平臺規劃

機器名 操作系統 軟件版本 IP地址
cloudstack-node5 CentOS 7.4 cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 10.83.32.83
cloudstack-node6 CentOS 7.4 cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 10.83.32.46
cloudstack-node7 CentOS 7.4 cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 10.83.32.47
cloudstack-node8 CentOS 7.4 cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 10.83.32.48
cloudstack-node4 CentOS 7.4 cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 10.83.32.50
cloudstack-node3 CentOS 7.4 cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 10.83.32.49
cloudstack-node2 CentOS 7.4 cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 10.83.32.84
cloudstack-node1 CentOS 7.4 cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 10.83.32.82
cloudstack-management CentOS 7.4 cloudstack-management-4.11.1.0-1.el7.centos.x86_64 mariadb-server-5.5.56-2.el7.x86_64 10.83.32.45
cloudstack-nfs CentOS 7.4 cloudstack-agent-4.11.1.0-1.el7.centos.x86_64 10.83.32.81

3. CloudStack 安裝要求

  • 所有機器的內存不能低於2G,否則無法搭建成功。
  • Hypervisor 所在的主機,要求CPU 和主板支持硬件虛擬化(需要在主板的 BIOS 中設置 Intel-VT 為 enable)
  • 操作系統為64位,Hypervisor 的主機不能有任何正在運行的虛擬機,否則在後續的 add host 操作中會遇到失敗。最佳的建議是 hypervisor 主機上的操作系統為全新安裝,且沒有部署任何其余虛擬機
  • 無論是管理服務器還是 hypervisor所在主機,都需要以 root 登錄進行 CloudStack 組件安裝。
  • Management Server 和 Hypervisor 主機必須是有獨立靜態 IP的主機,並且該網絡段內不要有DHCP服務存在。

4. CloudStack 的安裝步驟描述

  CloudStack+KVM組合其實就是CloudStack-Management服務與CloudStack-Agent的合作,Agent端還有libvirt(虛擬化)這個重要組件。

管理端安裝步驟:

  1. 安裝操作系統
  2. 配置YUM源,安裝cloudstack-management ,mysql-server 組件
  3. 初始化cloudstack的mysql數據庫文件
  4. 掛載二級存儲,導入系統VM模板
  5. 通過cloudstack-setup-management命令完成cloustack管理服務啟動以及防火墻策略配置

agent端安裝步驟:

  1. 安裝操作系統
  2. 配置YUM源,安裝cloudstack-agent組件,安裝libvirt虛擬化組件
  3. 配置libvirt相關配置文件,/etc/libvirt/libvirtd.conf以及/etc/sysconfig/libvirtd

web管理控制臺初始化CloudStack集群:

  配置完成之後,通過cloudstack管理節點的web界面登錄:http://cloudstack-management‘s ip:8080/client
默認用戶名為admin,默認密碼為password 登錄之後進行區域【Zone】的創建即可。

5. Cloudstack 安裝初始化配置

1. 主機名和hosts文件配置

hostnamectl set-hostname cloudstack-node7
[root@cloudstack-node7 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.83.32.83 cloudstack-node5
10.83.32.82 cloudstack-node1
10.83.32.84 cloudstack-node2
10.83.32.49 cloudstack-node3
10.83.32.50 cloudstack-node4
10.83.32.45 cloudstack-management
10.83.32.46 cloudstack-node6
10.83.32.47 cloudstack-node7
10.83.32.48 cloudstack-node8
10.83.32.81 cloudstack-nfs

2. Selinux和Iptables配置

[root@cloudstack-node7 ~]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     disabled - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of disabled.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted
#關閉selinux
systemctl disable firewalld
systemctl stop firewalld
systemctl stop iptables
systemctl disable iptables
#關閉iptables

3. NTP時間服務器配置:

[root@cloudstack-node7 ~]# crontab -l
0 1 * * * /usr/sbin/ntpdate 10.10.0.11 > /dev/null 2>&1

  因為公司有內網的NTP服務器,所以直接使用內網的NTP服務器,每一分鐘同步一次時間。CentOS 7操作系統時間服務器的軟件是Chrony.具體的配置可以參考網址https://www.centos.bz/2018/03/centos-7-chrony-%E8%AE%BE%E7%BD%AE%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%9B%86%E7%BE%A4%E7%B3%BB%E7%BB%9F%E6%97%B6%E9%97%B4%E5%90%8C%E6%AD%A5/

4. yum源配置

[root@cloudstack-node7 ~]# cat /etc/yum.repos.d/cloudstack.repo
[cloudstack]
name=cloudstack
baseurl=http://cloudstack.apt-get.eu/centos/7/4.11/
enabled=1
gpgcheck=0

[root@c1 ~]# vi /etc/yum.repos.d/mysql.repo
[mysql-connectors-community]
name=MySQL Community connectors
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/x86_64/
enabled=1
gpgcheck=1

[root@cloudstack-node5 ~]# cat /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
        http://mirrors.aliyuncs.com/epel/7/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=http://mirrors.aliyun.com/epel/7/$basearch/debug
        http://mirrors.aliyuncs.com/epel/7/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=http://mirrors.aliyun.com/epel/7/SRPMS
        http://mirrors.aliyuncs.com/epel/7/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=0

#一個是cloudstack的yum源,一個是EPEL yum源,一個是mysql-connector-python源,安裝cloudstack-management,它依賴於mysql-connector-python,cloudstack-common,tomcat等其它組件。
5. 網卡綁定設置

centos7  設置br0橋接網卡

[root@cloudstack-node5 yum.repos.d]# cat /etc/sysconfig/network-scripts/ifcfg-br0
TYPE=Bridge
BOOTPROTO=static
NAME=br0
DEVICE=br0
ONBOOT=yes
HOTPLUG=no
DELAY=0
STP=no
IPADDR=10.83.32.45
NETWORK=255.255.255.0
GATEWAY=10.83.32.1
DNS1=10.10.0.5
[root@cloudstack-node5 yum.repos.d]#

[root@cloudstack-node5 yum.repos.d]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BRIDGE=br0
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
HOTPLUG=no
[root@cloudstack-node5 yum.repos.d]#

設置默認路由,必須的

[root@cloudstack-node5 yum.repos.d]# cat /etc/sysconfig/network-scripts/route-br0
0.0.0.0/0 via 10.83.32.1 dev br0
[root@cloudstack-node5 yum.repos.d]#

  CloudStack 4.11版本開始每臺機器都需要設置綁定網卡br0

6. CloudStack-Management 安裝配置

  因為是最小化安裝,所以需要安裝一些依賴組件,同時cloudstack-management管理服務器需要安裝mysql數據庫服務器

yum groupinstall -y "Desktop Platform Development" "Server Platform Development" "Development Tools" "SNMP Support"
yum install gcc gcc-c++ cmake make autoconf libtool-ltdl-devel gd-devel freetype-devel libxml2-devel libjpeg-devel libpng-devel openssl-devel curl-devel bison patch unzip libmcrypt-devel libmhash-devel libevent-devel ncurses-devel mlocate flex sysstat libaio-devel ntp openldap-devel openssl-devel libcurl-devel unzip perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker iotop bzip2* ntpdate wget unzip zip htop vim iftop nc nmap dstat iostat lrzsz screen lftp wget curl sysstat strace lsof telnet tree tcpdump
yum -y install mariadb-server

  配置mysql服務:

[root@cloudstack-node5 ~]# cat /etc/my.cnf|egrep -v "^$|#"
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = ‘ROW‘
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
!includedir /etc/my.cnf.d
[root@cloudstack-node5 ~]#
systemctl start mariadb
systemctl enable mariadb
#啟動mysql服務

  安裝Cloudstack-Management:

#從MySQL導入GPG公鑰:
rpm --import http://repo.mysql.com/RPM-GPG-KEY-mysql
#安裝mysql-connector
yum -y install mysql-connector-python
現在要安裝管理服務器,因為前期配置了cloudstack的yum源倉庫
yum -y install cloudstack-management
安裝了應用程序本身後,我們現在可以設置數據庫,我們將使用以下命令和選項執行此操作:
cloudstack-setup-databases cloud:123456@localhost --deploy-as=root
完成此過程後,您應該會看到“CloudStack已成功初始化數據庫”之類的消息。
既然已經創建了數據庫,我們可以通過發出以下命令來設置管理服務器的最後一步:
cloudstack-setup-management  --tomcat7

  配置二級存儲NFS Server:

yum -y  install rpcbind nfs-utils
vim /etc/exports
mkdir -p /home/export/secrond
/home/export/secrond 10.83.32.0/24(rw,fsid=1,async,no_root_squash,no_subtree_check)

  系統模板設置:
  CloudStack使用許多系統VM來提供訪問虛擬機控制臺,包括Console Proxy VM和Secondary Storage VM。這兩個虛擬機主要提供各種網絡服務以及管理存儲的各個方面的功能。當我們引導您的雲時,此步驟將獲取準備部署的系統映像。
現在我們需要下載系統VM模板並將其部署到我們剛剛掛載的共享。管理服務器包括用於正確操作系統VMs映像的腳本。

cd /software
wget  http://download.cloudstack.org/systemvm/4.11/systemvmtemplate-4.11.1-kvm.qcow2.bz2
#下載虛擬機模板映像文件
mkdir -p /export/secondary/
mount -t nfs -o nolock 10.83.32.81:/home/export/secrond /export/secondary/
vim /etc/rc.d/rc.local
mount -t nfs -o nolock 10.83.32.81:/home/export/secrond /export/secondary/
#掛載NFS存儲
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary/ -f /software/systemvmtemp
late-4.11.1-kvm.qcow2.bz2 -h kvm -F
#導入系統虛擬機模板

  啟動Cloudstack management服務:

systemctl start cloudstack-management

  打開瀏覽器訪問:用戶名/密碼為:admin/password
http://10.83.32.45:8080/client/
技術分享圖片

7. CloudStack-Agent 安裝配置

  一定要保證/mnt目錄沒有被使用,且目錄為空,否則CloudStack無法對其掛載Primary Storage,新建實例,可能會失敗,除非你有多個agent,/mnt已有的數據,請提前保存好
安裝cloudstack-agent,需要cloudstack-common軟件,還有其它附屬軟件包.

cd /software
wget https://download.cloudstack.org/centos7/4.11/cloudstack-agent-4.11.1.0-1.el7.centos.x86_64.rpm
wget https://download.cloudstack.org/centos7/4.11/cloudstack-common-4.11.1.0-1.el7.centos.x86_64.rpm
yum groupinstall "Development Tools" -y
yum remove java-1.8.0-openjdk-devel.x86_64 genisoimage ws-commons-util MySQL-python createrepo
yum install -y java-1.8.0-openjdk-devel.x86_64 genisoimage ws-commons-util MySQL-python createrepo
yum remove qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils
yum install -y qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer bridge-utils
yum localinstall -y cloudstack-agent-4.11.1.0-1.el7.centos.x86_64.rpm cloudstack-common-4.11.1.0-1.el7.centos.x86_64.rpm

  我們需要編輯QEMU VNC配置。編輯/etc/libvirt/qemu.conf並確保以下行存在並取消註釋來完成。

vim /etc/libvirt/qemu.conf
vnc_listen=0.0.0.0
或者也可以使用sed命令完成
sed -i "s#\#vnc_listen = \"0.0.0.0\"#vnc_listen = \"0.0.0.0\"#g" /etc/libvirt/qemu.conf

  為了實時遷移工作,libvirt必須監聽不安全的TCP連接。我們還需要關閉libvirts嘗試使用多播DNS廣告。這兩個設置都在/etc/libvirt/libvirtd.conf中

cat <<EOF >> /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16059"
auth_tcp = "none"
mdns_adv = 0
EOF

  在libvirtd.conf中打開“listen_tcp”是不夠的,我們還要更改參數,我們還需要修改/etc/sysconfig/libvirtd:
取消註釋以下行:

#LIBVIRTD_ARGS="--listen" 修改為
LIBVIRTD_ARGS="--listen"
systemctl enable libvirtd && systemctl restart libvirtd

  libvirtd程序是libvirt的虛擬化管理系統的服務器端守護組件。此守護程序在主機服務器上運行,並為虛擬客戶機執行所需的管理任務。這包括諸如在主機服務器之間啟動,停止和遷移guest虛擬機,配置和操作網絡以及管理存儲以供guest虛擬機使用等活動。
libvirt客戶端庫和實用程序連接到此守護程序以發出任務並收集有關主機系統和guest虛擬機的配置和資源的信息。

  KVM配置完成為了完整起見,您應該檢查KVM是否在您的計算機上運行正常:

[root@cloudstack-node6 ~]# lsmod | grep kvm
kvm_intel             170086  9
kvm                   566340  1 kvm_intel
irqbypass              13503  9 kvm

關於《CloudStack 私有雲平臺的搭建和維護》未完待續,請持續關註

推薦關註我的個人微信公眾號 “雲時代IT運維”,周期性更新最新的應用運維類技術文檔。關註虛擬化和容器技術、CI/CD、自動化運維等最新前沿運維技術和趨勢;

技術分享圖片

私有雲平臺CloudStack V4.11安裝和配置連載1