一篇学习性质的文章,关于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
使用VMwareWorkststions设置两个CentOS7的虚拟机。CentOS7镜像下载地址CentOS-7-x86_64-DVD-1908.iso
一台作为管理节点 manager 用于管理云平台。建议分配
另一台作为受控节点 agent 存放镜像虚拟机等。
安装过程就略过了。基本上设置一下root密码,选择一下自动分配空间即可。注,在图形界面中最好也将网络连接,默认是未连接的。
可以再打开的界面中设置主机名 管理节点可设置为 manager 受控节点可设置为agent
如果图形界面时未开启网络。搜索一下如何解决吧
dhclient
ip addr # 查看网络
dhclient 网卡
设置静态IP不是必要的。但是我之前用的虚拟机重启后IP总是变动。所以就设置一下了。。。
查看网络设置文件夹
ls /etc/sysconfig/network-scripts
可以查看到ip地址和网卡名(我的是)。然后编辑网卡的配置文件
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
查看主机名
hostname --fqdn
修改主机名
将管理节点主机设为manager受控节点设置为agent即可
vi /ets/hostname
在打开的文件中输入自己的主机名即可。
vi /etc/hosts
192.168.199.101 manager
192.168.199.102 agent
设置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都需要进行改操作
服务器上的SELinux会拦截CloudStack的一些命令,导致CloudStack操作失败,因此启动CloudStack前需要对SELinux进行设置。
setenforce 0
vi /etc/selinux/config
修改
SELINUX=permissive
以上修改需重启服务器才能生效,为使设置立即生效可使用下边的命令
setenforce permissive
关闭防火墙并设置开机不会自动启动
systemctl stop firewalld.service
systemctl disable firewalld.service
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
(使用VMware测试时 最好不要安装好后克隆。)ntpd 十分重要。。。如果未安装或者服务未启动。。。有可能添加主机时产生意想不到的错误。。。
yum -y install ntp
启动服务并设置开机自启
systemctl start ntpd.service
systemctl enable ntpd.service
这里有可能开机自启会和一个名为chronyd 的服务自启动冲突,可以选择关闭chronyd 的开机自启
systemctl disable chronyd.service
CloudStack使用了两种网络存储。一种是主存储,主存储用于存放虚拟机硬盘文件。主存储也可使用本地存储,并非必需使用网络存储。二级存储用于存放虚拟机模板/快照/ISO文件,二级存储只能使用网络存储。
Primary storage:一级存储与 cluster 关联,它为该 cluster 中的主机的全部虚拟机提供磁盘卷。一个 cluster 至少有一个一级存储,且在部署时位置要临近主机以提供高性能。
Secondary storage:二级存储与 zone 关联,它存储模板文件,ISO 镜像和磁盘卷快照。
网络文件系统能使使用者访问网络上别处的文件就像在使用自己的计算机一样。
这里manager和agent稍有不同。。。分开来写
配置NFS提供两个不同的挂载点。通过编辑/etc/exports文件即可简单实现。两个挂载点分别在manager节点和agent节点,agent节点上是主存储,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 查看硬盘分配情况
添加新硬盘。最好在关机情况下添加然后重启manager虚拟机
再次查看硬盘情况。发现多了一个 /dev/sdb 的硬盘。
格式化硬盘 执行过程输入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
挂载完成后 开始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
与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
manager 查看是否可访问agent
showmount -e agent
agent 查看是否可访问 manager
showmount -e manager
mount -t nfs manager:/export/secondary /opt
在manager节点上操作,安装管理节点。
安装 数据库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'";
安装。管理之前已经设置过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/目录
cloudstack-setup-databases cloud:123456@localhost --deploy-as=root:123456
如果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/
默认用户名是 admin 密码是 password 不过此时模板镜像管理之类的都没装,所以不能进行什么操作。
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
yum -y install cloudstack-agent cloudstack-common
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
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参数的只有管理节点 而不是计算节点的的文件配置出错?感觉应该是吧。。。可为什么管理节点一样的安装方式,结果差的有点多呢。。。
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服务:
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 如果是localhost一定会有问题(除非管理节点计算节点同一个主机)
将其修改为管理节点主机IP 即可
CloudStack4.10.0 似乎不支持超配。。。设置后添加虚拟机时报资源不足错误。。。