CloudStack 云计算平台框架

article/2025/9/10 3:47:17

前言

CloudStack 和OpenStack 一样都是IaaS层 开源框架,可以管理XenServer、ESXI、KVM、OVM等主流虚拟机,相对OpenStack比较简单、稳定;

 

 

二、Cloud Stack架构

Zone:相当于现实中的1个数据中心,它是CloudStack中最大的一个单元

Pod(机柜):1个Zone包含N个Pod 

Pod(集群):1个Pod包含N个Cluster

Host(主机):1个Cluster包含N个Host

 

 

三、基于centos7安装Cloud Stack4.8.0 

1.下载cloudstack4.8.0

Management

Common

Agent

 

2.修改hostname 和 hosts文件

agent1
vim /etc/hostname
192.168.226.159 master1
vim /etc/hosts

检查主机名是否修改成功?

[root@master1 zhanggen]# hostname --fqdn
master1
hostname --fqdn

 

3.关闭Selinux和Firewalld

setenforce 0
systemctl stop firewalld.service
setenforce 0 && systemctl stop firewalld.service

 

4.安装epel yum源

yum -y install epel*
yum -y install epel*

 

5.安装 ntp服务 保证主从间时间同步 

 yum -y install ntp
yum -y install ntp

启动ntpd服务

[root@master1 zhanggen]# chkconfig ntpd on
注意:正在将请求转发到“systemctl enable ntpd.service”。
Created symlink from /etc/systemd/system/multi-user.target.wants/ntpd.service to /usr/lib/systemd/system/ntpd.service.
[root@master1 zhanggen]# systemctl enable ntpd.service
[root@master1 zhanggen]# 
systemctl enable ntpd.service

 

6.安装nfs服务

yum -y install nfs-utils
yum -y install nfs-utils

配置

/export/secondary *(rw,async,no_root_squash,no_subtree_check)
vim /etc/exports
LOCKD_TCPPORT=32803
LOCKD_UDPPORT=32769
MOUNTD_PORT=892
STATD_PORT=662
RQUOTAD_PORT=875
STATD_OUTGOING_PORT=2020
vim /etc/sysconfig/nfs

 

启动nfs、rpcbind 服务

systemctl start nfs
systemctl start nfs
[root@master1 /]# systemctl start rpcbind
systemctl start rpcbind

 

7.master1主节点和 agent从节点挂载NFS

master1主节点

[root@master1 /]# echo "/dev/sdb /export/secondary ext4 defaults 0 0 " >> /etc/fstab 
[root@master1 /]# 
echo "/dev/sdb /export/secondary ext4 defaults 0 0 " >> /etc/fstab

 agent1从节点

[root@agent1 export]#  echo "/dev/sdb /export/primary ext4 defaults 0 0 " >> /etc/fstab 
[root@agent1 export]#  mount -a
[root@agent1 export]# df
文件系统          1K-块    已用     可用 已用% 挂载点
/dev/sda3      18555904 5128464 13427440   28% /
devtmpfs        1435012       0  1435012    0% /dev
tmpfs           1449728     156  1449572    1% /dev/shm
tmpfs           1449728    9156  1440572    1% /run
tmpfs           1449728       0  1449728    0% /sys/fs/cgroup
/dev/sda1        303780  154916   148864   51% /boot
tmpfs            289948       8   289940    1% /run/user/1000
/dev/sdb       51474912   53272 48783816    1% /export/primary
[root@agent1 export]# 
echo "/dev/sdb /export/primary ext4 defaults 0 0 " >> /etc/fstab

检查NFS是否挂载成功

[root@agent1 export]# showmount -e master1
Export list for master1:
/export/secondary *
[root@agent1 export]# 
showmount -e master1

 

8.master节点

CloudStack管理端安装

 cloudstack-management-4.8.0-1.el7.centos.x86_64.rpm 和 cloudstack-common-4.8.0-1.el7.centos.x86_64.rpm

[root@master1 Desktop]# ls
cloudstack-common-4.8.0-1.el7.centos.x86_64.rpm
cloudstack-management-4.8.0-1.el7.centos.x86_64.rpm
[root@master1 Desktop]# yum install cloudstack-management-4.8.0-1.el7.centos.x86_64.rpm cloudstack-common-4.8.0-1.el7.centos.x86_64.rpm
yum install cloudstack-management-4.8.0-1.el7.centos.x86_64.rpm cloudstack-common-4.8.0-1.el7.centos.x86_64.rpm
yum install mariadb-server mariadbsystemctl enable mariadb
mariadb 安装
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
vim /etc/my.cnf
[root@master1 /]# mysqladmin -uroot password 123.com
[root@master1 /]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 3
Server version: 5.5.60-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> delete from mysql.user where user='';
Query OK, 2 rows affected (0.00 sec)MariaDB [(none)]> 
设置mysql密码删除空用户
[root@master1 /]# mysql -uroot -p123.com -e "GRANT ALL PRIVILEGES ON *.* TO root@'%' IDENTIFIED BY '123.com'";
[root@master1 /]#
给root用户授权

 

9.Agent 节点 安装KVM代理

[root@agent1 Desktop]# yum -y install cloudstack-agent-4.8.0-1.el7.centos.x86_64.rpm cloudstack-common-4.8.0-1.el7.centos.x86_64.rpm
yum -y install cloudstack-agent-4.8.0-1.el7.centos.x86_64.rpm cloudstack-common-4.8.0-1.el7.centos.x86_64.rpm

 

10.Master节点初始化数据库

[root@master1 Desktop]# rpm -qa | grep cloud
cloudstack-management-4.8.0-1.el7.centos.x86_64
cloudstack-common-4.8.0-1.el7.centos.x86_64
[root@master1 Desktop]# cloudstack-setup-databases cloud:123.com@localhost --deploy-as=root:123.com
Mysql user name:cloud                                                           [ OK ]
Mysql user password:******                                                      [ OK ]
Mysql server ip:localhost                                                       [ OK ]
Mysql server port:3306                                                          [ OK ]
Mysql root user name:root                                                       [ OK ]
Mysql root user password:******                                                 [ OK ]
Checking Cloud database files ...                                               [ OK ]
Checking local machine hostname ...                                             [ OK ]
Checking SELinux setup ...                                                      [ OK ]
Detected local IP address as 192.168.226.159, will use as cluster management server node IP[ OK ]
Preparing /etc/cloudstack/management/db.properties                              [ OK ]
Applying /usr/share/cloudstack-management/setup/create-database.sql             [ OK ]
Applying /usr/share/cloudstack-management/setup/create-schema.sql               [ OK ]
Applying /usr/share/cloudstack-management/setup/create-database-premium.sql     [ OK ]
Applying /usr/share/cloudstack-management/setup/create-schema-premium.sql       [ OK ]
Applying /usr/share/cloudstack-management/setup/server-setup.sql                [ OK ]
Applying /usr/share/cloudstack-management/setup/templates.sql                   [ OK ]
Processing encryption ...                                                       [ OK ]
Finalizing setup ...                                                            [ OK ]CloudStack has successfully initialized database, you can check your database configuration in /etc/cloudstack/management/db.properties[root@master1 Desktop]# mysql -uroot -p123.com
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 14
Server version: 5.5.60-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cloud              |
| cloud_usage        |
| mysql              |
| performance_schema |
| test               |
+--------------------+
6 rows in set (0.04 sec)MariaDB [(none)]> 
cloudstack-setup-databases cloud:123.com@localhost --deploy-as=root:123.com Mysql user name:cloud

 

11.启动Master

[root@master1 management]# cloudstack-setup-management --tomcat7
Starting to configure CloudStack Management Server:
Configure Firewall ...        [OK]
Configure CloudStack Management Server ...[OK]
CloudStack Management Server setup is Done!
[root@master1 management]# systemctl status cloudstack-management.service
● cloudstack-management.service - CloudStack Management ServerLoaded: loaded (/usr/lib/systemd/system/cloudstack-management.service; enabled; vendor preset: disabled)Active: active (running) since 三 2019-04-03 16:16:38 CST; 5s agoMain PID: 18268 (java)CGroup: /system.slice/cloudstack-management.service└─18268 /usr/lib/jvm/jre/bin/java -Djava.awt.headless=true -Dcom.sun.management.jmxremote=false -Xmx2g -XX:+HeapDumpOnOutOfMem...4月 03 16:16:40 master1 server[18268]: Apr 03, 2019 4:16:40 PM org.apache.catalina.core.StandardEngine startInternal
4月 03 16:16:40 master1 server[18268]: INFO: Starting Servlet Engine: Apache Tomcat/7.0.76
4月 03 16:16:40 master1 server[18268]: Apr 03, 2019 4:16:40 PM org.apache.catalina.startup.HostConfig deployDirectory
4月 03 16:16:40 master1 server[18268]: INFO: Deploying web application directory /usr/share/cloudstack-management/webapps/client
4月 03 16:16:41 master1 server[18268]: Apr 03, 2019 4:16:41 PM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile
4月 03 16:16:41 master1 server[18268]: INFO: validateJarFile(/usr/share/cloudstack-management/webapps/client/WEB-INF/lib/servlet-...t.class
4月 03 16:16:41 master1 server[18268]: Apr 03, 2019 4:16:41 PM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile
4月 03 16:16:41 master1 server[18268]: INFO: validateJarFile(/usr/share/cloudstack-management/webapps/client/WEB-INF/lib/servlet-...t.class
4月 03 16:16:41 master1 server[18268]: Apr 03, 2019 4:16:41 PM org.apache.catalina.loader.WebappClassLoaderBase validateJarFile
4月 03 16:16:41 master1 server[18268]: INFO: validateJarFile(/usr/share/cloudstack-management/webapps/client/WEB-INF/lib/tomcat-e...t.class
Hint: Some lines were ellipsized, use -l to show in full.
[root@master1 management]# ss -tnl
State      Recv-Q Send-Q                         Local Address:Port                                        Peer Address:Port              
LISTEN     0      50                                         *:3306                                                   *:*                  
LISTEN     0      128                                        *:111                                                    *:*                  
LISTEN     0      5                              192.168.122.1:53                                                     *:*                  
LISTEN     0      128                                        *:662                                                    *:*                  
LISTEN     0      128                                        *:22                                                     *:*                  
LISTEN     0      128                                127.0.0.1:631                                                    *:*                  
LISTEN     0      100                                127.0.0.1:25                                                     *:*                  
LISTEN     0      128                                        *:892                                                    *:*                  
LISTEN     0      64                                         *:2049                                                   *:*                  
LISTEN     0      64                                         *:32803                                                  *:*                  
LISTEN     0      128                                       :::111                                                   :::*                  
LISTEN     0      100                                       :::20400                                                 :::*                  
LISTEN     0      128                                       :::8080                                                  :::*                  
LISTEN     0      128                                       :::662                                                   :::*                  
LISTEN     0      128                                       :::22                                                    :::*                  
LISTEN     0      50                                        :::42743                                                 :::*                  
LISTEN     0      128                                      ::1:631                                                   :::*                  
LISTEN     0      128                                       :::892                                                   :::*                  
LISTEN     0      64                                        :::2049                                                  :::*                  
LISTEN     0      64                                        :::32803    
cloudstack-setup-management --tomcat7

 

12.访问

http://192.168.226.159:8080/client/

 默认user :admin 默认密码:password

 

13.下载KVM模板

[root@master1 Desktop]# /usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary/ -f /home/zhanggen/Desktop/systemvm64template-4.6.0-ovm.raw.bz2 -h kvm -F
Uncompressing to /usr/share/cloudstack-common/scripts/storage/secondary/3a2c5a43-2dd0-4130-b225-535221756540.qcow2.tmp (type bz2)...could take a long time
Moving to /export/secondary/template/tmpl/1/3///3a2c5a43-2dd0-4130-b225-535221756540.qcow2...could take a while
Successfully installed system VM template /home/zhanggen/Desktop/systemvm64template-4.6.0-ovm.raw.bz2 to /export/secondary/template/tmpl/1/3/
[root@master1 Desktop]# cd /export/secondary/
lost+found/ template/   
[root@master1 Desktop]# cd /export/secondary/template/tmpl/1/3/
[root@master1 3]# ls
3a2c5a43-2dd0-4130-b225-535221756540.qcow2  template.properties
[root@master1 3]# 
加载kvm模板

 

14.Agent libvert配置文件

CloudStack也是通过libverd来管理kvm的所有要修改 agent节点配置文件

vnc_listen = "0.0.0.0"
vim /etc/libvirt/qemu.conf
listen_tls = 0
listen_tcp = 1
tcp_port = "16509"
auth_tcp = "none"
mdns_adv =0
vim /etc/libvirt/libvirtd.conf

 

四、配置CloudStack

查看管理节点日志

tail -f /var/log/cloudstack/management/management-server.log

 查看Agent节点日志

tail -f /var/log/cloudstack/agent/agent.log 

 

1.添加资源

 

 

 2.基本资源

 

3.设置DNS

 

 

 4.设置网卡名称

 

4.设置网络

注意网段不要包含master 和agent的IP,避免造成IP冲突

 

 

5.设置管理网络 

就是管理虚拟机用得网络,注意不要和上面的IP冲突

 

 6.设置集群名称

 

7.添加agent节点

设置agent节点

 

 

8.  设置主存储

主存储 就是Agent上的存储路径,通过网络挂载到 Master 节点的NFS路径

 

 

9.设置二级存储

二级存储就是 Master节点中 NFS路径

 

 

10.添加资源成功

 

 

五、搭建网络镜像仓库

搭建http服务器,用于管理ISO镜像和虚拟机模板,通过url下载镜像、模板

1.安装Nginx

yum -y install nginx
systemctl start nginx
安装Nginx

2.修改Nginx配置文件成为文件目录服务器

    access_log  /var/log/nginx/access.log  main;autoindex on;autoindex_exact_size on;autoindex_localtime on;sendfile            on;
/etc/nginx/nginx.conf

 

 3.开放secstrage.allow权限

 

4.重启cloudstack-management.service

[root@master1 html]# systemctl restart cloudstack-management.service
[root@master1 html]# 

 

六、注册ISO镜像

1.组册ISO

 

 

 

 

七、添加实例

 资源和镜像全有了,也该添加虚拟机实例了

1.添加实例

 

 2.选择通过ISO镜像的方式创建虚拟机

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

八、python3调用CloudStack的API

import requests
import urllib,hmac,base64,hashlibapi_url='http://192.168.226.159:8080/client/api'
api_key='Y3-zVsLYyBjf1sJr73Eb_17BitmsErXrvc6oIJBQBVjaIn2SbOvapI7gTs5Lycw8DqbzWu3NyVu8urR6ldcMyQ'
security_key='JqNOR8WtSvSS7wdDRhmwQn1VU8HBc5LbgWIImdzpRsvojYLvS1ClIGgBe_t40j7BaOtSHU7cMEe803QvN6FcdQ'def get_url(cmd): #获取加密后的签名+拼接URLarges={"apikey":api_key.lower(),"command":cmd.lower(),"response":"json"}sig_url=urllib.parse.urlencode(arges)hmac_byte=hmac.new(bytes(security_key,'utf-8'),bytes(sig_url,'utf-8'),hashlib.sha1 ).digest()base64_str=base64.b64encode(hmac_byte).strip()sig = urllib.parse.quote_plus(base64_str)full_url = api_url + '?' + 'command=' + cmd + '&apikey=' + api_key + '&response=json' + '&signature=' + sigreturn full_urlurI=get_url(cmd='listHosts')print(requests.get(url=urI).json())
获取主机

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

参考

 

转载于:https://www.cnblogs.com/sss4/p/10619350.html


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

相关文章

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

cloudstack安装部署 0 说明1 Prerequisites 先决条件2 Environment 环境2.0 先看看有没有KVM2.1 Operating System 操作系统2.2 Configuring the network 配置网络2.3 Hostname2.4 SELinux2.5 NTP2.6 Configuring the CloudStack Package Repository 配置CloudStack软件包存储库…

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…