查看原文
其他

OpenStack 在纯 OpenPOWER 环境下的部署

2017-01-06 云技术实践

自 OpenStack 发展的短短 5 年时间,它已经成为整个云管理系统首屈一指的选择,同时 OpenStack 社区也已成长为仅次于 Linux 的第二大活跃开源社区。无论从代码量和部署量来说,OpenStack 无疑是开源云管理软件的领跑者。与此同时,在云计算浪潮的推动下,OpenPOWER 作为开放服务器开发联盟,在仅仅 3 年时间内吸引了大量业界厂商,市场上已经涌现了许多基于 OpenPOWER 的硬件系统。纯 OpenPOWER 硬件环境下部署 OpenStack 成为炙手可热的话题。

本项目初衷是在 OpenPOWER 架构硬件系统上部署云管理系统 OpenStack。同时,也提供了一个 OpenPOWER 的云参考配置。

本文中所涉及到的代码库地址:

1系统规划


1.1硬件系统


本代码库中所涉及到的脚本均以 Ansible 的 YAML 格式撰写,因此可以使用在所有 OpenPOWER 系统上。当前配置已经在苏州中太服务器 RedPOWER C210、Tyan 服务器 TN71-BP012、IBM 服务器 MTM8348,IBM 服务器 MTM8335 得到验证。

1.2操作系统


由于 RHEL/CentOS 的 RDO 还没有完成,目前本项目仅支持 Ubuntu Server 作为部署操作系统。

针对于 Ubuntu Server 操作系统,推荐使用 LTS 版本部署。

目前 Ubuntu 支持列表:

  • Ubuntu 14.04 LTS

  • Ubuntu 16.04 LTS

1.3OpenStack


本参考部署中使用 OpenStack Mitaka 作为部署版本,配置中包括如下 OpenStack 的核心服务:

  • 认证服务 Keystone

  • 镜像服务 Glance

  • 计算服务 Nova

  • 网络服务 Neutron

  • 卷设备存储服务 Cinder

同时,配置中控制节点将会包含 Horizon 作为控制台服务。


1.4网络架构


本配置中部署的网络基于 LinuxBridge,但是 Open vSwitch 同样可以应用在本配置上。租户隔离默认使用 VxLan。所有参数可以通过计算服务 Nova 和网络服务 Neutron 的配置文件进行修改。

在本参考配置中,每个节点要求配备 2 个网络接口。一个用于公有网络连接,另一个用于内部私有网络。

图 1:部署网络拓扑图


2安装指南


在这个指南中,外部/公有网络使用 192.168.0.0/24,内部私有网络使用 172.0.0.0/24。


2.1控制/计算节点安装


  1. 安装操作系统(Ubuntu Server LTS)。

  2. 更新系统。
    sudo apt update
    sudo apt upgrade -y

  3. 重启系统。

  4. 启用 root 账户并设置密码。
    sudo passwd root

  5. 安装 openssh-server。
    sudo apt install openssh-server -y

  6. 修改/etc/ssh/sshd_config 为 root 启用 ssh 登陆。修改 PermitRootLogin 为 Yes。
    PermitRootLogin Yes

  7. 重启 ssh 服务。
    sudo service ssh restart

  8. 安装 python。
    sudo apt install python -y

  9. 手动设置网络接口设备名。
    外部/共有网络接口设备名设置为:en0。
    内部/私有网络接口设备名设置为:eth0。
    可以通过创建(或者修改)/etc/udev/rules.d/70-network.rules 来修改默认网络接口设备名,如下:


    # external/public network interface
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC ADDRESS", NAME="en0"
    # internal/private network interface
    SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="MAC ADDRESS", NAME="eth0"

    替换上文中的 MAC ADDRESS 为所使用系统的硬件 MAC 地址。

  10. 通过修改/etc/network/interfaces 设置网络接口 en0 和 eth0 的 IP 地址。
    例如:

    auto en0
    iface en0 inet static
    address 192.168.1.101
    netmask 255.255.255.0
    gateway 192.168.1.1
    dns-nameserver 192.168.1.1

    auto eth0
    iface eth0 inet static
    address 172.0.0.11
    netmask 255.255.255.0
    \

  11. 修改/etc/hostname 为每个节点设置主机名。与此同时,/etc/hosts 中写入所有节点记录。
    修改完/etc/hostname 后运行,
    sudo hostname -F /etc/hostname
    在每个节点的/etc/hosts 中添加所有节点信息,例如:

    # OpenPOWER OpenStack cluster
    172.0.0.11 op-controller controller
    172.0.0.21 op-compute-01
    172.0.0.22 op-compute-02 


    这个示例中,需要注意保留粗体 controller 字段在控制节点行的末尾。

  12. 重启系统。


2.2部署系统安装


  1. 安装 Ansible 与 git。
    sudo apt install ansible git -y

  2. 克隆代码库。
    cd
    git clone https://github.com/edwin-wang/cbop

  3. 修改 cbop/ansible/ansible_hosts 并修改 root 密码。
    在 ansible_hosts 文件中,所有 IP 地址是用外部/共有网络地址。
    例如:

    [all:vars]
    ansible_ssh_user=root
    ansible_ssh_pass=PASSWORD

    [cbop:children]
    cbop-repo
    cbop-controller
    cbop-compute

    [cbop-repo]
    op-controller ansible_ssh_host=192.168.1.101

    [cbop-controller]
    op-controller ansible_ssh_host=192.168.1.101 ENABLE_REPO=False

    [cbop-compute]
    op-compute-01 ansible_ssh_host=192.168.1.102 ENABLE_REPO=False
    op-compute-02 ansible_ssh_host=192.168.1.102 ENABLE_REPO=False


    用控制/计算节点的 root 密码替换示例中的 PASSWORD。同时,修改 cbop-repo,cbop-controller 和 cbop-compute 章节中的 IP 地址和主机名。

  4. 验证部署系统与各节点 ssh 连接,确保各节点信息保存至部署主机的~/.ssh/known_hosts 中。

  5. 通过 ansible/group_vars/cbop.yml 修改部署参数。
    修改 NOVNCPROXY_BASE_URL_IP 为 controller 的公网/外部 IP 地址。

  6. 部署控制节点。
    cd cbop/ansible/
    ansible-playbook -i ansible_hosts cbop-controller.yml

  7. 部署计算节点。
    ansible-playbook -i ansible_hosts cbop-compute.yml

  8. 等待部署完成。控制台默认被部署在控制节点中。通过浏览器访问如下地址可以访问 OpenStack 控制台。

    使用控制节点的外部 IP 地址替换粗体的 CONTROLLER。
    默认用户名:admin
    默认密码:nova


3功能验证


可以通过 GUI 和 CLI 两种方式对已部署完成的 OpenStack 系统进行功能验证。

主要验证网络管理、镜像管理、虚拟机管理和安全策略管理 4 方面功能。

首先我们介绍 GUI 验证的步骤。


3.1网络管理


登陆 OpenStack 控制台,点击左边栏"Project"→"Network"→"Networks"

点击"Create Network",创建外部/公有网络。

在 Network Name 栏填写网络名为 public,保持其他选项为默认值后,点击"Next"

图 2. 创建外部/公有网络 – 网络

创建子网, 依次输入如下信息:

Subnet Name → public_interface

Network Address → 192.168.1.0/24

IP Version → IPv4

Gateway IP → 192.168.1.1

NOTICE:

如果不输入 Gateway IP, 系统将为子网配置一个默认的网关。

图 3. 创建外部/公有网络 – 子网

配置子网, 勾选"Enable DHCP" 并在"Allocation Pools"处填写 DHCP 所使用的 IP 段, 格式如下:

192.168.1.110,192.168.1.120
192.168.1.210,192.168.1.220


起始 IP+逗号+结尾 IP(注:中间无空格), 每行一个 IP 段。

填写 DNS server IP 后,点击"Create"创建网络。

图 4. 创建外部/公有网络 – 详细

等创建过程结束后,检查网络状态,如图所示。

图 5. 创建外部/公有网络 – 状态

然后以同样的步骤创建内部/私有网络。如下图所示, 在创建内部/私有网络时,可以勾选中"Shared"选项来做到租户共享网络。

图 6. 创建内部/私有网络 – 子网

图 7. 创建内部/私有网络 – 详情

点击"Project" →"Network" → "Network Topology",可查看已创建的网络拓扑。

从拓扑图中,我们能看到已创建的 2 个网络,两者间彼此孤立,接下来我们需要建一座桥梁让他们彼此相通。

点击"Project" →"Network" → "Routers", 如图所示:

填写"Router Name"

选择"Admin State"为"UP"

选择"External Network"为"public" 注: public 为我们之前所创建的外部/公有网络。

最后点击"Create Router"

3.2如果此时查看 Network Topology, 可以看到一个代表 Router 的图标与 public 网络相连。


点击"Project" →"Network" → "Routers",点击已创建的 Router 名对其进行配置。

点击"Interfaces" → "Add Interface"

在"Add Interface"界面,选择"Subnet"为 private (注: private 网络为之前创建的内部/私有网络)

图 8. 创建路由器 – 添加内部/私有网络端口

等待创建过程结束后查看状态,若"Status"为"Active", "Admin State"为"UP", 则表示 Router 状态正常。

再次查看 Network Topology, 可看到在 public 和 private 网络之间已经建立起了连接。

3.3镜像管理


在创建网络之后,我们需要添加创建 Instance 时所需的系统镜像文件。

点击左侧栏,"Project" → "Compute" → "Images", 进入镜像管理界面。

在"Name"处填写要创建的镜像名之后,选择"Image Source"

  • Image Location 意味着从网站下载镜像

  • Image File 意味着从本地上传镜像

首先我们用网站下载的方式创建一个 Ubuntu 的镜像, 如图所示:

"Name" → "Ubuntu-ppc64el"

"Image Source" → "Image Location"

"Image Location" → "

"Format" → "QEOW2 – QEMU Emulator"

勾选"Copy Data"和"Public" 后点击"Create Image"

接下来我们以上传镜像的方式创建 centos 的镜像, 如图所示:

"Name" → "centos-7.2"

"Image Source" → "Image File"

点击"Choose File"后从本地选择需要上传的 image 文件, 勾选 public 后创建该镜像。

CentOS 镜像目前需要自己手动创建。

图 9. 创建镜像

在 Images 界面可以看到已创建的镜像文件。

3.4虚拟机管理


在创建完网络和镜像文件后,就可以开始创建虚拟机了。

点击左侧栏"Project"" → ""Compute" → "Instances" → "Launch Instance"

填写"Instance Name"和"Count"后,点击"Next"

注: Count 为创建 Instance 的数量。

在"Available"处通过点击右侧的"+"选择需要的镜像文件。

在"Flavor"栏, 选择合适的配置模板后点击"Next"

接下来为 Instance 选择网络,此处我们选择 private。

“Network Ports”栏使用默认配置,点击“Next”进入“Security Groups”配置栏,如图所示:

点击右侧"+",添加 security group

在"Key Pair"栏,选择需要 import 的 Key Pair。(注: 关于如何创建 Key Pair, 请参阅下节"安全策略"部分)

在正确配置之后,点击"Launch Instance"

当"Status"显示为"Active"后,Instance 就创建成功了。 点击 Instance Name 可详细查看 Instance 信息。

图 9. 新建云主机实例

点击已创建的 Instacne 名字 → "Console",打开终端可以看到该 Instance 的初始配置信息。 如图所示:

图 10. 云主机终端界面

在正式投入使用前,还要进行一些必要的配置。

注: 此处我们为 Instance 添加的是私有网络,因此还需要对网络及安全策略方面进行一些配置。 不同的环境可能配置步骤略有不同。

3.5网络及安全策略


通过"Project" → "Compute" → "Access & Security"进入配置界面, 点击"Manage Rules"进行配置。

点击"Add Rules"添加安全规则

如下图所示依次添加 ICMP 和 SSH 协议对应的规则:

"Rule" → "All ICMP"

"Direction" → "Ingress"

"Remote" → "Security Group"

注:

  • "CIDR": 按 IP 段分发该安全规则。

  • "Security Group": 按 Group 的成员分发安全规则。

"Security Group" → "default"

注:选择不同规则, 其配置界面略有不同。

创建 Key Pair

"Project" → "Compute" → "Access & Security" → "Key Pairs", 点击"Create Key Pair"

输入 Key Pair Name 后创建 Key Pair。 成功后就可以在创建 Instacne 的时候 import 了

为 Instance 配置 Floating IP

"Project" → "Compute" → "Access & Security"  "Floating IPs", 点击"Allocate IP to Project"。

选择一个 IP Pool, 然后点击"Allocate IP"获取 Floating IP。

图 10. 分配浮动 IP

成功从 IP Pool 中获取 IP 后 IP 状态为"Down", 然后点击"Associate"为该 IP 指派一个关联的 Instance。

在"Port to be associated"中选择需要关联的 instance 后点击"Associate"。

图 11. 分配浮动 IP – 分配地址


关联成功后,Floating IP 的状态更新为"Active"。

图 12. 分配浮动 IP – 绑定

此时我们就可以通过该 IP 访问 Instance 了。


4总结


经过本文的指导,一个具有 OpenStack 基础功能 Keystone(认证服务)、Glance(景象服务)、Nova(计算服务)、Neutron(网络服务)、Cinder(块存储服务)以及 Horizon(控制台)已在 OpenPOWER 服务器上搭建完成。本案例中的 OpenStack 参考环境已经过 OpenStack Tempest Smoke 测试。同时 Github 中的参考方案会逐步添加更多 OpenStack 新的功能。另外当需要在 CentOS/RHEL 中安装 OpenStack RDO,可以使用 RDO ppc64le 源(ftp://ftp.unicamp.br/pub/ppc64el/centos/7_2/openstack/mitaka/)。

‘’本文转载自http://www.ibm.com/developerworks/cn/cloud/library/cl-cn-openstack-openpower-deploy/index.html‘’

加入云技术社区OpenStack运维交流微信群,联系微信xiaolikvm

交流 分享 提升

云技术社区成立于2014年,国内最大的云技术交流平台,分享在云计算/虚拟化项目实施中的资讯、经验和技术,坚持干货。旗下运营:云技术实践、云技术、桌面云之云潮涌动等公众号,以及相关的微信群和QQ群,覆盖云计算领域的技术人群,加入云技术社区微信、QQ群请点击订阅号菜单“群和活动”。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存