cloudstack安装部署
0 说明
- 百度网盘统一提取码:0818
- 按照官网快速安装指南进行,manegement(管理结点)和agent(计算结点)在同一台虚拟机上(看不懂后半句没关系,搞完你就有点懂了)
- 本文用来记录所遇的坑和解决方案,参考了各路大佬的解决方法
- 英文不好啊,按着翻译对照着看,以下按照官网分配标题进行
- 解释什么的去官网看,这里简单粗暴只写命令
- 一步一步跟着来,默认你懂虚拟机最最基础的操作,比如知道哪些命令在终端写,哪些是写到文件中
1 Prerequisites 先决条件
-
安装虚拟机(桥接模式)👉传送门
-
至少一台支持并启用硬件虚拟化的计算机
-
一个/ 24网络,其网关位于xxx.xxx.xxx.1,该网络上不应有DHCP,并且任何运行CloudStack的计算机都不会具有动态地址。再次,这是为了简单起见。
-
centos网络配置为桥接模式(2.2就是帮你配置的)
2 Environment 环境
2.0 先看看有没有KVM
lsmod | grep kvm
2.1 Operating System 操作系统
此时如果你没开网,那就先做完步骤2.2(2.2的第一步也要用yum,也先暂且放一放)再回来运行这条命令
yum -y update:升级所有包,改变软件设置和系统设置,系统版本内核都升级
yum -y upgrade:升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变
参考👉传送门
yum -y upgrade
2.2 Configuring the network 配置网络
- 安装“brctl”和“net-tools”
没网就先执行下面的联网步骤
yum install bridge-utils net-tools -y
【接下来开始配置桥接网络】 |
解决bug1:网络连接问题👉传送门
- 配置桥
vi /etc/sysconfig/network-scripts/ifcfg-cloudbr0
键入【i】开始编辑ifcfg-cloudbr0
退出:【Esc】→键入【:wq】(注意冒号)
#【ifcfg-cloudbr0】,原本没有这个文件
DEVICE=cloudbr0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPV6INIT=no
IPV6_AUTOCONF=no
DELAY=5
# 此模块以官网指南为例,但需要根据实际情况填写,【】中为提示
# 因此文档中有这些网段的,都要替换成实际的IP
IPADDR=172.16.10.2【和主机同网段的ip地址】
GATEWAY=172.16.10.1【网关xxx.xxx.xxx.1】
NETMASK=255.255.255.0
# 记得删除这些注释
DNS1=8.8.8.8
DNS2=8.8.4.4
STP=yes
USERCTL=no
NM_CONTROLLED=no
- 修改网络配置
vi /etc/sysconfig/network-scripts/ifcfg-eth0
eth0为例,根据实际情况修改文件
比如我的是ens33,那就是vi /etc/sysconfig/network-scripts/ifcfg-ens33,有eth0的地方都换成ens33
#【ifcfg-eth0】
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=cloudbr0
# 【UUID不要改,但要有】
# 【保持和cloudbr0统一,把这个ens33文件里的下面两个改成no】
# IPV6INIT=no
# IPV6_AUTOCONF=no
- 重启网络
解决bug2:systemctl enable network和systemctl restart network报错👉传送门
systemctl enable network
systemctl restart network
- 测试有无网络
ping baidu.com
有网就对了,记得返回去把上面两个yum执行了
2.3 Hostname
- 改名儿hostname
vi /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.10.2 srvr1.cloud.priv
- 重启网络,并看看改名成功了没
systemctl restart network
hostname --fqdn
显示srvr1.cloud.priv就对了
2.4 SELinux
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
参考👉传送门
需要关闭SELinux,保证cloustack正常工作
- 关闭SELinux防火墙(不用重启)。设置SELinux为宽容状态(permissive)
permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用
参考👉传送门
setenforce 0
- 为了保证SELiinux处于permissive模式
vi /etc/selinux/config
# 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 - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
- 查看当前selinux状态
getenforce
显示Permissive就对了
2.5 NTP
网络时间协议
安装NTP来保持云服务器中所有时钟同步,默认的是格林威治时间
centod 7可用chronyd代替ntpd,但本教程还是按照官网用了ntpd
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
2.6 Configuring the CloudStack Package Repository 配置CloudStack软件包存储库
将机器配置为使用CloudStack软件包存储库
vi /etc/yum.repos.d/cloudstack.repo
# 原本没有这个文件
[cloudstack]
name=cloudstack # yum仓库名字
baseurl=http://download.cloudstack.org/centos/$releasever/4.14/ # 仓库的位置
enabled=1 # 开启yum功能
gpgcheck=0 # 关闭完整性检查
2.7 NFS
网络文件系统,Network File System
一种使用于分散式文件协定,功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据
参考👉传送门配置将对主存储和辅助存储都使用NFS
- 安装nfs-utils
yum -y install nfs-utils
- 配置NFS以提供两个不同的共享
vi /etc/exports
# 原本没有这个文件
/export/secondary *(rw,async,no_root_squash,no_subtree_check)
/export/primary *(rw,async,no_root_squash,no_subtree_check)
- 创建目录
mkdir用法参考👉传送门
mkdir -p /export/primary
mkdir /export/secondary
- 域设置
CentOS 7.x发行版默认使用NFSv4。
NFSv4要求所有客户端上的域设置都匹配
vi /etc/idmapd.conf
# 取消注释并修改
Domain = cloud.priv
- /etc/sysconfig/nfs的底部添加配置值(或仅取消注释并设置它们)
vi /etc/sysconfig/nfs
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
RQUOTAD_PORT=875
STATD_PORT=662
STATD_OUTGOING_PORT=2020
- 禁用防火墙
firewall和SELiinux的区别👉传送门
systemctl stop firewalld
systemctl disable firewalld
- 将nfs服务配置为在启动时启动并在主机上实际启动它
rpcbind是一个RPC服务,主要是在nfs共享时候负责通知客户端服务器的nfs端口号的。简单理解rpc就是一个中介服务。
systemctl enable rpcbind
systemctl enable nfs
systemctl start rpcbind
systemctl start nfs
- 查看共享目录
showmount -e srvr1.cloud.priv
3 Management Server Installation 管理服务器安装
3.1 Database Installation and Configuration 数据库安装和配置
解决可能出现的bug3:数据库配置问题👉传送门
- 添加一个MySQL社区存储库
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
- 安装mysql
- 此时安装的是5.6.49版本
在2020.10.16时安装是5.6.49版本,在2020.10.19时安装是5.6.50版本。
说这个有什么用呢?因为在步骤3.2遇到了坑
yum -y install mysql-server
- 更改/etc/my.cnf,在[mysqld]部分中添加
vi /etc/my.cnf
# 对于Ubuntu 16.04和更高版本,开头加上这句:server-id=master-01
innodb_rollback_on_timeout=1
innodb_lock_wait_timeout=600
max_connections=350
log-bin=mysql-bin
binlog-format = 'ROW'
- 启动mysql
systemctl enable mysqld
systemctl start mysqld
3.2 MySQL Connector Installation MySQL连接器安装
安装Python MySQL连接器
- 此时安装的是8.0.21版本
在2020.10.16时安装是8.0.21版本,在2020.10.19时安装是8.0.22版本。
- 假如是8.0.22版本的连接器,会和mysql5.6.50版本相冲突,然后让你安装mysql8.0.22,即使你成功了,后续还会产生问题
应该是mysql80安全性太高的缘故,按照官网操作的话,用mysql56吧
- 未测试5.6.50版本的mysql和8.0.21版本的连接器是否会有冲突
yum -y install mysql-connector-python
3.3 Installiation 安装
- 安装管理服务器
yum -y install cloudstack-management
下载可能会比较慢,建议官网下载了之后进行本地安装
- CloudStack 4.14需要Java 11 JRE。确认Java 11是选定的/活动的Java。
alternatives --config java
- 设置数据库
之前提到的数据库版本问题会在这里出现错误
假如你执意用mysql8,我没找到解决方法,如果找到了还请告诉我一声怎么做的呀~
cloudstack-setup-databases cloud:password@localhost --deploy-as=root
看到successfully字样你就对了
- 设置管理服务器
如果servlet容器是Tomcat7,则必须使用参数–tomcat7
cloudstack-setup-management
3.4 System Template Setup 系统模板设置
官网不顾网速死活的方法
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloudstack.org/systemvm/4.14/systemvmtemplate-4.14.0-kvm.qcow2.bz2 -h kvm -F
4 KVM Setup and Installation KVM设置和安装
4.1 Prerequisites 先决条件
- 同 2
- 由于我们的manegement和agent安装在一台虚拟机上,所以这一步不用管
4.2 Installation 安装
EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.
参考👉传送门
yum -y install epel-release
yum -y install cloudstack-agent
4.3 KVM Configuration KVM配置
配置KVM的两个不同部分:libvirt和QEMU
(1)kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
(2)qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。因为用到了上面两个东西,所以一般都称之为qemu-kvm。
(3)libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐。
KVM、libvirt和qemu的关系👉传送门
4.3.1 QEMU Configuration QEMU配置
vi /etc/libvirt/qemu.conf
VNC (Virtual Network Console)是虚拟网络控制台
# 取消注释下面这一行
vnc_listen=0.0.0.0
说明1:vnclisten 默认绑定127.0.0.1 在配置文件里指定VNC 绑定0.0.0.0IP,就不用在安装kvm虚拟机时指定vnclisten参数了。
说明2:在虚拟主机上有很多个虚拟机的时候,需要指定每个虚拟机的端口,否则将会很乱。
参考👉传送门
4.3.2 Libvirt Configuration Libvirt配置
- 为了进行实时迁移,libvirt必须侦听不安全的TCP连接。关闭libvirts尝试使用多播DNS广告的尝试
vi /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
- 修改/etc/sysconfig/libvirtd
vi /etc/sysconfig/libvirtd
# 取消注释下面这一行
LIBVIRTD_ARGS="--listen"
- 重启libvirt
systemctl restart libvirtd
4.4 KVM configuration complete
看看你的KVM在不在
lsmod | grep kvm
5 Configuration 组态
这里需要注意的是:
(1)添加主机那一步的IP
(2)创建系统VM那一步失败的可能原因在于你的虚拟机硬件配置
5.1 UI Access
- 网址:http://172.16.10.2:8080/client
- 默认用户名:admin
- 默认密码:password
- 第三个框框空着
- 可以选择语言
- 不要跳过新手步骤
5.2 Setting up a Zone 添加资源域
- 名称:Zone1
- DNS1:8.8.8.8
- DNS2:8.8.4.4
- 内部DNS1:8.8.8.8
- 内部DNS2:8.8.4.4
5.3 Pod Configuration
5.3.1 添加提供点
- 名称:Pod1
- 网关:172.16.10.1
- 网络掩码:255.255.255.0
- IP范围:172.16.10.10-172.16.10.20
5.3.2 添加来宾网络
- 网关:172.16.10.1
- 网络掩码:255.255.255.0
- IP范围:172.16.10.30-172.16.10.200
5.4 Cluster
5.4.1 添加群集
- 虚拟机管理程序:KVM
- 名称:Cluster1
5.4.2 添加主机
- 主机名称:172.16.10.2
- 用户名:root
- 密码:【虚拟机root密码】
5.5 Primary Storage 添加主存储
- 名称:Primary1
- 协议:NFS
- 范围:群集
- 服务器:172.16.10.2
- 路径:/export/primary
5.6 Secondary Storage 添加二级存储
- NFS服务器:172.16.10.2
- 提供程序:NFS
- 路径:/export/secondary
6 完成