cloudstack部署
参考文档
https://blog.csdn.net/u012124304/article/details/80960504#Mysql_37
cloudstack的rpm包下载地址
http://download.cloudstack.org/centos/
环境部署规划,
虚拟化:esxi 6.7
操作系统版本:centos 6.9
cloudstack版本:4.9.3.0
python版本:2.6
|
主机名 |
IP地址 |
配置 |
用途 |
|
node1 |
172.16.103.2 |
16vcpu,32Gb内存,16G精简配置硬盘 |
cloudstack控制节点,安装数据库,和控制节点的web控制台,同时也作为计算节点存在 |
|
node2 |
172.16.103.3 |
4vcpu,4G内存,16G精简配置,300G精简配置硬盘,100G精简配置 |
模拟存储节点,安装nfs包,对外提供nfs的存储服务,16G用于安装操作系统,300G用于主存储,100G用户二级存储 |
|
node3 |
172.16.103.4 |
16vcpu,32Gb内存,16G精简配置硬盘 |
纯的计算节点,为cloudstack提供计算资源 |
1,配置ntp服务器和数据库服务器
关闭selinux和防火墙,重启
vi /etc/selinux/config
chkconfig iptables off
修改hosts
vi /etc/hosts
172.16.103.2 node1
172.16.103.3 node2
172.16.103.4 node3
安装ntp服务
yum install ntp -y
service ntpd start
chkconfig ntpd on
安装mysql
yum -y install mysql mysql-server
service mysqld start
chkconfig --add mysqld
chkconfig mysqld on
修改mysql中root用户的密码为root
mysql
mysql> use mysql;
mysql> set password for root@localhost = password('root');
2,安装管理端和服务端的rpm包
cloudstack主要的包
cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm #agent包。添加计算节点的时候,计算节点上需要安装的包
cloudstack-common-4.9.3.0-1.el6.x86_64.rpm #common包,应该是主程序包
cloudstack-management-4.9.3.0-1.el6.x86_64.rpm #管理端的包
cloudstack-usage-4.9.3.0-1.el6.x86_64.rpm #计费用量包,本次项目不安装
mysql-connector-python-2.1.3-1.el6.x86_64.rpm #cloudstack安装所需要的mysql的python连接器,需要自行去mysql官网下载对应系统版本的即可
libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
libvirt-lock-sanlock-0.10.2-62.el6.x86_64.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
sanlock-2.8-3.el6.x86_64.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
sanlock-lib-2.8-3.el6.x86_64.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
augeas-1.0.0-10.el6.x86_64.rpm #安装libvirt所需要的依赖包,需要自行上网下载,通过rpm -ivh 安装,必要是可以强制安装,加上--force --nodeps参数
jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64 #添加计算节点的需要安装的依赖包
systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2 #系统vm文件
将以上rpm包上传到/root目录下,然后使用yum localinstall 安装
先安装mysql的python连接器包
rpm -ivh mysql-connector-python-2.1.3-1.el6.x86_64.rpm
使用yum localinstall 安装cloudstack包
yum localinstall cloudstack-management-4.9.3.0-1.el6.x86_64.rpm cloudstack-common-4.9.3.0-1.el6.x86_64.rpm -y
初始化数据库
cloudstack-setup-databases cloud:cloud@localhost --deploy-as=root:root
参数解析:
cloud:cloud@localhost :其中cloud:cloud是cloudstack在mysql数据库中创建的账户和密码,localhost是mysql数据库的地址,因为我们装在本机上,所以是localhost,如果mysql数据库在另外一台机器上,则需改为该机器的IP或域名
–deploy-as=root:root :这个参数的值root:root填的是数据库的root用户名和密码
执行这个命令会在MySql数据库上创建一个cloud的用户,并使用这个用户创建一个cloud数据库。出现以下信息则表明cluodstack的数据库初始化成功:

时间比较久,耐心等待。
初始化cloudstack管理服务器
cloudstack-setup-management

使用浏览器访问,地址为[host_ipaddress]:8080/client,默认的用户名和密码为admin/password,首次登陆和首次使用最好走一遍下面的向导

3,配置该主机为计算节点。
配置为计算节点需要安装cloudstack-agent包和cloudstack-common包,而在这之前还需要安装libvirt和qemu,cloudstack对KVM虚拟化层的操作实际上都是libvirt和qemu来完成的,安装libvirt和qemu需要安装相关的依赖包,需要的依赖包如下
libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm
libvirt-lock-sanlock-0.10.2-62.el6.x86_64.rpm
sanlock-2.8-3.el6.x86_64.rpm
sanlock-lib-2.8-3.el6.x86_64.rpm
augeas-1.0.0-10.el6.x86_64.rpm
这5个包在centos的系统安装镜像里面没有,需要自行上网搜索下载,下面安装这几个rpm包
rpm -ivh libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm
rpm -ivh sanlock-lib-2.8-3.el6.x86_64.rpm
rpm -ivh sanlock-2.8-3.el6.x86_64.rpm
rpm -ivh augeas-1.0.0-10.el6.x86_64.rpm --force --nodeps
安装libvirt和qemu
yum install libvirt* qemu* -y
安装cloudstack-agent包和cloudstack-common包,同时安装cloudstack-usage包,如果是其他纯计算节点,可以不安装cloudstack-usage包,在安装这些包之前还需要安装一个依赖包,这个依赖包可能在centos的系统镜像里面也没有
rpm -ivh jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64.rpm
yum localinstall cloudstack-common-4.9.3.0-1.el6.x86_64.rpm cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm
启动相关服务
service cloudstack-agent start
查看服务器状态
service cloudstack-agent status

发现服务器为cloudstack-agent dead but subsys locked状态,修复该错误,开启宿主机的虚拟化支持,在vmware workstation设编辑虚拟机设置选择CPU,勾选虚拟化引擎

修改配置文件
vi /etc/cloudstack/agent/agent.properties
private.network.device=eth0
public.network.device=eth0
这里主要修改的网桥设备,如果使用本地网卡作为网桥的话就写ifconfig看到的本地网卡的名字即可
重新启动服务
service cloudstack-agent restart
查看服务状态
service cloudstack-agent status

4,配置存储节点
关闭该节点的selinux和iptables,挂载系统镜像,安装nfs包
yum install nfs-utils rpcbind -y
设置开机启动
chkconfig nfs on
chkconfig rpcbind on
建立data目录
mkdir -p /data
mkdir primary
mkdir secondary
添加两块磁盘,将磁盘分区格式化之后挂载到/data/primary和/data/secondary 目录,并写入fstab文件,实现开机自动挂载
编辑nfs的配置文件
vi /etc/exports
/data/primary *(rw,sync)
/data/secondary *(rw,sync)
/data/primary为把该目录共享出去,*代表所有网络的主机可以连接该共享,(rw,sync) rw为权限,可读可写,sync代表数据同步写入NFS服务器端的硬盘中。也可以用async,async是大数据时使用,是先写到缓存区,再写到磁盘里。
设置权限
chown -R nfsnobody:nfsnobody /data
重启相关服务
service rpcbind restart
service nfs restart
查看nfs共享的目录

5,创建系统vm
在管理节点上创建被挂载的二级存储目录/data/secondary,然后将上面nfs服务器的secondary目录挂载的此目录。
mkdir -p /data/secondary
mount -t nfs 172.16.103.3:/data/secondary /data/secondary/
同时写入fstab文件,实现开机自动挂载
vi /etc/fstab
172.16.103.3:/data/secondary /data/secondary ext4 defaults 0 0
上传系统vm文件到/data/secondary目录
解压缩系统vm文件
bunzip2 systemvm64template-4.10-4.10.0.0-kvm.qcow2.bz2
安装系统vm
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /data/secondary/ -f /data/secondary/systemvm64template-4.10-4.10.0.0-kvm.qcow2 -h kvm -F

6,图形化操作














注意看系统的vm是状态,

如果代理状态不是up的话,可以尝试重启一下资源域
如果是在esxi虚拟化下做此实验的话,需要在esxi虚拟化平台中启动混杂模式,具体操作是网络,选择节点桥接的网络,启用混杂模式,然后重启cloudstack的资源域即可。
7,添加一个计算节点
计算节点安装好操作系统,挂载系统镜像为yum源,关闭selinux和iptables,注意在vmware workstation设编辑虚拟机设置选择CPU,勾选虚拟化引擎

编辑hosts文件
vi /etc/hosts
172.16.103.4 node3
上传相关的程序包和依赖包到/root目录
augeas-1.0.0-10.el6.x86_64.rpm
cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm
cloudstack-common-4.9.3.0-1.el6.x86_64.rpm
jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64.rpm
libvirt-java-javadoc-0.4.9-1.el6.noarch.rpm
sanlock-2.8-3.el6.x86_64.rpm
sanlock-lib-2.8-3.el6.x86_64.rpm
安装安装libvirt和qemu的依赖包
rpm -ivh sanlock-lib-2.8-3.el6.x86_64.rpm
rpm -ivh sanlock-2.8-3.el6.x86_64.rpm
rpm -ivh augeas-1.0.0-10.el6.x86_64.rpm --force --nodeps
安装libvirt和qemu,cloudstack对KVM虚拟化层的操作实际上都是libvirt和qemu来完成的
yum install libvirt* qemu*
安装cloudstack-agent包和cloudstack-common包的依赖包
yum install java-gcj-compat
rpm -ivh jakarta-commons-daemon-jsvc-1.0.1-8.9.el6.x86_64.rpm
安装cloudstack-agent包和cloudstack-common包
yum localinstall cloudstack-agent-4.9.3.0-1.el6.x86_64.rpm cloudstack-common-4.9.3.0-1.el6.x86_64.rpm
编辑cloudstack-agent的配置文件
vi /etc/cloudstack/agent/agent.properties
private.network.device=eth0
public.network.device=eth0
这里主要修改的网桥设备,如果使用本地网卡作为网桥的话就写ifconfig看到的本地网卡的名字即可
开启cloudstack-agent服务
service cloudstack-agent start
查看cloudstack-agent服务的运行状态
service cloudstack-agent status

图形化操作,添加计算节点

8,默认情况下的cloudstack控制台上主存储中显示的容量为可分配的容量,由于虚拟化平台有一个存储超配的概念,所以默认情况下这里显示的是可分配的容量,默认情况下可分配的容量是实际容量的2倍(下图中显示的容量为实际容量,是本人修改做全局配置之后的容量),为了能够显示实际容量需要在全局配置中更改相关的参数,需要更改的参数为storage.overprovisioning.factor(默认这个值为2)修为该1即可,修改之后要重启cloudstack控制台的服务。


9,添加iso镜像
由于是内网环境,需要在nfs上搭建一个httpd服务,用于发布系统发iso镜像包,目前版本无法支持在web端自由上传iso镜像,所以需要搭建模拟环境
安装httpd服务
yum install httpd -y
编辑httpd.conf配置文件,将默认的html目录更改为主存储的目录
cd /etc/httpd/conf
备份默认的配置文件
mv httpd.conf httpd.conf.bak
将原配置文件中的内容去掉注释行导入到新配置文件
cat httpd.conf.bak |grep -v '#' > httpd.conf
vi httpd.conf
DocumentRoot "/data/primary" #此处修改为主存储挂载的目录
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory "/data/primary"> #此处修改为主存储挂载的目录
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
重启http服务
service httpd restart
将win2008的系统镜像和centos7.3的系统镜像上传至/data/primary目录并且将win的镜像名字修改为win08r2.iso,centos系统镜像名字修改为centos1611every.iso
创建index.html文件,写入上面的系统镜像的下载地址
vi /data/primary/index.html
http://172.16.103.3/win08r2.iso
<p>
http://172.16.103.3/centos1611every.iso
</p>
在cloudstack平台添加iso



添加之后查看状态一直处于Connection refused状态,百度得知需要修改全局配置中
secstorage.allowed.internal.sites的配置,默认情况下,不允许连接任何地址,需要将这里配置成我们的httpd的网络地址,注意,经过我的多次测试,这里不能写IP地址,写了IP地址后重启了控制台依然还会出现connection refused的情况,所以所需要的填写的一个网络,例如我们的httpd服务在172.16.103.2,那么这里就需要填写172.16.103.0/24
填写完毕之后,重启控制台机器,重启不能够使用restart参数,需要在控制节点(node1)上执行以下操作
service cloudstack-management stop
service cloudstack-management start
执行完start命令之后要确保8080端口打开之后才可以访问控制台
netstat -nutpl |grep 8080

配置了以上全局配置之后可以看到镜像处于downloaded状态了

10,模板制作
首先使用上面的ISO镜像安装好操作系统,然后将安装好的系统进行优化,最后制作成系统模板。
centos模板制作
安装好的centos系统需要执行的操作,首先是网络配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
仅保留上面的配置项,其他项均删除
删除udev绑定
rm -f /etc/udev/rules.d/70-persistent-net.rules
删除历史命令
history -c
其实还可以执行更多的优化操作例如,删除日志,安装一些需要的软件之类的。
然后关机,等待cloudstack控制台上centos实例的状态为stopped状态之后在创建模板如下图

创建模板
点击实例名

点击查看卷

点击卷名名称

点击创建模板

输入自定义的名称和说明,选择对应的操作系统,勾选公用,点击确定即可创建模板,模板创建成功之后即可使用模板快速创建虚拟机。

windows主机创建模板的流程根上述大致相同,都是首先执行一些系统优化的操作,不同之处在于有些低版本的windows系统可能需要额外添加一些支持虚拟化的驱动(主要是磁盘的驱动),例如virtio-win.iso之类的,最后执行windows封装命令即可。系统封装的具体操作如下
在C:\Windows\System32\Sysprep目录下,运行sysprep.exe,选择进入系统全新体验,关机,点确定即可。

制作模板的过程根上述制作centos模板的过程类似,都是选择卷,制作模板,需要注意的是执行关机之后也要得到cloudstack控制上对应实例的状态处于stopped之后再执行制作模板的操作
cloudstack部署的更多相关文章
- cloudstack ---部署的架构
cloudstack跟KVM一起部署的架构 下图是CloudStack跟kvm一起部署的架构: 在每个kvm的宿主机上都需要部署agent程序. cloudstack跟vsphere一起部署的架构 下 ...
- 虚拟化平台cloudstack(3)——安装(下)
登录时用户名和密码错误 默认账号密码 admin/password 管理节点安装好后,初始化数据库,完了使用admin和password登陆提示用户名密码错误,查看日志: Fail to genera ...
- 四大主流云平台对比--CloudStack, Eucalyptus, vCloud Director和OpenStack。
我迟早可能都要进入的领域,提前温习... 还有KVM,ESXI,API,XEN之间的术语和关系,也要心中有数.. ~~~~~~~~~~~~~~~~~~~ 云计算在如今的IT界一直是一个最热门的话题,鉴 ...
- Cloudstack
1.cloudstack介绍 一个开源具有高可用性及扩展性的云计算平台,Cloudstack是一个开源的云操作系统: cloudstack支持管理大部分主流的hypervisors,如:VMware, ...
- Cloudstack介绍(一)
云计算的出现 基本上,云计算只是一种把 IT 资源当作服务来提供的手段.几乎所有 IT 资源都可以作为云服务来提供:应用程序.计算能力.存储容量.联网.编程工具,以至于通信服务和协作工具. 云计算最早 ...
- OpenStack、CloudStack、Eucalyptus和vCloud Director四大主流云平台怎么选?
软件产品开发公司Altoros Systems的IT基础设施设计师Vadim Truksha在美国<网络世界>上发表一篇文章,详细对比了CloudStack.Eucalyptus.vClo ...
- cloudstack-4.1.5版本最全入门笔记【2022】
cloudstack简介 CloudStack是一个开源的具有高可用性及扩展性的云计算平台.目前Cloudstack支持管理大部分主流的hypervisors,如KVM,XenServer,VMwar ...
- 快速部署简单私有云CloudStack(上)
前言: 亲身用了大半年,没出过重大毛病,也就是服务挂了,跟服务器也没啥关系.如果想更深入学习cloudstack可以试试高级网络,我是一直用的简单网络(扁平网络). 由来:CloudStack的前身是 ...
- Centos7快速部署CloudStack服务器
OS:centos7 server:172.16.13.159 client:172.16.13.156 1.下载要用到的安装包 在client上: wget http://download.clou ...
随机推荐
- jenkins自动构建前端项目(window,vue)
我们把一个多人协作的vue前端项目发布服务器,一般要经过以下步骤: git更新最新的代码 构建项目 把构建后的代码上传到服务器 如果用jenkins来构建的话,只需要点击一次构建按钮,就可以自动完成以 ...
- 完美解决JavaIO流报错 java.io.FileNotFoundException: F:\ (系统找不到指定的路径。)
完美解决JavaIO流报错 java.io.FileNotFoundException: F:\ (系统找不到指定的路径.) 错误原因 读出文件的路径需要有被拷贝的文件名,否则无法解析地址 源代码(用 ...
- Wannafly挑战赛23F-计数【原根,矩阵树定理,拉格朗日插值】
正题 题目链接:https://ac.nowcoder.com/acm/contest/161/F 题目大意 给出\(n\)个点的一张图,求它的所有生成树中权值和为\(k\)的倍数的个数.输出答案对\ ...
- P1912-[NOI2009]诗人小G【四边形不等式,单调队列】
正题 题目链接:https://www.luogu.com.cn/problem/P1912 题目大意 给出\(n\)个字符串,把这些字符串依次用空格(算一个长度)连接分成若干段,若一段长度为\(x\ ...
- pandas 基础命令
参考链接:https://github.com/rmpbastos/data_science/blob/master/_0014_Boost_your_Data_Analysis_with_Panda ...
- keepalived 安装和配置解析
Keepalived的特性 配置文件简单:配置文件比较简单,可通过简单配置实现高可用功能 稳定性强:keepalived是一个类似于layer3, 4 & 7交换机制的软件,具 ...
- requirejs的加载原理 - 场景1. 定义一个require依赖a模块
我们学习一个新的技术,熟练的使用之后,就应该去探索它的原理.这篇文章我们来探索下requirejs的原理. 从4个场景来探索requirejs的原理 场景1. 定义一个require依赖b模块 场景2 ...
- python日志配置及调用
0.日志基础操作 import logging logging.basicConfig( #1.日志输出的位置,终端和文件 filename='access.log', #,不指定默认打到终端上 #2 ...
- hmac和socketserver
一,hmac 验证客户端的合法性 hmac,检测客户端是否合法,不依赖登录认证 server import os,socket,hmac sk=socket.socket() sk.bind(('12 ...
- SpringBoot-MVC自动配置原理
SpringBoot对SpringMVC做了哪些配置,如何扩展,如何定制? 文档地址 :https://docs.spring.io/spring-boot/docs/2.2.5.RELEASE/re ...