云计算的概述
云计算的定义
何为云计算?我们可以理解为是一种想用就用、按量付费的一种模式,只要采用这一种的模式都可以叫做云计算
云计算的分类
按设计的架构分类:
私有云
(仅供内部使用,针对性设计,兼容性高,安全性高)公有云
(容量大,成本低,弹性收缩,如:阿里云、腾讯云)混合云
(私有云和公有云的结合)
按供给的方式分类:
IaaS
基础设施即服务PaaS
平台即服务SaaS
软件即服务
只要我们说到云计算,就可以联想到OpenStack,OpenStack是云计算中的一个云平台管理工具,比较热门
OpenStack的概述
OpenStack的定义
OpenStack 是一个美国国家航天局和RackSpace 合作研发的,以Apache 许可证授权,并且是一个自由软件。
Openstack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。
OpenStack 通过一个通过web 界面提供资源管理,通过一个仪表盘管理整个数据中心的计算存储资源等
OpenStack既然是一个开源的云平台项目,它的主要任务是给用户提供IaaS服务。
OpenStack的构成
控制节点
(负责对其余节点的控制,包含虚拟机的删除、创建、迁移、存储分配等等)计算节点
(负责虚拟机的运行)网络节点
(负责内网与外网的之间的通信)存储节点
(负责虚拟机的存储管理)
一般情况下,可以将这个四个节点安装在一台机器上,称做单机部署
OpenStack组件的分类
Nova
核心组件,主要用于计算,负责创建、销毁、调度云主机
Glance
镜像服务,为云主机提供镜像服务
Swift
对象存储
Cinder
块存储,为云主机附加云盘,增加存储空间
Neutron
提供网络服务
Horizon
提供web界面的形式操作平台,方便用户交互,可称为Dashboard
Keystone
认证服务,所有组件交互的中心
Heat
编排、自动化部署应用工具
Centimeter
监控、对物理资源以及虚拟资源的监控,并记录这一些记录,对数据进行分析,在一定条件下触发相应的动作
Trove
数据库服务
Sahara
数据处理
OpenStack四个节点分别对应的组件
节点 | 组件名称 |
---|---|
控制节点(controller) | Keystone,Glance,Nova,Neutron,Horizon |
计算节点(compute) | Nova,Neutron |
网络节点(neutron) | Neutron |
存储节点(block) | Cinder,Swift |
控制节点controller还包含了:
mysql:为各个服务提供数据存储
消息队列:包括Qpid、RabbitMq 保证组件之间的沟通不会出现数据损坏以及丢失
memcahce:高速缓存系统
OpenStack的网络类型
管理网络
(用于组件和组件之间的沟通)实例网络
(用于虚拟机和虚拟机之间的沟通)外部网络
(访问外部网络所需,外部网络都是通过neutron代理转发给虚拟机的)
基础环境的构建
测试环境
主机 | IP地址 |
---|---|
controller | ens33:192.168.1.10 ens37:192.168.2.10 |
compute | ens33:192.168.1.20 ens37:192.168.2.20 |
本次实验采用双机双网卡
ens33 为VMnet1仅主机模式
ens37 为VMnet8 Nat模式
初始化环境
以下操作两个节点都要执行
修改对应节点上的主机名称
[root@localhost ~]# hostnamectl set-hostname controller
[root@localhost ~]# hostnamectl set-hostname compute
修改本地hosts文件
[root@controller ~]# vi /etc/hosts
192.168.1.10 controller
192.168.1.20 compute
关闭Firewallsd防火墙、IPtable防火墙、selinux、网卡守护进程
[root@controller ~]# systemctl stop firewalld
[root@controller ~]# systemctl disable firewalld
[root@controller ~]# iptables -F
[root@controller ~]# iptables -X
[root@controller ~]# iptables -Z
[root@controller ~]# /usr/sbin/iptables-save
[root@controller ~]# vi /etc/selinux/config
SELINUX=disabled
[root@controller ~]# setenforce 0
[root@controller ~]# systemctl stop NetworkManager
[root@controller ~]# systemctl disable NetworkManager
配置本地yum源
安装epel源,扩展本地的yum仓库
[root@controller ~]# rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
安装OpenStack仓库
[root@controller ~]# yum install -y centos-release-openstack-queens.noarch
[root@controller ~]# yum clean all && yum makecache
注:如果这里提示OpenStack的yum源报错,添加如下yum源信息即可
[centos-ceph-luminous]
name=CentOS-$releaserver-Ceph Luminous
gpgcheck=0
pority=2
enabled=1
baseurl= http://mirrors.ustc.edu.cn/ceph/rpm-mimic/el7/x86_64/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage
[centos-openstack-queens]
Name=CentOS-7-OpenStack-queens
gpgcheck=0
pority=1
baseurl= http://mirrors.ustc.edu.cn/centos/7/cloud/x86_64/openstack-queens/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud
exclude=sip,PYQt4
安装OpenStack相关软件包
安装 yum-plugin-priorities 包,防止高优先级软件被低优先级软件覆盖
[root@controller ~]# yum install -y yum-plugin-priorities
安装OpenStack客户端
[root@controller ~]# yum install -y python-openstackclient
安装OpenStack selinux管理包
[root@controller ~]# yum install -y openstack-selinux
时间同步的配置
controller为时间同步服务器,compute为客户端
controller的配置
[root@controller ~]# yum install -y chrony
[root@controller ~]# vi /etc/chrony.conf
注释掉以上server,然后添加一个新的
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server controller iburst
allow 192.168.1.0/24
local stratum 10
[root@controller ~]# systemctl restart chronyd
[root@controller ~]# systemctl enable chronyd
[root@controller ~]# chronyc sources
compute客户端的配置
[root@compute ~]# yum install -y chrony
[root@compute ~]# vi /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server controller iburst
[root@compute ~]# systemctl restart chronyd
[root@compute ~]# systemctl enable chronyd
[root@compute ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* controller 11 6 17 14 +102us[ +130us] +/- 5152us
controller节点的配置
安装mysql数据库
[root@controller ~]# yum -y install mariadb mariadb-server MySQL-python net-tools vim
[root@controller ~]# vi /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.1.10 # 监听的IP地址(也可以写0.0.0.0)
default-storage-engine = innodb # 默认存储引擎[innodb]
innodb_file_per_table # 使用独享表空间
max_connections = 4096 # 最大连接数是4096 (默认是1024)
collation-server = utf8_general_ci # 数据库默认校对规则
character-set-server = utf8 # 默认字符集
[root@controller ~]# systemctl start mariadb
[root@controller ~]# systemctl enable mariadb
[root@controller ~]# mysql_secure_installation
安装RabbitMQ消息服务
[root@controller ~]# yum install -y rabbitmq-server
[root@controller ~]# systemctl start rabbitmq-server
[root@controller ~]# systemctl enable rabbitmq-server
添加openstack用户
[root@controller ~]# rabbitmqctl add_user openstack openstack
Creating user "openstack"
给openstack用户读写权限
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"
开启rabbitmq WEB页面插件
[root@controller ~]# rabbitmq-plugins enable rabbitmq_management
这样我们就可以输入http://本地IP地址:15672访问了
浏览器访问测试
用户名和密码都是guest
安装memcahce服务
[root@controller ~]# yum install -y memcached python-memcached
[root@controller ~]# vi /etc/sysconfig/memcached
OPTIONS="-l 192.168.1.10,::1,controller"
[root@controller ~]# systemctl start memcached
[root@controller ~]# systemctl enable memcached
至此,以上就是OpenStack的基础环境的构建