一,云计算的服务模型
1、laaS 基础设施即服务:基础设施福分包括电脑、网络、存储、负载平衡设备、虚拟机。这
些服务于终端用户的软硬件资源都可以按照它们的需求来进行扩展或收缩。
2、PaaS 软件即服务:顾名思义,这种模式包括类似虚拟桌面、各种实用应用程序、内容资源
管理、电子邮件、软件及其他等软件部分。在此种模式中,云服务供应商负责安装、管理
和运营各种软件,而客户则通过云来登入和使用他们。
3、SaaS 平台即服务:在此种模式中,托管服务供应商通过提供工作平台来帮助客户,包括执
行运行时间、数据库、Web服务、开发工具和操作系统,客户无需手动分配资源。
二,Openstack 概述
1.OpenStack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合。由NASA(美国国家航空航天局)和Rackspace合作研发并发起,以Apache许可证(Apache软件基金会发布的一个自由软件许可证)授权的开源代码项目。
OpenStack为私有云和公有云提供可扩展的弹性的云计算服务。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。
公有云:所有人都能用
私有云:只为企业内部使用,服务器是托管给阿里云组织维护
专有云:也是为企业内部所使用,使用的服务器是客户自己的服务器
混合云:例如银行
覆盖了网络、虚拟化、操作系统、服务器等各个方面
2.OpenStack核心组件
三,OpenStack的优势
1.与开源社区的广泛合作
Cloud.com(云计算领域的领导厂商之一,已被Citrix收购)的CMO Pedar Ulander先生对OpenStack做出了高度评价:他表示“云计算已经成为一种新的运营模式,它对于人们如何消费、如何提供IT服务和从事IT行业是一个根本性的转变。作为一家崭露头角的小公司,我们在大约14个月之前开始运营我们的品牌——Cloud.com,OpenStack对我们现在的强劲发展起到了巨大的推动力。”
Cloud.com是OpenStack的创始公司之一。在开源社区中,有多名来自不同公司的志愿者,汇聚他们的智慧,推动了OpenStack项目的发展。OpenStack是一个非常类似于Kernel.org或Eclipse.org技术社区,你可以在这里下载代码、进行各种社区活动。如果你对源代码感兴趣,那么将会有机会构建自己的OS,或者与其它正在对其进行商业化的公司合作。
2.积极的客户支持
Cloud.com十分注重对OpenStack项目的支持,Pedar Ulander表示在项目开发方面,我们添加了对微软Hyper-V虚拟化技术的支持。我们将一些我们自己的网络堆栈协议集成到平台之中,并在API兼容性方面做了许多工作。
而对于客户,我们对想采用OpenStack的客户提供了最大的支持。我们有几个客户对Swift服务很感兴趣,Swift是一个模仿了 Amazon S3的存储服务。现在我们正围绕此技术构建管理框架,从而使得这些公司可以在OpenStack平台上提供类似于S3的服务。”
3.支持一切应用的统一平台
和其它OpenStack的创始公司一样,Cloud.com想让OpenStack成为一个可以支持一切应用的最终平台。“客户不希望等待,我们也没有让客户等待的理由。对于我们的平台,我们需要着重关心的是向后兼容。随着代码越来越成熟,它如何运作,API如何工作,以及作业如何调度成为需要被同等关注的问题。我们最终的目标是,对开发人员而言,你只需要支持一个平台;对企业而言,我们要让他们知道OpenStack就是最终的平台。”Pedar Ulander说到。
四、OpenStack的劣势
1.项目中面临的风险
OpenStack的开发步伐充满激情,新版本带来的功能令人印象深刻,研发路线图也十分清晰,让人觉得真是满怀雄心壮志。但有许多类似的开源项目,在实现上其自身存在风险。
Rackspace公司的商务拓展总监Scott Sanchez与参与OpenStack项目的人员进行了许多交谈。他提到了150多名核心开发人员和138家供应商,但实际上仅有三分之一的公司以某种形式贡献了代码。数目看起来虽然不小,但要想维护社区项目的各个分支,这是必要的。
事实上,他们想让OpenStack成为最终平台的解决方案存在风险,甚至会变成一个很大的问题。一个明显的例子是对虚拟化管理程序的支持,OpenStack虽然支持几乎所有的虚拟化管理程序,不论是开源的(Xen、KVM)还是厂商的(Hyper-V、VMware),但对它们的支持仅仅是开启、关闭而已。
2.厂商之间的利益冲突
在许多情况下,你会发现许多参与OpenStack项目的供应商之间存在利益的冲突。对于项目中的方案,许多公司都有自己的替代解决方案。例如,存储解决方案提供商和Swift项目都旨在构建存储平台。存储供应商在项目中并没有免费、开放地提供技术支持,恰恰相反,他们只想确保API的兼容性,并以自己的收费产品替代开源解决方案。
3.兼容性与开发成本
OpenStack是一个框架,一个可以建立公有云和私有云的基础架构。这并不是一个现成的产品,要想开展基础架构方面的工作,企业需要顾问和开发人员。很多时候还需要第三方的集成工具。
此外,新版本的发布过于频繁,一些地方同老版本出现了兼容性问题。如果你对代码做了一些改进,却不被社区接受,那么你使用自己代码更新的版本将变得难以维护。
最后,得考虑一下OpenStack技术人员的成本。比如,在北美和欧洲的成本显然不同。
4.滞后的服务支持
OpenStack一跃而成为云计算市场的明星,但是要想让企业广泛采用它,就必须提供易于部署的产品,并提供明确的技术支持服务。
五,项目架构描述
- OpenStack概念架构
2.OpenStack逻辑架构
3.物理架构(4种节点类型)
六,部署环境
1.环境
1、控制节点ct
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:VM1-(局域网)192.168.191.138 NAT-192.168.189.146
操作系统:Centos 7.6(1810)-最小化安装
2、计算节点c1
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:VM1(局域网)-192.168.191.139 NAT-192.168.189.148
操作系统:Centos 7.6(1810)-最小化安装
3、计算节点c2
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:VM1(局域网)-192.168.191.140 NAT-192.168.189.147
操作系统:Centos 7.6(1810)-最小化安装
PS:最小内存6G
2.更改主机名
hostnamectl set-hostname ct
hostnamectl set-hostname c1
hostnamectl set-hostname c2
3.关闭防火强
systemctl stop firewalld ##关闭防火墙
systemctl disable firewalld
setenforce 0 ##核心防护
4.三台虚拟机做免交互
[root@ct ~]# ssh-keygen -t rsa
[root@ct ~]# ssh-copy-id ct
[root@ct ~]# ssh-copy-id c1
[root@ct ~]# ssh-copy-id c2
5.配置DNS
[root@ct ~]# vim /etc/resolv.conf
nameserver 114.114.114.114
6.基础环境依赖包
yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils ##OpenStack 的 train 版本仓库源安装包,同时安装 OpenStack 客户端和 openstack-selinux 安装包;最好安装两次,提示已安装并且是最新版本即可
####控制节点ct时间同步配置##
ct同步阿里云时钟服务器,c1、c2同步ct
yum install chrony -y //安装时钟同步服务
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 ntp1.aliyun.com iburst ###配置阿里云时钟服务器源
allow 192.168.191.0/24 ##允许192.168.91.0网段的主机来同步时钟服务
systemctl restart chronyd
systemctl enable chronyd
###使用 chronyc sources 命令查询时间同步信息
chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* 120.25.115.20 2 6 17 8 +501us[+1565us] +/- 17ms
#######控制节点c1、c2时间同步配置
vim /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 ct iburst ##配置阿里云时钟服务器源
systemctl restart chronyd ##重启时间同步服务器
systemctl enable chronyd ##永久开启时间同步服务器
chronyc sources
##周期性计划任务
crontab -e ##配置计划任务,每隔2分钟同步一次
*/2 * * * * /usr/bin/chronyc sources >>/var/log/chronyc.log
7.系统环境配置
7.1安装、配置MariaDB
####在ct端###
yum -y install mariadb mariadb-server python2-PyMySQL //此包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端
yum -y install libibverbs //安装lib库
### 添加MySQL子配置文件,增加如下内容
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 192.168.191.138 ##控制节点局域网地址,即本机
default-storage-engine = innodb ##默认引擎
innodb_file_per_table = on ##开启表空间
max_connections = 4096 ##最大连接4096
collation-server = utf8_general_ci ##默认字符集
character-set-server = utf8
###开启服务,开机自启
systemctl start mariadb ##开启服务
systemctl enable mariadb ##开机自启动
###执行MariaDB 安全配置脚本
mysql_secure_installation
Enter current password for root (enter for none): ##回车
OK, successfully used password, moving on...
Set root password? [Y/n] Y ##是否需要创建密码
Remove anonymous users? [Y/n] Y ##是否需要移除其他用户
... Success!
Disallow root login remotely? [Y/n] N ##是否不允许root用户远程登陆
... skipping.
Remove test database and access to it? [Y/n] Y ##是否删除test测试库
Reload privilege tables now? [Y/n] Y ##是否现在就重载以上的配置
7.2安装安装RabbitMQ
所有创建虚拟机的指令,控制端都会发送到rabbitmq,node节点监听rabbitmq
###在ct端##
###下载rabbitmq服务
yum -y install rabbitmq-server
##启动并设置开启自启
systemctl start rabbitmq-server
systemctl enable rabbitmq-server
##创建消息队列用户,用于controler和计算节点rabbitmq的认证(关联)
rabbitmqctl add_user openstack RABBIT_PASS //用户:openstack,密码:RABBIT_PASS
##配置openstack用户的操作权限(正则,配置读写权限)
rabbitmqctl set_permissions openstack ".*" ".*" ".*" //set:修改;permissions:权限
## 查看端口
netstat -antp | grep 5672
//可查看25672和5672 两个端口(5672是Rabbitmq默认端口,25672是Rabbit的测试工具CLI的端口)
rabbitmq-plugins list ##查看rabbitmq插件列表;plugins:插件
rabbitmq-plugins enable rabbitmq_management ##开启rabbitmq的web管理界面的插件,端口为15672
netstat -natp | grep 5672 ##检查端口(25672 5672 15672)
LISTEN 0 128 *:25672 *:* users:(("beam.smp",pid=24596,fd=46))
LISTEN 0 128 :::5672 :::* users:(("beam.smp",pid=24596,fd=55))
密码账号一致
7.3安装memcached
yum install -y memcached python-memcached ##安装Memcached
#python-*模块在OpenStack中起到连接数据库的作用
vim /etc/sysconfig/memcached ##修改Memcached配置文件
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,ct" ##添加ct
systemctl start memcached
systemctl enable memcached
netstat -nautp | grep 11211
7.4安装etcd
yum -y install etcd
###修改etcd的配置文件
cd /etc/etcd
vim etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd" //数据目录位置
ETCD_LISTEN_PEER_URLS="http://192.168.191.138:2380" //监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)#对外提供服务的地址(2379端口,集群内部的通讯端口)
ETCD_LISTEN_CLIENT_URLS="http://192.168.191.138:2379" //对外提供服务的地址(2379端口,集群内部的通讯端口)
ETCD_NAME="ct" //集群中节点标识(名称)
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.191.128:2380" //该节点成员的URL地址,2380端口:用于集群之间通讯
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.191.138:2379"
ETCD_INITIAL_CLUSTER="ct=http://192.168.191.138:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01" //集群唯一标识
ETCD_INITIAL_CLUSTER_STATE="new" //初始集群状态,new为静态,若为existing,则表示此ETCD服务将尝试加入已有的集群;若为DNS,则表示此集群将作为被加入的对象
systemctl start etcd ##开启服务
systemctl enable etcd ##开机自启动
netstat -anutp |grep 2379 ##检测端口
netstat -anutp |grep 2380
7.5c1、c2安装OpenStack组件
yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils