OpenStack 的部署(一)——介绍、基础环境配置

42 篇文章 1 订阅

OpenStack 概述

1、简介

NASA (美国国家航空航天局)和 Rackspace(是一家全球领先的托管服务器及云计算提供商)共同发起
以 Apache 许可证(Apache 软件基金会发布的一个自由软件许可证)授权的自由软件和开放源代码项目,不只是一个软件,这个项目由几个主要的组件组合起来完成一些具体的工作
为公有云及私有云的建设与管理提供可扩展的弹性的云计算服务(开源项目)
覆盖了网络、虚拟化、操作系统、服务器等各个方面

2、openstack服务

openstack内部核心是:实例(虚拟机)
openstack服务都是为实例服务的

服务项目名称描述
Compute(计算服务)Nova①负责实例生命周期的管理,计算资源的单位②对 Hypervisor 进行屏蔽,支持多种虚拟化技术(红帽默认为 KVM),且支持横向扩展
Network(网络服务)Neutron①负责虚拟网络的管理,为实例创建网络的拓扑结构②是面向租户的网络管理,可以自己定义自己的网络,各个租户之间互不影响
Identity(身份认证服务)Keystone①类似于 LDAP 服务,对用户、租户和角色、服务进行认证与授权②且支持多认证机制
Dashboard(控制面板服务)Horizon①提供一个 Web 管理界面②与 OpenStack 底层服务进行交互
Image Service(镜像服务)Glance①提供虚拟机镜像模板的注册与管理,将做好的操作系统拷贝为镜像模板,在创建虚拟机时可直接使用②可支持多格式的镜像
Block Storage(块存储服务)Cinder①负责为运行实例提供持久的块存储设备,可进行方便的扩展,按需付费②支持多种后端存储
Object Storage(对象存储服务)Swift①为 OpenStack 提供基于云的弹性存储②支持集群无单点故障③对静态文件的存储
Telemetry(计量服务)Ceilometer①用于度量、监控和控制数据资源的集中来源②为 OpenStack 用户提供记账途径

3、优势

①控制性

  • 完全开源的平台,开源的平台意味着不会被某个特定的厂商绑定和限制
    提供 API 接口,模块化的设计能把遗留的和第三方的技术进行集成,从而来满足自身业务需要
    ②兼容性

  • OpenStack 兼容其他公有云,方便用户(企业)很容易的将数据和应用迁移
    ③可扩展性

-模块化设计,可以通过横向扩展来增加节点、添加资源

目前,主流的 Linux 系统,基本都支持 OpenStack
OpenStack 在大规模部署公有云时,在可扩展性上有优势,而且也可用于私有云,一些企业特性也在逐步完善中

④灵活性

-用户可以根据自己的需要建立基础设施,也可以轻松地为自己的集群增加规模

在极为宽松自由的 Apache 许可下发布,这意味着任何第三方都可以重新发布这些代码,在其基础上开发私有软件并按照新的许可发布,给众多的云计算企业,留下了的更大的发展空间

⑤行业标准
来自全球十多个国家的60多家领军企业,包括 Cisco、Dell、Intel 以及微软都参与到了 OpenStack 的项目中,并且在全球使用 OpenStack 技术的云平台在不断的上线
云计算领军企业的加入,会无形透露出一个信息,就是OpenStack未来可能会成为一个行业标准,而且OpenStack项目研发的初衷就是制定一套开源软件标准
⑥实践检验
实践是检验真理的唯一标准,OpenStack 的云操作系统,已被全球正在运营的大型公有云和私有云技术所验证过
OpenStack 在中国的发展趋势也是非常之好,包括物联网用户、国内高校以及部分大小企业,都开始利用 OpenStack 建立云计算环境,整合企业架构以及治理公司内部的IT基础架构

4、openstack架构

设计原则:

  • 按照不同的功能和功能性划分不同的项目,拆分子系统
  • 按照逻辑计划,规范子系统之间的通信
  • 通过分层设计整个系统架构
  • 不同的功能子系统间提供统一的API接口

openstack概念架构

在这里插入图片描述
图解:
图中主要的就是其中的组件,组件可细分为以下三种:
1、全局组件(keystone、ceilometer、horizon)
2、核心组件(Nova、swift、cinder、neutron、glance )
3、外部组件(ironic 裸金属服务、trove 数据库管理、heat 可以管理云环境中资源等、sahara 便于创建和管理计算框架集群)
里面的组件都是由Nova组件调用提供并创建虚拟机
补充:OpenStack组件间的通信关系
1、基于 HTTP 协议

通过各项目的 API 建立的通信关系,基本上都属于这一类,这些 API 都是 RESTful Web API
2、基于 AMQP协议(基于消息队列协议)

AMQP(Advanced Message Queuing Protocol)一个提供统一消息服务的应用层标准高级消息队列协议)
主要是每个项目内部各个组件之间的通信
3、基于数据库连接(主要是 SQL 的通信)

属于各个项目内部
4、Native API(基于第三方的 API)

OpenStack 各组件和第三方的软硬件之间

openstack物理架构

在这里插入图片描述

图解:
根据职能分类
控制节点:管理openstack架构
网络节点:复制各节点之间的通信/交互
计算节点:主要负责承载实例,次要负责具体需求的处理
存储节点:提供存储服务

注:openstack架构图来源于网络

5、openstack的部署

注意事项
OpenStack组件安装的顺序
1、Keystone (apache)
2、glance
3、nova
4、neutron

部署openstack组件时,需先行安装认证服务(keystone),而认证服务是使用Apache运行的,安装完成后才可以创建、管理账号,然后安装镜像服务(glance)、计算服务(nova)、网络服务(neutron)
其中计算服务和网络服务分为管理端和客户端,所以需要在openstack的管理端安装计算服务和网络服务的管理端,在创建虚拟机的node节点上安装计算服务和网络服务的客户端,最后安装dashboard服务,openstack各种组件的API都是通过apache运行的;
openstack的管理端负责创建、管理虚拟机过程的调度
通过openstack管理端创建虚拟机的相关数据最终都会记录到mysql(mariadb)中;node节点没有权限往数据库中写数据,只有控制端有权限,并且node节点与控制端通讯是通过rabbitmq间接通讯,node节点会监听rabbitmq,控制端也会监听rabbitmq,控制端把创建虚拟机的指令发送到rabbitmq,由监听rabbitmq指定队列的node节点接收消息并创建虚拟机

一、 虚拟机资源信息

1、控制节点 ct
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:VMnet3(局域网)192.168.100.10 NAT-192.168.132.70
操作系统 Centos 7.4(1706)——最小化安装
2、计算节点 c1
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:VMnet3(局域网)192.168.100.20 NAT-192.168.132.80
操作系统 Centos 7.4(1706)——最小化安装
3、计算节点 c2
CPU:双核双线程-CPU虚拟化开启
内存:8G
硬盘:300G
双网卡:VMnet3(局域网)192.168.100.30 NAT-192.168.132.90
操作系统 Centos 7.4(1706)——最小化安装

二、部署思路

在这里插入图片描述

三、资源规划

主机名内存硬盘网卡系统
CT8300VM:192.168.100.10 NAT:192.168.132.70Centos7.6
C18300VM:192.168.100.20 NAT:192.168.132.80Centos7.6
C28300VM:192.168.100.30NAT:192.168.132.90Centos7.6

四、基础环境配置

==CT VM:192.168.100.10 NAT:192.168.132.70

C1 VM:192.168.100.20 NAT:192.168.132.80

C2 VM:192.168.100.30 NAT:192.168.132.90 ==
下面以CT为列,其他的注意修改成对应的ip

1、修改添加NAT网卡配置

在这里插入图片描述
CT、C1、C2节点网卡都需要设置

2、防火墙、核心防护、主机名

控制节点ct(192.168.132.70)
计算节点c1(192.168.132.80)
计算节点c2(192.168.132.90)

在这里插入图片描述

3、配置在线源

cd /etc/yum.repos.d/
mkdir repo.bak
mv *.repo repo.bak/
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo       #配置在线源

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

4、基础环境依赖包

yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre  pcre-devel expat-devel cmake  bzip2 lrzsz 

#-----------------------模块解释------------------------
net-tools           ifconfig命令行工具
bash-completion     辅助自动补全工具
vim                 vim工具
gcc gcc-c++         编译环境
make                编译器
pcre pcre-devel     是一个Perl库,包括 perl 兼容的正则表达式库
expat-devel         Expat库,Expat是一个面向流的xml解析器
cmake               CMake是一个跨平台的编译工具,CMkae目前主要使用场景是作为make的上层工具,产生可移植的makefile文件
lrzsz               可使用rz、sz命令上传、下载数据

在这里插入图片描述

OpenStack 的 train 版本仓库源安装包,同时安装 OpenStack 客户端和 openstack-selinux 安装包

yum -y install \
centos-release-openstack-train \
python-openstackclient \
openstack-selinux \
openstack-utils

#----------------模块解释------------------------------
centos-release-openstack-train  train版本包
python-openstackclient          安装openstack客户端
openstack-selinux               安装selinux自动管理,这里selinux是关闭的
openstack-utils                 方便后续直接可以通过命令行方式修改配置文件
6773

在这里插入图片描述

5、VMnet1网卡配置参数

1、修改VMnet1网卡配置

cd /etc/sysconfig/network-scripts/

vim ifcfg-ens36
#修改
BOOTPROTO=static
ONBOOT=yes

#末行添加
IPADDR=192.168.100.10			#根据网段,设置VMnet1网段的IP,自定义
NETMASK=255.255.255.0			#设置掩码

systemctl restart network		#重启网卡
ifconfig						#再次查看,是否修改完成

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

6、配置映射

所有节点
将VMnet1IP与主机名注入到主机映射文件中,用于区分主机,便于相互访问

echo '192.168.100.10 ct' >> /etc/hosts
echo '192.168.100.20 c1' >> /etc/hosts
echo '192.168.100.30 c2' >> /etc/hosts
cat /etc/hosts

在这里插入图片描述

7、免交互

三台节点做免交互非对称密钥

ssh-keygen -t rsa
ssh-copy-id ct
ssh-copy-id c1
ssh-copy-id c2

在这里插入图片描述

在这里插入图片描述

8、时间同步+周期性计划任务

ct ->同步阿里云时钟服务器
c1、c2 -> 同步ct

vi /etc/resolv.conf
nameserver 114.114.114.114

yum install chrony -y

在这里插入图片描述
在这里插入图片描述
==ct VM:192.168.100.10 NAT:192.168.132.70 ==

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网段的主机来同步时钟服务

systemctl enable chronyd
systemctl restart chronyd

#使用 chronyc sources 时间同步
chronyc sources

在这里插入图片描述
在这里插入图片描述
C1 VM:192.168.100.20 NAT:192.168.132.80
C2 VM:192.168.100.30 NAT:192.168.132.90

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			          #配置阿里云时钟服务器源,同步指向控制节点ct

systemctl enable chronyd.service
systemctl restart chronyd.service

chronyc sources

在这里插入图片描述
C2设置同C1这里就不演示了
在这里插入图片描述
计划任务

#配置计划任务,每隔2分钟同步一次
crontab -e
*/2 * * * * /usr/bin/chronyc sources >>/var/log/chronyc.log

#查看设置的周期性任务
crontab -l

在这里插入图片描述

五、系统环境配置

1、安装、配置MariaDB

CT VM:192.168.100.10 NAT:192.168.132.70

yum -y install mariadb mariadb-server python2-PyMySQL libibverbs

#---------模块解释---------------------------------
mariadb:是mysql的一个分支,是一款完全兼容mysql的开源软件
mariadb-server:数据库服务
python2-PyMySQL:用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端
libibverbs:远程直接内存访问

在这里插入图片描述
添加MySQL子配置文件,增加如下内容

vim /etc/my.cnf.d/openstack.cnf
[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.10			#控制节点局域网地址
default-storage-engine = innodb 		#默认存储引擎 
innodb_file_per_table = on 				#每张表独立表空间文件
max_connections = 4096 				    #最大连接数 
collation-server = utf8_general_ci 		#服务器校对时不区分大小写
character-set-server = utf8             #默认字符集 
#---------------------------------------------------------------

systemctl enable mariadb
systemctl start mariadb

在这里插入图片描述
在这里插入图片描述
执行MariaDB 安全配置脚本

mysql_secure_installation
#---------输出内容-------------------------------------------
Enter current password for root (enter for none): 	#输入当前root密码,回车
OK, successfully used password, moving on...
Set root password? [Y/n] Y							#是否需要更改root密码,Y确认
Remove anonymous users? [Y/n] Y						#是否移除其他用户,Y确认移除
 ... Success!
Disallow root login remotely? [Y/n] n				#是否不允许root用户远程登陆,输入n,允许root用户远程登陆
 ... skipping.
Remove test database and access to it? [Y/n] Y 		#是否删除test测试库,Y确认删除
Reload privilege tables now? [Y/n] Y 				#是否刷新规则,Y确认刷新
#------------------------------------------------------------

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

2、安装、配置RabbitMQ

CT VM:192.168.100.10 NAT:192.168.132.70
所有创建虚拟机的指令,控制端都会发送到rabbitmq,node节点监听rabbitmq

yum -y install rabbitmq-server

systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service

在这里插入图片描述
创建消息队列用户,用于controler和 计算节点连接rabbitmq的认证(关联)

rabbitmqctl add_user openstack RABBIT_PASS
#-----------输出内容-------------
Creating user "openstack"
#----------------------------------

在这里插入图片描述
配置openstack用户的操作权限(正则,配置读写权限)

rabbitmqctl set_permissions openstack ".*" ".*" ".*"
#------------输出内容---------------------------------------
Setting permissions for user "openstack" in vhost "/"

#可查看25672和5672 两个端口(5672是Rabbitmq默认端口,25672是Rabbit的测试工具CLI的端口)
netstat -natp | grep 5672

在这里插入图片描述
查看rabbitmq插件列表

rabbitmq-plugins list

在这里插入图片描述
开启rabbitmq的web管理界面的插件,端口为15672

rabbitmq-plugins enable rabbitmq_management

在这里插入图片描述
检查端口(25672 5672 15672)

ss -natp | grep 5672

在这里插入图片描述
可访问192.168.132.70:15672
默认账号密码均为guest
在这里插入图片描述
在这里插入图片描述

3、安装memcached

在这里插入图片描述

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

在这里插入图片描述
修改Memcached配置文件

vim /etc/sysconfig/memcached
PORT="11211"                      #memcached端口11211
USER="memcached"                  #用户memcached
MAXCONN="1024"                    #最大连接数1024
CACHESIZE="64"                    #字符集大小64位
OPTIONS="-l 127.0.0.1,::1,ct"     #监听地址,127.0.0.1:本地地址,::是ipv6地址,ct是本地VMnet1地址

systemctl enable memcached
systemctl start memcached
netstat -nautp | grep 11211

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

4、安装etcd

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_LISTEN_CLIENT_URLS="http://192.168.100.10:2379"
ETCD_NAME="ct"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.10: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"
#-------------------配置解释---------------------------------------
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"  #数据目录位置
ETCD_LISTEN_PEER_URLS="http://192.168.100.10:2380" #监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)
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 enable etcd.service
systemctl start etcd.service
netstat -anutp |grep 2379
netstat -anutp |grep 2380

在这里插入图片描述
在这里插入图片描述
到此openstack的环境配置就部署完成了。

总结

1、基础环境配置

防火墙、核心防护、主机名
基础环境依赖包
修改网卡配置
配置映射
免交互
时间同步+周期性计划任务
2、安装openstack基础服务

  • 检验MariaDB数据库是否开启
systemctl status mariadb
  • 检验RabbitMQ消息队列是否开启
#检查端口(25672 5672 15672)
ss -natp | grep 5672
或
netstat -natp | grep 5672
  • 检验memcached缓存系统是否开启
ss -nautp | grep 11211
或
netstat -nautp | grep 11211
  • 检验etcd分布式可靠的键值存储数据库是否开启
netstat -anutp |grep 2379
netstat -anutp |grep 2380
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
OpenStack中,RabbitMQ是消息代理的核心组件,负责处理各种消息,包括API请求、队列通信和通知。为了保证高可用性和可扩展性,我们可以将RabbitMQ部署为集群。 以下是在OpenStack部署RabbitMQ集群的步骤: 1. 安装RabbitMQ软件包 在每个节点上安装RabbitMQ软件包。可以使用以下命令进行安装: ``` sudo apt-get install rabbitmq-server ``` 2. 配置RabbitMQ 在每个节点上,编辑RabbitMQ配置文件/etc/rabbitmq/rabbitmq-env.conf,指定以下环境变量: ``` NODE_IP_ADDRESS=<本地IP> NODE_PORT=5672 CLUSTER_WITH=<其他节点IP> ``` 其中,NODE_IP_ADDRESS是本地IP地址,CLUSTER_WITH是其他节点的IP地址。这些变量将用于RabbitMQ节点间通信。 3. 启用RabbitMQ插件 在每个节点上启用RabbitMQ集群插件。可以使用以下命令启用插件: ``` sudo rabbitmq-plugins enable rabbitmq_management rabbitmq_peer_discovery_aws ``` 4. 启动RabbitMQ节点 在每个节点上启动RabbitMQ节点。可以使用以下命令启动节点: ``` sudo rabbitmq-server -detached ``` 5. 将节点加入集群 在任何一个节点上,执行以下命令将节点加入集群: ``` sudo rabbitmqctl stop_app sudo rabbitmqctl join_cluster rabbit@<其他节点名称> sudo rabbitmqctl start_app ``` 其中,<其他节点名称>是集群中的其他节点的名称。 6. 验证集群状态 在任何一个节点上,执行以下命令验证集群状态: ``` sudo rabbitmqctl cluster_status ``` 如果输出包含所有节点的信息,则集群已成功部署。 注意:在部署RabbitMQ集群时,需要确保集群节点之间的网络连接正常,并且防火墙已正确配置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值