CentOS7下搭建CloudStack4.10.0云平台

一篇学习性质的文章,关于CloudStack怎么实现这些功能一概不了解。只是跟着他人博客学着搭建一下。如有侵权,立删。 建议(使用4.11.0 更好,4.10.0 添加主机经常失败,不知是不是个人问题)
http://docs.cloudstack.apache.org/projects/cloudstack-installation/en/4.9/qig.html#environment

https://www.cnblogs.com/sss4/p/10619350.html

https://blog.csdn.net/albenxie/article/details/80973674

https://www.cnblogs.com/wangmuchen/p/11215304.html
https://cloud.tencent.com/developer/article/1411396
https://wenku.baidu.com/view/94b9e377a31614791711cc7931b765ce05087abc.html

一、准备工作

1. 安装CentOS系统

使用VMwareWorkststions设置两个CentOS7的虚拟机。CentOS7镜像下载地址CentOS-7-x86_64-DVD-1908.iso

一台作为管理节点 manager 用于管理云平台。建议分配

  • 20G硬盘
  • 3G 内存(2G也可)
  • 2个处理器 开启虚拟化Intel VT
  • 桥接模式(使用比较方便,与所在主机使用用一个网段,可能引发IP冲突问题,但是一般自己做些小实验应该没问题)

另一台作为受控节点 agent 存放镜像虚拟机等。

  • 20G硬盘
  • 4G 内存(3G也可) 受控节点才是为用户提供虚拟计算服务的
  • 2个处理器 开启虚拟化Intel VT
  • 桥接模式

CentOS7下搭建CloudStack4.10.0云平台_第1张图片
安装过程就略过了。基本上设置一下root密码,选择一下自动分配空间即可。注,在图形界面中最好也将网络连接,默认是未连接的。
CentOS7下搭建CloudStack4.10.0云平台_第2张图片
可以再打开的界面中设置主机名 管理节点可设置为 manager 受控节点可设置为agent
CentOS7下搭建CloudStack4.10.0云平台_第3张图片

2 设置静态IP 设置主机名和DNS服务。

如果图形界面时未开启网络。搜索一下如何解决吧
dhclient

ip addr 	# 查看网络
dhclient 网卡
1,设置静态IP

设置静态IP不是必要的。但是我之前用的虚拟机重启后IP总是变动。所以就设置一下了。。。
查看网络设置文件夹

ls /etc/sysconfig/network-scripts

可以查看到ip地址和网卡名(我的是)。然后编辑网卡的配置文件
CentOS7下搭建CloudStack4.10.0云平台_第4张图片

vi ifcfg-网卡名

注,BOOTPROTO设置为静态
IPADDR表示要设置的本机IP地址,
NETMASK 子网掩码
GATEWAY 网关

如manager 节点修改为

BOOTPROTO=static
IPADDR=192.168.199.101
NETMASK=255.255.255.0
GATEWAY=192.168.199.1
ONBOOT=yes

agent节点IPADDR修改为192.168.199.102
设置完成保存退出,重启网卡

systemctl restart network

CentOS7下搭建CloudStack4.10.0云平台_第5张图片

2,修改主机名。

查看主机名

hostname --fqdn

修改主机名
将管理节点主机设为manager受控节点设置为agent即可

vi /ets/hostname

在打开的文件中输入自己的主机名即可。

3,将管理节点和受控节点的IP地址和主机名添加进/etc/hosts
vi /etc/hosts
192.168.199.101	manager
192.168.199.102	agent

CentOS7下搭建CloudStack4.10.0云平台_第6张图片
设置DNS服务。好像没什么太大必要。使用该DNS服务器解析不在/etc/hosts中的主机名。
编辑 /etc/resolv.conf文件设置为

nameserver 8.8.8.8
nameserver 8.8.4.4

测试联通
agent主机测试联通manager

ping manager

manager主机测试联通agent

ping agent

测试联通外网 www.baidu.com # 这里是要设置/etc/resolv.conf才能ping通,或者将百度的ip 域名写入 /etc/hosts文件

二、开始进行安装。

操作过多 就不放截图了。。。 不加注明 表示manager和agent都需要进行改操作

1, 设置SELINUX

服务器上的SELinux会拦截CloudStack的一些命令,导致CloudStack操作失败,因此启动CloudStack前需要对SELinux进行设置。

setenforce 0
vi /etc/selinux/config

修改
SELINUX=permissive

以上修改需重启服务器才能生效,为使设置立即生效可使用下边的命令

setenforce permissive
2,关闭防火墙,简单粗暴

关闭防火墙并设置开机不会自动启动

systemctl stop firewalld.service
systemctl disable firewalld.service
3,安装epel yum源 并进行源配置
yum -y install epel*

安装wget

yum -y install wget

备份源

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

安装阿里源

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

然后我们新建cloudstack.repo文件并编辑

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

添加一下内容 实验使用的是CentOS7系统CloudStack版本是4.10,因此baseurl这里是http://cloudstack.apt-get.eu/centos7/4.10/ CentOS版本和CloudStack版本不同可自行更改
网络源

[cloudstack]

name=cloudstack

baseurl=http://cloudstack.apt-get.eu/centos7/4.10/

enabled=1

gpgcheck=0

配置完成可以安装一个vim测试一下

yum -y install vim
4,安装ntp服务 保证主从时间同步。

(使用VMware测试时 最好不要安装好后克隆。)ntpd 十分重要。。。如果未安装或者服务未启动。。。有可能添加主机时产生意想不到的错误。。。

yum -y install ntp

启动服务并设置开机自启

systemctl start ntpd.service
systemctl enable ntpd.service

这里有可能开机自启会和一个名为chronyd 的服务自启动冲突,可以选择关闭chronyd 的开机自启

systemctl disable chronyd.service
5,安装nfs服务。 并挂载nfs

CloudStack使用了两种网络存储。一种是主存储,主存储用于存放虚拟机硬盘文件。主存储也可使用本地存储,并非必需使用网络存储。二级存储用于存放虚拟机模板/快照/ISO文件,二级存储只能使用网络存储。

Primary storage:一级存储与 cluster 关联,它为该 cluster 中的主机的全部虚拟机提供磁盘卷。一个 cluster 至少有一个一级存储,且在部署时位置要临近主机以提供高性能。
Secondary storage:二级存储与 zone 关联,它存储模板文件,ISO 镜像和磁盘卷快照。

网络文件系统能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
这里manager和agent稍有不同。。。分开来写

配置NFS提供两个不同的挂载点。通过编辑/etc/exports文件即可简单实现。两个挂载点分别在manager节点和agent节点,agent节点上是主存储,manager节点上是二级存储。

(1)manager

安装 nfs 服务

yum -y install nfs-utils

挂载一个新硬盘到 /export/secondary目录

创建 /export/secondary目录

mkdir -p /export/secondary

manager的 /export/secondary作为二级存储,用于存储模板文件,ISO 镜像和磁盘卷快照。

向manager主机添加一块硬盘然后挂载到/export/secondary作为二级存储

  • 查看未加硬盘时状态
df -h
fdisk -l

df -h 查看空间使用情况
fdisk -l 查看硬盘分配情况
CentOS7下搭建CloudStack4.10.0云平台_第7张图片
添加新硬盘。最好在关机情况下添加然后重启manager虚拟机
CentOS7下搭建CloudStack4.10.0云平台_第8张图片
再次查看硬盘情况。发现多了一个 /dev/sdb 的硬盘。
CentOS7下搭建CloudStack4.10.0云平台_第9张图片
格式化硬盘 执行过程输入y

mkfs.ext4 /dev/sdb

然后将这块硬盘挂载到 /export/secondary
注,给自己解释一下命令是什么意思
第一行表示将 /dev/sdb /export/secondary ext4 defaults 0 0这一句话添加到/etc/fstab 文件中
第二行表示 挂载 fstab 中的所有文件系统

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

查看完成后状态
CentOS7下搭建CloudStack4.10.0云平台_第10张图片

挂载完成后 开始nfs的相关内容
编辑/etc/exports文件

vim /etc/exports

添加下面内容

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

重新加载exports文件

exportfs -a

打开NFS配置文件

vim /etc/sysconfig/nfs

使以下配置生效 注: RQUOTAD_PORT=875需自己加入

LOCKD_TCPPORT=32803

LOCKD_UDPPORT=32769

MOUNTD_PORT=892

RQUOTAD_PORT=875

STATD_PORT=662

STATD_OUTGOING_PORT=2020

如果防火墙未关闭。 此时还是关闭了吧,CentOS7使用iptables配置防火墙策略的话要停掉firewalld,a安装iptables 在配置。。。这个
如果防火墙已经关掉了 再修改重启iptables服务了。

vim /etc/sysconfig/iptables

添加以下内容

-A INPUT -m state --state NEW -p udp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 111 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 2049 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 32803 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 32769 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 892 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 875 -j ACCEPT
-A INPUT -m state --state NEW -p tcp --dport 662 -j ACCEPT
-A INPUT -m state --state NEW -p udp --dport 662 -j ACCEPT

重启iptables服务 现在应该是 firewalld

service iptables restart

开启nfs服务并设置 开机自启动

systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs
(2)agent

与manager操作类似 ,但是挂载的是主存储点。

安装 nfs 服务

yum -y install nfs-utils

为agent 节点也添加一块硬盘。

创建 /export/primary目录

mkdir -p /export/primary

格式化硬盘

fdisk -l
mkfs.ext4 /dev/sdb

挂载

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

编辑/etc/exports文件

vim /etc/exports

添加下面内容

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

重新加载exportfs文件

exportfs -a

打开NFS配置文件

vim /etc/sysconfig/nfs

使以下配置生效

LOCKD_TCPPORT=32803

LOCKD_UDPPORT=32769

MOUNTD_PORT=892

RQUOTAD_PORT=875

STATD_PORT=662

STATD_OUTGOING_PORT=2020

启动nfs服务并设置开机自启

systemctl start rpcbind
systemctl enable rpcbind
systemctl start nfs
systemctl enable nfs
(3)测试 和挂载

manager 查看是否可访问agent

 showmount -e agent

agent 查看是否可访问 manager

showmount -e manager

agent访问
agent 节点 挂载二级存储到 /opt 目录

mount -t nfs manager:/export/secondary /opt

CentOS7下搭建CloudStack4.10.0云平台_第11张图片

6,CloudStack管理节点manager搭建

在manager节点上操作,安装管理节点。

1,安装数据库 并进行相应设置

安装 数据库mariadb因为没有mysql的版权 无法直接安装mysql要下载相应的mysql rpm包才能安装。。mariadb和mysql效果一样。

 yum install mariadb-server mariadb

设置开机启动

systemctl enable mariadb

设置数据库配置 /etc/my.cnf文件

vim /etc/my.cnf

使以下内容生效 要放在[mysqld] 模块下
max_connections 最大连接数 据说设为 受控节点数量*350

innodb_rollback_on_timeout=1

innodb_lock_wait_timeout=600

max_connections=350

log-bin=mysql-bin

binlog-format = 'ROW'

启动服务器

systemctl start mariadb

设置mysql密码删除空用户 我设置的是123456

mysqladmin -uroot password 123456
mysql -uroot -p123456

删除空用户

delete from mysql.user where user='';

给 root用户授权 可以远程访问数据库

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

安装。管理之前已经设置过CloudStack的网络源,会安装网络源指定的版本。 不成功就再次安装一次。
如果速度太慢可以下载到到本地安装 yum -y localinstall

yum -y install cloudstack-management cloudstack-common

安装过程可能有警告
下载一个vhd-util http://download.cloudstack.org/tools/vhd-util 然后放到/usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/目录

3,Cloudstack数据库初始化
cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:123456

CentOS7下搭建CloudStack4.10.0云平台_第12张图片

4,启动Management服务

如果servlet容器是Tomcat7,则必须使用参数–tomcat7。

cloudstack-setup-management --tomcat7

这个看安装的CloudStack是怎么样的

查看cloudstack-management 运行状态

systemctl status cloudstack-management

这时候就可以从浏览器输入http://managerIP:8080/client/查看web控制面板了 我的是 http://192.168.199.101:8080/client/
CentOS7下搭建CloudStack4.10.0云平台_第13张图片
默认用户名是 admin 密码是 password 不过此时模板镜像管理之类的都没装,所以不能进行什么操作。

5,安装KVM模板

CloudStack通过一系列系统虚拟机提供功能,如访问虚拟机控制台,如提供各类网络服务,以及管理辅助存储的中的各类资源。

该步骤会获取系统虚拟机模板,用于云平台引导后系统虚拟机的部署。
然后需要下载系统虚拟机模板,并把这些模板部署于刚才创建的辅助存储中;管理服务器包含一个脚本可以正确的操作这些系统虚拟机模板:

选择和CloudStack 版本相同的模板进行安装。

/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt \
-m /export/secondary \
-u http://cloudstack.apt-get.eu/systemvm/4.10/systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2 \
-h kvm -F

或者可以先将,模板文件下载到本地,然后再使用脚本文件进行操作。

cd /root/
wget http://cloudstack.apt-get.eu/systemvm/4.10/systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2

下载完成后cloudstack自带的一个脚本来导入模板执行以下命令

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

安装完成后应该不用重启 cloudstack-management 服务的。重启一下也没关系. 重新启动应该比较慢

systemctl restart cloudstack-management
7,CloudStack受控节点agent搭建
1,安装Agent
yum -y install cloudstack-agent cloudstack-common
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

配置/etc/sysconfig/libvirtd文件
当管理节点添加此主机时,这个tcp_port = “16059"会自动变成16509,还有 LIBVIRTD_ARGS=”-1",这些都是cloudstack改变的。无须再手动改它!!

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

3)重启libvirtd 并设置为开机自启

systemctl restart libvirtd
systemctl enable libvirtd

4)检查

lsmod | grep kvm

验证libvirtd述
如果没有结果执行

modprobe kvm
modprobe kvm_intel

如果不是管理节点的主机要作为计算节点添加。需要自己设置网桥文件

agent会使用网桥,默认cloudbr0(这个需要自己创建,4.10版本如果管理节点计算节点是一个主机,添加主机时会自动创建,但是4.11就不会自动创建了。 而且一般不会把管理节点和计算节点当做一个主机。还是自己创建比较好)
查看已有网桥 一般是virbr0

brctl show

安装网络管理工具

yum -y install net-tools

停掉已有网桥

ifconfig virbr0 down

删除该网桥

brctl delbr virbr0

创建桥接网卡配置文件

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

加入以下内容

TYPE=Bridge
BOOTPROTO=static
DEVICE=cloudbr0
IPV6INIT=no
ONBOOT=yes
IPADDR=192.168.0.92
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
STP=yes

修改使用的网卡

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

在末尾添加一行 之前设置的IPADDR NETMASK GATEDWAY可以删除,并设置BOOTPROTO=none

BRIDGE=cloudbr0

重启网络服务

systemctl restart network

此时应该就可以通过WEB添加主机了。。。下面的不是必要的。

这一步不是必要的。。。编辑agent配置文件

vi /etc/cloudstack/agent/agent.properties

使以下设置生效,注,这是控制节点manager的IP

host=192.168.199.101

初始化cloudstack-agent

cloudstack-setup-agent

一路回车就可以。完成后可以发现文件有了变化

4.10版本的cloudstack 我尝试添加主机时总是失败。。。唉。如果管理节点也作为计算节点时倒是可以添加成功。原因应该是

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

cloudstack-setup-agent -m localhost 的-m参数明显是错误的。。。不应该是localhost。应该是要添加的主机IP。至于为什么添加主机时会出现这样的错。我也是无奈。。。解决不了啊。
似乎是版本问题(我要骂人了。。。cloudstack4.11.0参数就没问题。。。就这我试了一个星期。),似乎4.11的话计算节点与管理节点分开 如果选在继续执行基本安装。。。参数也会有问题。选择我以前使用过,然后自己添加资源域参数 似乎没问题(但是也不确定。。。)

2020-03-22 07:03:51,984 DEBUG [c.c.u.s.SSHCmdHelper] (qtp1644443712-19:ctx-adfb6aab ctx-bb08539e) (logid:3c44bc11) SSH command: cloudstack-setup-agent  -m 192.168.0.95 -z 1 -p 1 -c 1 -g 5d081189-f447-38c4-b95f-fd13d92bb18a -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!

这个参数才是对的嘛。。。好气。尽管标题是4.10,但是CentOS7安装时安装4.11就好,安装步骤是一样的。。。

添加成功后刚开始可能显示二级存储存储空间为0。应该是没加载出来吧。等个一段时间,比较长的一段时间,再看应该就不是0了。

但是4.11版本为什么也会出现 -m localhost的情况呢。。。而且4.11版本出现这个参数后。。主机添加也会失败。0

经过不仔细的验证。。。使用之前构建成功的CloudStack管理节点 WEBUI界面添加新主机时。可以成功进行添加。就是说日志文件 会出现类似 下列的参数。。。

2020-03-22 07:03:51,984 DEBUG [c.c.u.s.SSHCmdHelper] (qtp1644443712-19:ctx-adfb6aab ctx-bb08539e) (logid:3c44bc11) SSH command: cloudstack-setup-agent  -m 192.168.0.95 -z 1 -p 1 -c 1 -g 5d081189-f447-38c4-b95f-fd13d92bb18a -a --pubNic=cloudbr0 --prvNic=cloudbr0 --guestNic=cloudbr0 --hypervisor=kvm

-m 参数是正确的。。。这能不能说明其实影响-m参数的只有管理节点 而不是计算节点的的文件配置出错?感觉应该是吧。。。可为什么管理节点一样的安装方式,结果差的有点多呢。。。

8,节点日志查看

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 

有关如何通过Web界面 UI进行设置。后续再记录。

三 CloudStack重装

安装完CloudStack后,我们往往会做各种实验,可能会把系统搞得很乱。想删除的话非常麻烦,因为它们之间往往存在层级关系,必须先从最底层删起。有没简单的办法直接推倒重来呢?答案是有的,最简单只要重置下其数据库即可。

先停掉CloudStack服务:

systemctl stop cloudstack-management

登陆mysql控制台,删除数据库:

mysql -u root -p
drop database cloud;
drop database cloud_usage;
drop database cloudbridge;
quit;

重新导入基础数据:

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

重新导入系统虚机:

重启cloudstack服务

service cloudstack-management start

至此,已经在CentOS系统上部署了一个CloudStack,可以访问http://managerIP:8080/client/ 对CloudStack进行设置了。

关于添加主机失败的问题。大概率是全局设置host的问题。

这个问题也困扰了我好多天。。。
在未创建资源域前,建议检查一下全局设置的host 如果是localhost一定会有问题(除非管理节点计算节点同一个主机)
将其修改为管理节点主机IP 即可
CentOS7下搭建CloudStack4.10.0云平台_第14张图片

CloudStack4.10.0 似乎不支持超配。。。设置后添加虚拟机时报资源不足错误。。。

你可能感兴趣的:(云计算,CloudStack,云计算,CloudStack,centos)