您的当前位置:首页部署OpenStack生成环境实战

部署OpenStack生成环境实战

2024-07-20 来源:爱问旅游网
Infrastructure Mgmt. & Data Mgmt.基础设施与数据管理责任编辑:季莹 投稿信箱:netadmin@365master.com

部署OpenStack生成环境实战■ 中核能源科技有限公司 侯圣宝

简单说编者按:关于OpenStack的部署有很多方法和社区项目,笔者公司采用了社区中的kolla项目作为部署OpenStack的方案,本文会详细介绍使用kolla在基于传统企业常用的vlan网络环境下部署OpenStack生产环境的实际案例。 源,可以将三台控制节点同时也作为计算节点来Kolla项目可以做到上百个节点开箱即用,把OpenStack项目用到的所有组件都容器化,并且所有的组件都具备生产级别的HA功能,能实现单个或整体OpenStack项目平滑的升级,可以说解决了OpenStack的一大痛点。图1 整体架构拓扑图

使用,对于作为计算节点的服务器,内存容量和CPU的物理核心数尽量的高一些,以便能承载更多的业务。2.存储私有云环境中可以选择后端的存储类型很多,可以采用传统的集中式存储产品和技术,比如NAS、Kolla分为一下几个模块,每个模块做一件事情(:1)Kolla,主要是负责Docker的镜像制作;(2)kolla-Ansible负责容器的配置管理(;3)Kolla-Kubernetes,也是负责容器集群的配置管理。本文我们主要采用kolla-ansible来进行部署OpenStack。Kolla本身提供了生产级别的容器的镜像,除非有定制化要求,否则完全可以直接使用。私有云整体架构规划笔者公司私有云项目公分两个阶段来进行实施,第一阶段先采用的5个物理节点来进行试运行和性能测试;第二阶段逐步添加存储和计算节点扩大规模; 整体架构如图1所示。iscsi等,也可以选择ceph这样的分布式存储系统。目前ceph与云环境的集成愈来愈成熟,其标准的S3接口方便与上层各类应用对接,再加上方便动态伸缩、负载平衡、冗余容灾等特性,最终笔者选择ceph作为云环境的后端存储,用来承载虚拟机文件、映像和卷的管理等。在实际环境中,可以根1.服务器整个云架构由三台控制节点和N个计算节点组成,为了能够充分利用服务器资782019.08 www.365master.com

责任编辑:季莹 投稿信箱:netadmin@365master.com

基础设施与数据管理Infrastructure Mgmt. & Data Mgmt.据自身负载情况,选择将ceph的监控节点(monitor)与OpenStack的控制节点放在同一服务器上,数据存储节点与计算节点放在同一服务器上,达到充分利用服务器资源的目的,而且可以使用SSD作为cache盘来提升性能。表1 网络规划表件负载均衡和Dashboard访问界面,由两个千兆/万兆网卡做bond,分别上联到堆叠的leaf交换机,实现链路冗别大,同时为了使现有业务和网络架构能够尽量不做改动的平滑迁移,因此没有使用流行的VXLAN,而还是采用了之前一直使用vlan网络。服务器网络方面,由于笔者公司选择将计算节点与存储节点融合在一起,因此服务器会有多组不同功能的网卡进行配置:存储网络:负责ceph存储节点之间的数据同步,由两个万兆网卡做bond,分别连上到堆叠的leaf交换机,实现链路冗余和带宽负载。外部网络:负责虚拟机与外部通信的网络,由两个千兆/万兆网卡做bond,分别上连到堆叠的leaf交换机,实现链路冗余和带宽负载,如果采用vlan方式,该leaf交换机的聚合端口应该配置为trunk模式。API网络:负责opensack个组件进行通信的,本例中该网络同时融合了各个组余和带宽负载。管理网络:负责部署管理OpenStack物理节点,由一个千兆网卡上联到管理网络交换机上,可以根据实际情况同其他网络融合。3.网络整个网络采用spine-leaf架构,spine层与leaf层分别采用万兆光纤交换机进行堆叠或者虚拟化技术,对上与核心交换机、对下与服务器利用端口聚合技术形成全互联网络。spin-leaf网络架构提供了解决横向网络连接的传输瓶颈,还提供了高度的扩展性,随着规模扩大可以将leaf横向不断扩展,它几乎能适应所有大中小型数据中心,当然各位可以根据自己公司和业务情况选择更适合自身的技术架构,如更小规模的云环境可以将spine与leaf合并起来也是一种经济选择。在二层网络技术方面,由于笔者公司业务规模不是特部署环境准备目前以5个节点为例,服务器系统为CentOS 7.3,将所有网卡根据前面规划,做好bond,接口整理网络规划如表1所示。1.部署节点上环境部署节点用来控制和部署OpenStack,kolla项目部署OpenStack采用kolla-ansible的方式,即通过ansible在各个物理节点上部署装有OpenStack各个项目的容器。因此要保证部署节点已经安装了ansible并做了到各个节点ssh免密钥等必备条件。2.获取docker镜像此前可以通过http://www.365master.com 2019.0879

Infrastructure Mgmt. & Data Mgmt.基础设施与数据管理责任编辑:季莹 投稿信箱:netadmin@365master.com

tarballs.OpenStack.org/kolla/images来获取kolla的docker镜像,但是从pike版开始,所有的镜像全移到了https://hub.docker.com/u/kolla/官方源中 ,目的是通过kolla-ansible安装的时候可以直接去下载images,免去还要建立本地源的麻烦。但是由于image较大有时对于目前在国内的很多企业网络环境来说访问官方源会很慢,造成了部署不便。为了解决这个问题,建议还是自行在部署节点建立docker源,那么怎么知道pike需要哪些image呢,如果访问官方docker源的话,会发现kolla的各种image都混合在一起,很难找全。我们可以通过http://tarballs.OpenStack.org/kolla下载pike版本的kolla。因为kolla本身是用来生成image的,因此解压缩后在其中的docker文件夹下就包含了kolla所支持的所有组件名称,由于我们要使用centos的 source方式部署,因此image的格式就是centos-source-[组表2 节点磁盘配置

1.缓存盘分区准备用作ceph的磁盘分区必须要指定LABLE,这样在部署的时候kolla才能够通过LABLE识别磁盘,并确定这个磁盘的用途件名称],大家可以通过脚本把这些组件名称提取出来,然后就可以将image批量pull下来,再push到我们自己建立的docker源上,关于docker image的pull和push,以及自己建立本地docker源我们就不讨论了。parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_CACHE_BOOTSTRAP 1 -12.数据和日志盘分区准备日志盘可以与数据盘同属一个磁盘,也可以指定外部日志磁盘,为了提升性能各节点环境准备各节点最小化安装好OS,网络配置好之后,yum update一下系统并重启,使其保持最新内核。本项目我们使用ceph作为后端存储,需要对存储节点的硬盘做初始化。笔者公司采取SSD与SATA混合使用,SSD用作cache和日志盘,SATA作为后端数据存储。如果服务器里面有RAID卡,为了获得更好性能需要将每个磁盘都配置成RAID 0。每个节点磁盘配置如表2所示。笔者使用一个独立的SSD作为日志盘,日志盘的命名与数据盘是有一定关系的,有多个数据盘的话,编号逐渐增1。parted /dev/sdd -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_1 1 -1parted /dev/sde -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_2 1 -1parted /dev/sdc -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP_1_J 1 -50000parted /dev/sdc -s -- mklabel gpt mkpart KOLLA_802019.08 www.365master.com

责任编辑:季莹 投稿信箱:netadmin@365master.com

基础设施与数据管理Infrastructure Mgmt. & Data Mgmt.CEPH_OSD_BOOTSTRAP_2_J 50000 -1000001.全局globals配置编辑/etc/kola/neutron_external_interface: “em4”neutron_plugin_agent: “linuxbrige” enable_ceph : “yes” #开启cephenable_cinder: “yes” #开启cinder功能enable_openvswitch: “no”ceph_enable_cache: “yes” #启用ceph缓存glance_backend_ceph: “yes” #指定glance后端使用ceph存储3.磁盘优化为了使磁盘在ceph环境下获得更好的性能,需要修改每个磁盘以下参数:echo “8192” > /sys/block/sdb/queue/read_ahead_kbecho “deadline” >/sys/block/sdb/queue/schedulerglobals.yml,里面可以定义开启哪些OpenStack组件,可以根据自己实际情况,来选择要安装的组件。其中选项做如下修改,如果有注释需要去掉:kola_install_type: “source” #指定部署方式,我们采用source方式OpenStack_release: “pike” #指定OpenStackOpenStack环境预配置在部署节点上通过http://tarballs.OpenStack.org/kolla-ansible/下载稳定版本的kolla-ansible,笔者生产环境用的ocata版本,之后升级到了pike版本,新部署的可以直接下载pike版本进行安装。将下载的kolla-版本kola_internal_vip_address: “172.16.6.100” #此ip必须没有被分配docker_registry: “172.16.245.20:4000” #本地docker源地址,如果使用公有源可以不配置此项docker_namespace: “kolla” #指定docker源名称network_interface: “em2” #api,存储、网络接口storage_interface: \"bond0\"cluster_interface: \"bond0\"tunnel_interface: \"bond0\"2.生成OpenStack密码cd kolla-ansible/tools./generate_passwords.py生成的密码会填充到/etc/kolla/passwords.yml中。3.配置ansible主机文件编辑kolla-ansible/ansible/etc/kolla目录复制到/etc下。在kolla下面有两个文件 globals.yml和passwords.yml,一个是部署OpenStack环境配置文件,包括指定安装源,定义安装哪些OpenStack组件等功能,一个是OpenStack中所用到的所有密码。ansible/inventory/multimode文件,根据各个节点功能在[control]、[network]、[compute]、[monitoring]、[storage]选项下将OpenStack节点信息填入,这样部署的时候可以www.365master.com 2019.0881

Infrastructure Mgmt. & Data Mgmt.基础设施与数据管理责任编辑:季莹 投稿信箱:netadmin@365master.com

通过指定这个文件来部署节点信息,当然这些节点的主机名需要事先通过DNS或者hosts文件进行解析。比如需要三个控制节点,因此在[control]项下面只写3个node信息。[control]node1node2node3em4外部网络接口vi kolla-ansible/ansible/roles/neutron/templates/ml2_conf.ini.j2network_vlan_ranges = physnet1flat_networks = *#验证环境./ kolla-ansible –i ../ansible/inventory/multimode prechecks 部署OpenStack在上述的环境都准备好之后就可以通过kolla-ansible进行部署了,过程很OpenStack节点环境初始化由于kolla是基于docker运行的,因此在简单,只需执行一条命令,然后等待即可,不需要人为参与。cd kolla-ansible/tools./kolla-ansible –i ../ansible/inventory/multimode deploy待执行完毕后不出现错误,那么整个部署就完成了,可以在浏览器访问管理界面http://172.16.6.100,进行一系列的管理操作。登录名为admin,密码存储在passwords.yml里面的 keystone_admin_password 项中。至此,整个OpenStack部署完成。容易出错的地方就是前期的环境部署,主要是因为系统有些软件包与pip安装的docker某些组件版本冲突,因此尽量最小化安装OS。N4.配置neutron网络文件因为笔者公司网络采用vlan方式,默认kolla-ansible只开启了vxlan和flat模式,因此需要修改neutron的ml2_conf.ini.j2等配置文件添加vlan功能,与此端口对应的交换机端口应配置成trunk模式。首先开启vlan支持vi kolla-ansible/ansible/group_vars/all.yml#修改如下选项,添加vlanneutron_tenant_network_types: \"vxlan,flat,vlan\"添加vlan网络所在端口,physnet1默认对应着OpenStack节点上需要预先配置好docker环境。kolla-ansible提供了这个功能。进入部署节点上kolla-ansible/tools文件夹,执行如下命令,来对节点初始化。这个过程会安装pip,并通过pip安装一些组件和相应版本的docker等,因此这时候所有OpenStack节点建议能够连接到互联网。如果顺利执行完毕不出现报错,我们再通过prechecks参数来进一步验证环境。cd kolla-ansible/tools#准备环境./kolla-ansible –i ../ansible/inventory/multimode bootstrap-servers822019.08 www.365master.com

因篇幅问题不能全部显示,请点此查看更多更全内容