设为首页 收藏本站
查看: 1051|回复: 0

[经验分享] 云计算与openstack学习(五)

[复制链接]

尚未签到

发表于 2018-5-31 13:01:07 | 显示全部楼层 |阅读模式
OpenStack 架构
DSC0000.jpg

OpenStack 已经走过了 6 个年头。 每半年会发布一个版本,版本以字母顺序命名。现在已经到第 12 个版本 Liberty(字母 L)。 OpenStack最初只有两个模块(服务),现在已经有 20+(见下图),每个模块作为独立的子项目开发。
DSC0001.jpg

通过实际操作由浅入深地学习和实践 OpenStack,并最终具备实施 OpenStack 的能力。
我们会把学习的重点放在 OpenStack 最核心的地方。 那什么是核心呢?请看下图
DSC0002.jpg

作为 IaaS 层的云操作系统,OpenStack 为虚拟机提供并管理三大类资源:计算、网络和存储。
这三个就是核心,所以学习重点就是: 搞清楚 OpenStack 是如何对计算、网络和存储资源进行管理的。 在 20+ 模块中,管理这三类资源的核心模块其实不多,这几个模块就是我们的重点了。
要达到这个目的,我们自然需要研究 OpenStack 的整体架构。 架构里哪些核心模块负责管理计算资源、网络资源和存储资源?模块之间如何协调工作? 同时我们会构建一个实验环境,进到各个模块的内部,通过实际操作真正理解和掌握 OpenStack。
好,下面我们就从架构开始吧。
OpenStack 架构

架构能帮助我们站在高处看清楚事物的整体结构,避免过早地进入细节而迷失方向。
下图是 OpenStack 的 Conceptual Architecture
DSC0003.jpg
中间菱形 DSC0004.jpg 是虚拟机,围绕 VM 的那些长方形代表 OpenStack 不同的模块(OpenStack 叫服务
DSC0005.jpg Nova:管理 VM 的生命周期,是 OpenStack 中最核心的服务。
DSC0006.jpg Neutron:为 OpenStack 提供网络连接服务,负责创建和管理L2、L3 网络,
                       为 VM 提供虚拟网络和物理网络连接。
DSC0007.jpg Glance:管理 VM 的启动镜像,Nova 创建 VM 时将使用 Glance 提供的镜像。
DSC0008.jpg Cinder:为 VM 提供块存储服务。Cinder 提供的每一个 Volume 在 VM 看来就是一块
                       虚拟硬盘,一般用作数据盘。
DSC0009.jpg Swift:提供对象存储服务。VM 可以通过 RESTful API 存放对象数据。作为可选的方案

                       Glance 可以将镜像存放在 Swift 中;Cinder 也可以将 Volume 备份到 Swift 中。
DSC00010.jpg Keystone:为 OpenStack 的各种服务提供认证和权限管理服务。简单的说,
                       OpenStack 上的每一个操作都必须通过 Keystone 的审核。
DSC00011.jpg Ceilometer:提供 OpenStac k监控和计量服务,为报警、统计或计费提供数据。
DSC00012.jpg Horizon:为 OpenStack 用户提供一个 Web 的自服务 Portal。
OpenStack 的核心服务:

  • Nova 管理计算资源,是核心服务。
  • Neutron 管理网络资源,是核心服务。
  • Glance 为 VM 提供 OS 镜像,属于存储范畴,是核心服务。
  • Cinder 提供块存储,VM怎么也得需要数据盘吧,是核心服务。
  • Swift 提供对象存储,不是必须的,是可选服务。
  • Keystone 认证服务,没它 OpenStack 转不起来,是核心服务。
  • Ceilometer 监控服务,不是必须的,可选服务。
  • Horizon 大家都需要一个操作界面吧。
服务内部的组成结构。 Logical Architecture
DSC00013.jpg
在 Logical Architecture 中,可以看到每个服务又由若干组件组成。 以 Neutron 为例,包含
DSC00014.jpg
1. Neutron Server、Neutron plugins 和 Neutron agents
2. Network provider
3. 消息队列 Queue
4. 数据库 Neutron Database
    Logical Architecture,描述的是 Neutron 服务各个组成部分以及各组件之间的逻辑关系。 而在实际的部署方案上,各个组件可以部署到不同的物理节点上。

OpenStack 本身是一个分布式系统,不但各个服务可以分布部署,服务中的组件也可以分布部署。 这种分布式特性让 OpenStack 具备极大的灵活性、伸缩性和高可用性。 当然从另一个角度讲,这也使得 OpenStack 比一般系统复杂,学习难度也更大。
后面章节我们会深入学习 Keystone、Glance、Nova、Neutron 和 Cinder
  
搭建 OpenStack 实验环境
DSC00015.jpg

在学习 OpenStack 各服务之前,让我们先搭建起一个实验环境。
CloudMan 推荐使用 DevStackhttp://docs.openstack.org/developer/devstack/

DevStack 丰富的选项能够灵活地选取和部署想要的 OpenStack 服务,非常适合学习和研究。


部署拓扑

首先我们来设计 OpenStack 的部署拓扑。
OpenStack 是一个分布式系统,由若干不同功能的节点(Node)组成:
1. 控制节点(Controller Node) 管理 OpenStack,其上运行的服务有
Keystone、Glance、Horizon 以及 Nova 和 Neutron 中管理相关的组件。 控制节点
也运行支持 OpenStack 的服务,例如 SQL 数据库(通常是 MySQL)、
消息队列(通常是 RabbitMQ)和网络时间服务 NTP。
2. 网络节点(Network Node) 其上运行的服务为 Neutron。
为 OpenStack 提供 L2 和 L3 网络。 包括虚拟机网络、DHCP、路由、NAT 等。
3. 存储节点(Storage Node) 提供块存储(Cinder)或对象存储(Swift)服务。
4.计算节点(Compute Node) 其上运行 Hypervisor(默认使用 KVM)。 同时运行 Neutron 服务的 agent,为虚拟机提供网络支持。
这几类节点是从功能上进行的逻辑划分,在实际部署时可以根据需求灵活配置,比如:
1. 在大规模OpenStack生产环境中,每类节点都分别部署在若干台物理服务器上,
各司其职并互相协作。这样的环境具备很好的性能、伸缩性和高可用性。
2. 在最小的实验环境中,可以将 4 类节点部署到一个物理的甚至是虚拟服务器上。
麻雀虽小五脏俱全,通常也称为 All-in-One 部署。
在我们的实验环境中,为了使得拓扑简洁同时功能完备,我们用两个虚拟机:
1. devstack-controller:控制节点 + 网络节点 + 块存储节点 + 计算节点
2. devstack-compute:计算节点
DSC00016.jpg
物理资源需求
DSC00017.jpg
CPU 和内存供参考。
如果是在自己的 PC 机上创建虚机部署,资源可能达不到,可以适当调整。
网络规划
DSC00018.png

网络上规划了三个网络:
1. Management Network:用于 OpenStack 内部管理用,比如各服务之间通信。 这里使用 eth0
2. VM(Tenant)Network:OpenStack 部署的虚拟机所使用的网络。
OpenStack 支持多租户(Tenant),虚机是放在 Tenant 下的,所以叫 Tenant Network。 这里使用 eth1
3 External Network:一般来说,Tenant Network 是内部私有网络,只用于 VM 之间通信,与其他非 VM 网络是隔离的。
这里我们规划了一个外部网络(External Network),通过 devstak-controller 的 eth2 连接。
Neutron 通过 L3 服务让 VM 能够访问到 External Network。
对于公有云,External Network 一般指的是 Internet。 对于企业私有云,External Network 则可以是 Intranet 中的某个网络。
部署 DevStack
DSC00019.jpg

本节按照以下步骤部署 DevStack 实验环境,包括控制节点和计算节点
创建虚拟机


按照物理资源需求创建 devstack-controller 和 devstak-compute 虚拟机
安装操作系统
安装 并配置 eth0 的 IP devstack-controller  192.168.104.10 devstak-compute    192.168.104.11
下载代码

下载 devstack 代码,并切换到 stable/liberty 分支
apt-get install git -y
git clone https://git.openstack.org/openstack-dev/devstack -b stable/liberty
配置 stack 用户

创建 stack 用户
devstack/tools/create-stack-user.sh
为方便起见,将devstack目录放到/opt/stack下,并设置权限
mv devstack /opt/stack
chown -R stack:stack /opt/stack/devstack
切换到 stack 用户
su – stack
cd devstack
编写运行配置文件
在 /opt/stack/devstack 目录下,创建 local.conf。
devstack-controller
[[local|localrc]]
MULTI_HOST=true
HOST_IP=192.168.104.10
# management & api network
LOGFILE=/opt/stack/logs/stack.sh.log
# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz
# enable neutron-ml2-vlan
disable_service n-net
enable_service q-svc,q-agt,q-dhcp,q-l3,q-meta,neutron,q-lbaas,q-fwaas,q-vpn
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
LOG_COLOR=False
LOGDIR=$DEST/logs
SCREEN_LOGDIR=$LOGDIR/screen
devstack-compute
[[local|localrc]]
MULTI_HOST=true
HOST_IP=192.168.104.11
# management & api network
# Credentials
ADMIN_PASSWORD=admin
MYSQL_PASSWORD=secret
RABBIT_PASSWORD=secret
SERVICE_PASSWORD=secret
SERVICE_TOKEN=abcdefghijklmnopqrstuvwxyz
# Service information
SERVICE_HOST=192.168.104.10
MYSQL_HOST=$SERVICE_HOST
RABBIT_HOST=$SERVICE_HOST
GLANCE_HOSTPORT=$SERVICE_HOST:9292
Q_HOST=$SERVICE_HOST
KEYSTONE_AUTH_HOST=$SERVICE_HOST
KEYSTONE_SERVICE_HOST=$SERVICE_HOST
CEILOMETER_BACKEND=mongodb
DATABASE_TYPE=mysql
ENABLED_SERVICES=n-cpu,q-agt,neutron
Q_AGENT=linuxbridge
ENABLE_TENANT_VLANS=True
TENANT_VLAN_RANGE=3001:4000
PHYSICAL_NETWORK=default
# vnc config
NOVA_VNC_ENABLED=True
NOVNCPROXY_URL="http://$SERVICE_HOST:6080/vnc_auto.html"
VNCSERVER_LISTEN=$HOST_IP
VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN
LOG_COLOR=False
LOGDIR=$DEST/logs
SCREEN_LOGDIR=$LOGDIR/screen

开始部署

分别在 devstack-controller 和 devstak-compute 上执行命令
./stack.sh
会输出各项操作的结果。 日志会写到 stack.sh.log 文件。
整个过程需要连接Internet,网速慢可能会花较长时间,成功后最后会打印出相关信息。
devstack-controlle 上的输出
DSC00020.jpg

devstack-compute 上的输出
DSC00021.jpg
验证 OpenStack

下面验证 OpenStack 已经正常运行 浏览器访问 http://192.168.104.10/(devstack-controller 的 IP) admin/admin
DSC00022.jpg

点击 System->System Information,确保各个服务的状态正常
DSC00023.jpg
DSC00024.jpg
DSC00025.jpg

这里 cinder-volume 的状态是 “Down”,这是因为还没有配置 cinder,后面会让它 Up 起来。
DSC00026.jpg

启动 OpenStack
如果重启了系统,OpenStack 不会自动启动,可以运行下面命令
cd devstack ./rejoin-stack.sh
运行成功后,OpenStack 的每个服务都在一个 screen 中以进程方式运行。 使用 screen 有几个好处:
1. 可以方便的在不同服务之间切换和查看日志。 因为OpenStack的服务很多,每个服务都有自己的日志文件。 查找日志是一件非常麻烦的事情,screen可以帮我们提高效率。
2. 当我们修改了某个服务的配置文件需要重启服务时,只需在该服务的 screen 窗口 Ctrl+C,然后在命令行中找到上一个命令(Up键)执行就行,这个命令就是启动服务的命令。
DSC00027.jpg

下面是 screen 常用命令
在 screen 中执行
Ctrl+a+n 切换到下一个窗口
Ctrl+a+p 切换到前一个窗口(与 Ctrl+a+n 相对)
Ctrl+a+0..9 切换到窗口 0..9
Ctrl+a+d 暂时断开(detach)当前 screen 会话,但不中断 screen 窗口中程序的运行
在 shell 中执行
screen -ls  列出当前所有的 session
screen -r stack  回到 devstack 这个 session

删除自动创建的网络
Devstack 在部署时可能会创建几个测试网络,为了得到一个干净的环境需将其删除
删除 Router Admin->System->Routers


DSC00028.jpg
删除 Network Admin->System->Networks
DSC00029.jpg

至此,我们得到了一个干净的 OpenStack 环境。 后面会在这个环境中实践各个模块。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-485629-1-1.html 上篇帖子: 云计算与openstack学习(四) 下篇帖子: openstack之创建虚拟机
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表