安装虚拟机(桥接模式)传送门
至少一台支持并启用硬件虚拟化的计算机
CentOS 7.7 x86_64 ISO百度网盘下载
一个/ 24网络,其网关位于xxx.xxx.xxx.1,该网络上不应有DHCP,并且任何运行CloudStack的计算机都不会具有动态地址。再次,这是为了简单起见。
lsmod | grep kvm
此时如果你没开网,那就先做完步骤2.2(2.2的第一步也要用yum,也先暂且放一放)再回来运行这条命令
yum -y update:升级所有包,改变软件设置和系统设置,系统版本内核都升级
yum -y upgrade:升级所有包,不改变软件设置和系统设置,系统版本升级,内核不改变
参考传送门
yum -y upgrade
没网就先执行下面的联网步骤
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执行了
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就对了
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
参考传送门
需要关闭SELinux,保证cloustack正常工作
permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用
参考传送门
setenforce 0
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
getenforce
网络时间协议
安装NTP来保持云服务器中所有时钟同步,默认的是格林威治时间
centod 7可用chronyd代替ntpd,但本教程还是按照官网用了ntpd
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
将机器配置为使用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 # 关闭完整性检查
网络文件系统,Network File System
一种使用于分散式文件协定,功能是通过网络让不同的机器、不同的操作系统能够分享个人数据,让应用程序通过网络可以访问位于服务器磁盘中的数据
参考传送门配置将对主存储和辅助存储都使用NFS
yum -y install nfs-utils
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
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
rpcbind是一个RPC服务,主要是在nfs共享时候负责通知客户端服务器的nfs端口号的。简单理解rpc就是一个中介服务。
systemctl enable rpcbind
systemctl enable nfs
systemctl start rpcbind
systemctl start nfs
showmount -e srvr1.cloud.priv
解决可能出现的bug3:数据库配置问题传送门
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
在2020.10.16时安装是5.6.49版本,在2020.10.19时安装是5.6.50版本。
说这个有什么用呢?因为在步骤3.2遇到了坑
yum -y install mysql-server
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'
systemctl enable mysqld
systemctl start mysqld
安装Python MySQL连接器
在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
yum -y install cloudstack-management
下载可能会比较慢,建议官网下载了之后进行本地安装
alternatives --config java
之前提到的数据库版本问题会在这里出现错误
假如你执意用mysql8,我没找到解决方法,如果找到了还请告诉我一声怎么做的呀~
cloudstack-setup-databases cloud:password@localhost --deploy-as=root
看到successfully字样你就对了
如果servlet容器是Tomcat7,则必须使用参数–tomcat7
cloudstack-setup-management
官网不顾网速死活的方法
/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
老规矩本地下载
EPEL (Extra Packages for Enterprise Linux)是基于Fedora的一个项目,为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS和Scientific Linux.
参考传送门
yum -y install epel-release
yum -y install cloudstack-agent
本地安装
配置KVM的两个不同部分:libvirt和QEMU
(1)kvm负责cpu虚拟化+内存虚拟化,实现了cpu和内存的虚拟化,但kvm不能模拟其他设备;
(2)qemu是模拟IO设备(网卡,磁盘),kvm加上qemu之后就能实现真正意义上服务器虚拟化。因为用到了上面两个东西,所以一般都称之为qemu-kvm。
(3)libvirt则是调用kvm虚拟化技术的接口用于管理的,用libvirt管理方便,直接用qemu-kvm的接口太繁琐。
KVM、libvirt和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:在虚拟主机上有很多个虚拟机的时候,需要指定每个虚拟机的端口,否则将会很乱。
参考传送门
vi /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
vi /etc/sysconfig/libvirtd
# 取消注释下面这一行
LIBVIRTD_ARGS="--listen"
systemctl restart libvirtd
看看你的KVM在不在
lsmod | grep kvm
这里需要注意的是:
(1)添加主机那一步的IP
(2)创建系统VM那一步失败的可能原因在于你的虚拟机硬件配置
传送门