openstack入门第一章基础与部署环境

一、云计算概念与资源

●狭义的云计算是指IT基础设施的交付和使用模式
●广义的云计算是指服务的交付和使用模式

云计算资源
●网络资源
●存储资源
●计算资源
●等等

二、云计算服务模型

1、laaS(基础架构即服务)
●提供底层IT基础设施服务,包括处理能力、存储空间、网络资源(如迅雷)等
●面向对象一般是IT管理人员
2、PaaS (平台即服务)
●把安装好开发环境的系统平台作为一种服务通过互联网提供给用户
●面向对象一般是开发人员
3、SaaS (软件即服务)
●直接通过互联网为用户提供软件和应用程序等服务
●面向对象一般是普通用戶

例如LNMP架构,打包成SaaS服务,用户若是购买这个服务即拥有LNMP架构

三、Openstack概述:

1、OpenStack的概念

Open(开源)Stack(堆叠)以物理设备为基础,以虚拟化的技术奖资源分配给不同的用户(比如:电商、金融P2P)

●NASA (美国国家航空航天局)和Rackspace共同发起
●以Apache许可证授权的自由软件和开放源代码项目
●为公有云及私有云的建设与管理提供软件的开源项目
公有云:所有人都能用
私有云:只为企业内部使用,服务器是托管给阿里云组织维护
专有云:也是为企业内部所使用,使用的服务器是客户自己的服务器
混合云:例如银行
●覆盖了网络、虚拟化、操作系统、服务器等各个方面

2、OpenStack的八个核心服务

在这里插入图片描述

计算         nova ⭐⭐     管理实例生命周期
镜像         glance        管理镜像、快!照服务
认证         keystone⭐⭐  全局认证、授权
块存储       cinder        为实例提供持久化功能
对象存储     swift          对象存储,存储镜像+快照
度量、监控    celimitor     计费、监控
网络         neutron       为实例提供网络支持(拓扑结构)
控制台       horizon       用户登录、使用的控制台界面

3、OpenStack优势

Openstack的优势:
控制性
完全开源的平台,提供API接口,方便与第三方技术集成。
兼容性
OpenStack兼容其他公有云,方便用户进行数据迁移。
可扩展性
模块化设计,可以通过横向扩展,增加节点、添加资源。
灵活性
根据自己的需要建立相应基础设施、增加集群规模。
行业标准
众多顿领军企业已经加入到OpenStack项目。

四、OpenStack架构

1.设计基本原则

●按照不同的功能和通用性划分不同的项目(资源弹性、抗压能力的弹性),拆分子系统
●按照逻辑计划、规范子系统之间的通信(消息代理rabbiting)
●通过分层设计整个系统架构
●不同的功能子系统间提供统一的API接口

2、OpenStack概念架构图

在这里插入图片描述
创建过程中:
利用Nova服务创建虚拟机实例—>虛拟机实例采用Glance提供镜像服务—>使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中—>通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume) 和Glance提供的镜像(Image) 可以通过Swift的对象存储机制进行保存。
主要组件:
全局:Keyston(全局认证)、Ceilometer(监控、计费)、Horizon(控制台)
核心:Nove(计算)、Glance(镜像)、Neutron(网络)、Swift(块存储)、Cinder(对象存储)
支持/辅助:Ironic(裸金属)、Trove(数据库管理)、Hent(数据编排)

3、OpenStack逻辑架构图

1、OpenStack包括若干个称为OpenStack服务的独立组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。
2、每个OpenStack服务又由若干组件组成。包含多个进程。所有服务至少有一个API进程,用于侦听API接口请求,对这些请求进行预处理,并将它们传送到该服务的其他组件。除了认证服务,实际工作都是由具体的进程完成的。
3、至于一个服务的进程之间通信,则使用AMQP消息代理。服务的状态存储在数据库中。
在这里插入图片描述

4、OpenStack组件通信关系

1、基于AMQP协议的通信:
用于每个项目内部各个组件之间的通信
2、基于SQL的通信:
用于各个项目内部之间的通信。
项目和项目之间的通讯会使用http方式进行通讯,OpenStack是由apache服务提供http层面的交互
3、基于HTTP协议进行通信:
通过各项目的API建立的通信关系,API都是RESTful Web API
①项目和项目之间的通讯比如novA和keystone之间的通讯http,而http在openstack是借助apache来实现的
②restful:通讯协议的一种规范。
③项目之间点到点的通讯是借助不同项目暴露出来的公共APL接口进行的
通讯的过程:借助了AMQP进行通讯
④web:URL形式。
4、通过Native API实现通信:
OpenStack各组件和第三方软硬件之间的通信

5、OpenStack物理架构

在这里插入图片描述

五、openstack实验部署

1、控制节点ct
CPU:双核双线程-CPU虚拟化开启
内存:8G	
硬盘:300G
双网卡:VM1-(局域网)192.168.100.10 NAT-192.168.153.227
操作系统:Centos 7.6(1810)-最小化安装

2、计算节点c1
CPU:双核双线程-CPU虚拟化开启
内存:8G	
硬盘:300G
双网卡:VM1(局域网)-192.168.100.20  NAT-192.168.153.228
操作系统:Centos 7.6(1810)-最小化安装
nat8
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV4_ROUTE_METRIC=90    路由优先级,NAT网
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=98a16169-fa4b-42b0-ab1e-b3774bf1bb2e
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.153.227    另一个153.228
NETMASK=255.255.255.0
GATEWAY=192.168.153.2

vm1:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=98a16169-fa4b-42b0-ab1e-b3774bf1bb2e
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.100.10   另一个100.20
NETMASK=255.255.255.0
#GATEWAY=192.168.153.2   注释掉


5.1、基础环境配置

配置项(所有节点):
1、主机名
2、防火墙、核心防护
3、免交互
4、基础环境依赖包

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV4_ROUTE_METRIC=90    路由优先级,NAT网
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=98a16169-fa4b-42b0-ab1e-b3774bf1bb2e
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.153.227
NETMASK=255.255.255.0
GATEWAY=192.168.153.2

1、配置主机名
hostnamectl set-hostname ct
hostnamectl set-hostname c1
2、关闭防火墙核心防护等等
systemctl stop firewalld		 
systemctl disable firewalld
sentenforce 0
在所有节点配置DNS
vi /etc/resolv.conf
nameserver 114.114.114.114
配置两台内网hosts地址
vi /etc/hosts
192.168.100.10 ct
192.168.100.20 c1
3、设置免交互
两台节点做免交互
ssh-keygen -t rsa		##非对称密钥
ssh-copy-id ct
ssh-copy-id c1
4、基础环境依赖包
yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre  pcre-devel expat-devel cmake  bzip2 lrzsz
EXPAT C语言发开库
yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils   
#OpenStack 的 train 版本仓库源安装包,同时安装 OpenStack客户端和openstack-selinux 安装包
5、时间同步和周期性计划任务
ct ->同步阿里云时钟服务器
c1、c2 -> 同步ct

ct节点:
yum install chrony -y
[root@ct ~]# 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 ntp6.aliyun.com iburst   #添加配置阿里云时钟服务器源
allow 192.168.100.0/24			#添加允许192.168.100.0/24网段的主机来同步时钟服务
保存退出
[root@ct ~]# chronyc sources     查询时间同步信息
[root@ct ~]# systemctl restart chronyd     重启时间同步服务器
[root@ct ~]# systemctl enable chronyd        永久开启时间同步服务器
[root@ct ~]# chronyc sources              再次查询时间同步信息

c1节点:
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 ct iburst  添加配置时钟服务器源
保存退出
[root@c1 ~]# systemctl restart chronyd
[root@c1 ~]# systemctl enable chronyd
[root@c1 ~]# chronyc sources    查看已经同步到ct节点
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ct                            3   6    17    35  -6544ns[+2758ns] +/-   28ms

在这里插入图片描述
在这里插入图片描述

每台节点都设置周期性计划任务
crontab -e   配置计划任务,每间隔2分钟同步一次
*/2 * * * * /usr/bin/chronyc sources >>/var/log/chronyc.log
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV4_ROUTE_METRIC=90    路由优先级,NAT网
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens32
UUID=98a16169-fa4b-42b0-ab1e-b3774bf1bb2e
DEVICE=ens32
ONBOOT=yes
IPADDR=192.168.153.227
NETMASK=255.255.255.0
GATEWAY=192.168.153.2

5.2系统环境配置(在ct控制节点配置)

1、安装、配置MariaDB
[root@ct ~]# yum -y install mariadb mariadb-server python2-PyMySQL   #此包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端
[root@ct ~]# yum -y install libibverbs
[root@ct ~]# vim /etc/my.cnf.d/openstack.cnf   添加MySQL子配置文件,添加如下内容
[mysqld]
        bind-address = 192.168.100.10
        default-storage-engine = innodb         
        innodb_file_per_table = on                      
        max_connections = 4096                  
        collation-server = utf8_general_ci              
        character-set-server = utf8    
保存退出        
注释如下:
bind-address = 192.168.100.11			#控制节点局域网地址
default-storage-engine = innodb 		#默认存储引擎 
innodb_file_per_table = on 				#每张表独立表空间文件
max_connections = 4096 				    #最大连接数 
collation-server = utf8_general_ci 		#默认字符集      

开机自启动、开启服务
systemctl start mariadb			##开启服务
systemctl enable mariadb		##开机自启动
mysql_secure_installation		##执行MariaDB 安全配置脚本    
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 	
2、安装RabbitMQ
所有创建虚拟机的指令,控制端都会发送到rabbitmq,计算节点监听rabbitmq
[root@ct ~]# yum -y install rabbitmq-server

配置服务,启动RabbitMQ服务,并设置其开机启动
[root@ct ~]# systemctl enable rabbitmq-server.service
[root@ct ~]# systemctl start rabbitmq-server.service

创建消息队列用户,用于controler和 计算节点连接rabbitmq的认证(关联)
[root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack"  

配置openstack用户的操作权限(正则,配置读写权限)
[root@ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"

查看25672和5672 两个端口(5672是Rabbitmq默认端口,25672是Rabbit的测试工具CLI的端口
[root@ct ~]# netstat -antp | grep 5672

在这里插入图片描述

选择配置:
查看rabbitmq插件列表
[root@ct ~]# rabbitmq-plugins list

开启rabbitmq的web管理界面的插件,端口为15672
rabbitmq-plugins enable rabbitmq_management

检查端口(25672 5672 15672)
ss -natp | grep 5672

可访问192.168.153.227:15672
默认账号密码均为guest

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3、安装memcached
作用:
安装memcached是用于存储session信息;服务身份验证机制(keystone)使用Memcached来缓存令牌 在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中

3、安装memcached
python-*模块在OpenStack中起到连接数据库的作用
yum install -y memcached python-memcached

修改Memcached配置文件
vim /etc/sysconfig/memcached     添加ct
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,ct"

systemctl start memcached
systemctl enable memcached

在这里插入图片描述
在这里插入图片描述

安装etcd
yum -y install etcd	

修改etcd配置文件
vim /etc/etcd/etcd.conf
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"	数据目录位置
	ETCD_LISTEN_PEER_URLS="http://192.168.100.10:2380"	  监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)#对外提供服务的地址(2379端口,集群内部的通讯端口)
	ETCD_LISTEN_CLIENT_URLS="http://192.168.100.10:2379"	对外提供服务的地址(2379端口,集群内部的通讯端口)
	ETCD_NAME="ct"	集群中节点标识(名称)
	ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.10:2380"	该节点成员的URL地址,2380端口:用于集群之间通讯
	ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.10:2379"	
	ETCD_INITIAL_CLUSTER="ct=http://192.168.100.10: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

在这里插入图片描述
在这里插入图片描述

确定C1安装OpenStack组件
yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils

openstack启动顺序:
先控制节点再计算结算关闭顺序
先关计算节点,再关控制节点

小结:
①安装环境软件包
②安装openstack-T 软件包
③网卡vm内网nat外网(外网模式需要指定route,ipvs_ route_metric=90)
④时间同步和免交互
⑤安装mariadb
⑥安装rabbitmq
⑦安装memcached (缓存session和token)
⑧安装etcd (去中心化分布式存储,特点是自动发现版本V3)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值