【大数据实验1】cloudstack安装部署(小白式傻瓜教学)

article/2025/9/10 3:56:04

cloudstack安装部署

  • 0 说明
  • 1 Prerequisites 先决条件
  • 2 Environment 环境
    • 2.0 先看看有没有KVM
    • 2.1 Operating System 操作系统
    • 2.2 Configuring the network 配置网络
    • 2.3 Hostname
    • 2.4 SELinux
    • 2.5 NTP
    • 2.6 Configuring the CloudStack Package Repository 配置CloudStack软件包存储库
    • 2.7 NFS
  • 3 Management Server Installation 管理服务器安装
    • 3.1 Database Installation and Configuration 数据库安装和配置
    • 3.2 MySQL Connector Installation MySQL连接器安装
    • 3.3 Installiation 安装
    • 3.4 System Template Setup 系统模板设置
  • 4 KVM Setup and Installation KVM设置和安装
    • 4.1 Prerequisites 先决条件
    • 4.2 Installation 安装
    • 4.3 KVM Configuration KVM配置
      • 4.3.1 QEMU Configuration QEMU配置
      • 4.3.2 Libvirt Configuration Libvirt配置
    • 4.4 KVM configuration complete
  • 5 Configuration 组态
    • 5.1 UI Access
    • 5.2 Setting up a Zone 添加资源域
    • 5.3 Pod Configuration
      • 5.3.1 添加提供点
      • 5.3.2 添加来宾网络
    • 5.4 Cluster
      • 5.4.1 添加群集
      • 5.4.2 添加主机
    • 5.5 Primary Storage 添加主存储
    • 5.6 Secondary Storage 添加二级存储
  • 6 完成
  • 7 创建实例

0 说明

  • 百度网盘统一提取码:0818
  • 按照官网快速安装指南进行,manegement(管理结点)和agent(计算结点)在同一台虚拟机上(看不懂后半句没关系,搞完你就有点懂了)
  • 本文用来记录所遇的坑和解决方案,参考了各路大佬的解决方法
  • 英文不好啊,按着翻译对照着看,以下按照官网分配标题进行
  • 解释什么的去官网看,这里简单粗暴只写命令
  • 一步一步跟着来,默认你懂虚拟机最最基础的操作,比如知道哪些命令在终端写,哪些是写到文件中

1 Prerequisites 先决条件

  1. 安装虚拟机(桥接模式)👉传送门

  2. 至少一台支持并启用硬件虚拟化的计算机

  3. CentOS 7.7 x86_64 ISO百度网盘下载

  4. 一个/ 24网络,其网关位于xxx.xxx.xxx.1,该网络上不应有DHCP,并且任何运行CloudStack的计算机都不会具有动态地址。再次,这是为了简单起见。

  5. centos网络配置为桥接模式(2.2就是帮你配置的)
    初始配置

2 Environment 环境

2.0 先看看有没有KVM

lsmod | grep 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 配置网络

  1. 安装“brctl”和“net-tools”

没网就先执行下面的联网步骤

yum install bridge-utils net-tools -y

【接下来开始配置桥接网络】

解决bug1:网络连接问题👉传送门

  1. 配置桥
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
  1. 修改网络配置
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
  1. 重启网络

解决bug2:systemctl enable network和systemctl restart network报错👉传送门

systemctl enable network
systemctl restart network
  1. 测试有无网络
ping baidu.com

有网就对了,记得返回去把上面两个yum执行了

2.3 Hostname

  1. 改名儿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
  1. 重启网络,并看看改名成功了没
systemctl restart network
hostname --fqdn

显示srvr1.cloud.priv就对了

2.4 SELinux

安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
参考👉传送门
需要关闭SELinux,保证cloustack正常工作

  1. 关闭SELinux防火墙(不用重启)。设置SELinux为宽容状态(permissive)

permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 SELinux 的 debug 之用
参考👉传送门

setenforce 0
  1. 为了保证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
  1. 查看当前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

  1. 安装nfs-utils
yum -y install nfs-utils
  1. 配置NFS以提供两个不同的共享
vi /etc/exports
# 原本没有这个文件
/export/secondary *(rw,async,no_root_squash,no_subtree_check)
/export/primary *(rw,async,no_root_squash,no_subtree_check)
  1. 创建目录

mkdir用法参考👉传送门

mkdir -p /export/primary
mkdir /export/secondary
  1. 域设置

CentOS 7.x发行版默认使用NFSv4。
NFSv4要求所有客户端上的域设置都匹配

vi /etc/idmapd.conf
# 取消注释并修改
Domain = cloud.priv
  1. /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
  1. 禁用防火墙

firewall和SELiinux的区别👉传送门

systemctl stop firewalld
systemctl disable firewalld
  1. 将nfs服务配置为在启动时启动并在主机上实际启动它

rpcbind是一个RPC服务,主要是在nfs共享时候负责通知客户端服务器的nfs端口号的。简单理解rpc就是一个中介服务。

systemctl enable rpcbind
systemctl enable nfs
systemctl start rpcbind
systemctl start nfs
  1. 查看共享目录
showmount -e srvr1.cloud.priv

查看共享目录

3 Management Server Installation 管理服务器安装

3.1 Database Installation and Configuration 数据库安装和配置

解决可能出现的bug3:数据库配置问题👉传送门

  1. 添加一个MySQL社区存储库
wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm
rpm -ivh mysql-community-release-el7-5.noarch.rpm
  1. 安装mysql
  • 此时安装的是5.6.49版本
    在2020.10.16时安装是5.6.49版本,在2020.10.19时安装是5.6.50版本。
    说这个有什么用呢?因为在步骤3.2遇到了坑
yum -y install mysql-server
  1. 更改/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'
  1. 启动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版本。
  1. 假如是8.0.22版本的连接器,会和mysql5.6.50版本相冲突,然后让你安装mysql8.0.22,即使你成功了,后续还会产生问题

应该是mysql80安全性太高的缘故,按照官网操作的话,用mysql56吧

  1. 未测试5.6.50版本的mysql和8.0.21版本的连接器是否会有冲突
yum -y install mysql-connector-python

3.3 Installiation 安装

  1. 安装管理服务器
yum -y install cloudstack-management

下载可能会比较慢,建议官网下载了之后进行本地安装

  1. CloudStack 4.14需要Java 11 JRE。确认Java 11是选定的/活动的Java。
alternatives --config java
  1. 设置数据库
    之前提到的数据库版本问题会在这里出现错误
    假如你执意用mysql8,我没找到解决方法,如果找到了还请告诉我一声怎么做的呀~
cloudstack-setup-databases cloud:password@localhost --deploy-as=root

看到successfully字样你就对了

  1. 设置管理服务器

如果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配置

  1. 为了进行实时迁移,libvirt必须侦听不安全的TCP连接。关闭libvirts尝试使用多播DNS广告的尝试
vi /etc/libvirt/libvirtd.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv = 0
  1. 修改/etc/sysconfig/libvirtd
vi /etc/sysconfig/libvirtd
# 取消注释下面这一行
LIBVIRTD_ARGS="--listen"
  1. 重启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 完成

过程
成功
配置

配置

7 创建实例

传送门


http://chatgpt.dhexx.cn/article/iGyG4Dpq.shtml

相关文章

Java线程池

目录 一、什么是线程池 二、线程池有哪些好处? ①降低资源的消耗 ②提高响应速度 ③提高线程的可管理能力 三、线程池如何使用 ①创建线程池​编辑 工厂模式: 工厂模式代码实现: ②往线程池当中添加任务 四、Java当中有哪些线程池 ​编辑 ①Executors.newFixedThreadPool …

线程池(一)线程池的基本使用

一、线程池简介 线程池的概念 线程池就是首先创建一些线相衬,它们的集合称为线程池,使用线程池可以很好的提高性能,线程池在系统启动时既创建大量空闲的线程,程序将一个任务传给线程池。线程池就会启动一条线程来执行这个任务&…

线程池介绍及创建线程池的4种方式

1. 什么是线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序 都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。 第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成…

线程池的使用

1.线程池使用场景 java中经常需要用到多线程来处理一些业务,我们非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程,那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险,这…

线程池_线程池详解

1 线程池使用场景? java中经常需要用到多线程来处理一些业务,我们非常不建议单纯使用继承Thread或者实现Runnable接口的方式来创建线程,那样势必有创建及销毁线程耗费资源、线程上下文切换问题。同时创建过多的线程也可能引发资源耗尽的风险&…

Netty 线程池

Netty的线程池有什么样的特性 Java 原生线程池 Java 原生的线程池主要有三种:ThreadPoolExecutor、ScheduledThreadPoolExecutor、ForkJoinPool。 ThreadPoolExecutor 是最古老的类,我们通常说的线程池,也是指这个类。 ScheduledThreadPoo…

Linux —— 线程池

目录 一、什么是线程池 二、线程池的优点 三、线程池的应用 四、实现一个简单的线程池 五、单例模式 1. 饿汉实现方式 2. 懒汉实现方式 3. 单例模式实现线程池(懒汉方式) 六、其他常见的各种锁 一、什么是线程池 线程池是线程的一种使用模式。在…

线程池的实现原理

系统学习性,移步 IT-BLOG 线程池做的工作主要是控制运行的线程数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数超过了最大数量超出数量的线程排队等候,等其他线程执行完毕,再从队列…

java——线程池

一、线程池 线程池可以看做是线程的集合。它的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后 启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕, 再…

java线程池(详解)

线程池介绍 线程池(thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,对线程统一管理。 线程池就是存放线程的池子,池子里存放了很多可以复…

Java线程池详解

本文包含知识点 线程池的使用场景分析线程池的创建及重要参数线程池实现线程复用的原理springboot中使用线程池Callabel与Runnable任务在基于spring体系的业务中正确地关闭线程池实现优先使用运行线程及调整线程数大小的线程池(线程池的优化)在java web项目中慎用Executors以及…

C++线程池

1.基础概念 线程池:一种线程的使用模式,线程过多会带来调度开销,进而影响缓存局部性和整体性。而线程池维护着多个线程,等待监督管理者分配可并行执行的任务。这样避免了在短时间内创建和销毁线程的代价。线程池不仅能够内核的充分…

线程池详解

成功不是将来才有的&#xff0c;而是从决定去做的那一刻起&#xff0c;持续累积而成。 目录 背景 线程池介绍 线程池使用 Executors 线程池如何关闭&#xff1f; 面试题 总结 背景 下面是一段创建线程并运行的代码: for (int i 0; i < 100; i) {new Thread(() -&…

线程池(通俗易懂)

目录 一、什么是线程池 二、创建线程池的方式 三、线程池的七大参数 四、四种拒绝策略 1.AbortPolicy() 2.CallerRunsPolicy() 3.DiscardPolicy() 4.DiscardOldestPolicy() 五、自定义一个线程池 1.场景描述 2.代码实现 一、什么是线程池 线程池其实就是一种多线程处理…

线程池研发学习笔记

线程池研发 线程池 线程池基础 概念介绍 1:什么是线程池 可以直接叙述,也可以对比连接池介绍 线程池其实就是一种多线程处理形式&#xff0c;处理过程中可以将任务添加到队列中&#xff0c;然后在创建线程后自动启动这些任务。这里的线程就是我们前面学过的线程,这里的任务就是…

线程池是什么?线程池(ThreadPoolExecutor)使用详解

点一点&#xff0c;了解更多https://www.csdn.net/ 本篇文章将详细讲解什么是线程池&#xff0c;线程池的参数介绍&#xff0c;线程池的工作流程&#xff0c;使用Executors创建常见的线程池~~~ 目录 点一点&#xff0c;了解更多 文章目录 一、线程池的概念 1.1线程池的目的…

写给小白看的线程池,还有10道面试题

如何搞定20k的面试小抄 为什么要用线程池呢&#xff1f; 下面是一段创建线程并运行的代码: for (int i 0; i < 100; i) {new Thread(() -> {System.out.println("run thread->" Thread.currentThread().getName());userService.updateUser(....);}).start…

线程池详解(通俗易懂超级好)

目标 【理解】线程池基本概念 【理解】线程池工作原理 【掌握】自定义线程池 【应用】java内置线程池 【应用】使用java内置线程池完成综合案例 线程池 线程池基础线程池使用线程池综合案例学员练习线程池总结 概念介绍 什么是线程池为什么使用线程池线程池有哪些优势 什么…

Java 多线程:彻底搞懂线程池

熟悉 Java 多线程编程的同学都知道&#xff0c;当我们线程创建过多时&#xff0c;容易引发内存溢出&#xff0c;因此我们就有必要使用线程池的技术了。 目录 1 线程池的优势 2 线程池的使用 3 线程池的工作原理 4 线程池的参数 4.1 任务队列&#xff08;workQueue&#x…

GridView概述

一、使用GridView以表格形式显示多张图片 GridView用于在界面上按行、列分布的方式来显示多个组件 二、使用GridView 1、java代码 import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.AdapterV…