Mar 072017
 

Kolla部署多节点,其实和单节点区别不是很大。不过多节点的部署,可以让你对很多细节理解更加深入。

对于Kolla多节点的安装,重点已经不是kolla,而是你的网络规划。因为步骤和all in one是一致。

网络设计

OpenStack的部署

Snap15

图片来源mirantis,修改了一下。

上面一共是5个网络。对于OpenStack来说,其实是4个网络,

角色 management Public +floating IP Storage Private
控制节点+网络节点  
计算节点+存储节点  
存储节点    
         

 

如果用户创建的虚拟机可以直接放到外部的网络上,那么就要求计算节点上,也需要public的IP。也就是说,我希望provider network共享给所有租户,那么就需要计算节点,也需要pubilc IP。

假设我们实验,3台机器,都具备

  1. 控制节点
  2. 网络节点
  3. 计算节点
  4. 存储节点

如果是:两块万兆的网卡+千兆网卡。

  1. 千兆网卡1:Public +floating IP
  2. 万兆网卡1:management+private
  3. 万兆网卡2:Storage

我们实验,如果只有2块网卡

  1. 网卡1:Public +floating IP
  2. 网卡2:management+private+Storage

 

 

准备工作

这些工作都是在OpenStack服务的节点进行。对于kolla来说,准备工作做完后,安装OpenStack就是30分钟的事情。

  1. 关闭Selinux
  2. 关闭Firewalld
  3. 关闭NetworkManager
  4. 设置hostname FQDN,让机器可以通过hostname进行互相访问,统一 /etc/hosts文件
  5. 同步时间,先确保时间是基本一致,和硬件也统一时间
  6. 设置docker registry 服务器位置,设置不安全的访问。
  7. 检查机器是否支持KVM
  8. 设置docker源,安装docker 1.12.5
  9. 设置访问私有的registry 源
  10. 打开Docker 的 shared mount 功能
  11. 设置网卡,网络,符合部署需求。如果需要bonding,需要把bonding做好。
  12. 对于要部署Ceph的节点的磁盘,进行打标签
  13. 检查网络,重点,确保装好后,网络功能正常。

在Master节点,我们需要做的工作,

  1. 关闭Selinux
  2. 关闭Firewalld
  3. 关闭NetworkManager
  4. 设置hostname FQDN,让机器可以通过hostname进行互相访问,统一 /etc/hosts文件
  5. 同步时间,先确保时间是基本一致,和硬件也统一时间
  6. 设置docker源,安装docker 1.12.5

全面6条,都是相同的,不同的是

  1. 搭建私有的registry服务器,存放build好的OpenStack Docker镜像
  2. 安装ansible
  3. 部署kolla-ansible

 

参考文档

http://docs.ocselected.org/openstack-manuals/kilo/fuel-docs/reference-architecture.html

https://docs.ustack.com/unp/src/deployment/access_ha.html

  9 Responses to “CentOS 7.3 多节点Kolla安装”

  1. 在多节点部署过程中,曾部署成功过,但之后重新更换了controler节点重新部署就在 prechecks的时候会总错在这里:
    TASK [rabbitmq : fail] *********************************************************
    failed: [controller01] (item={u’_ansible_parsed’: True, u’changed’: False, u’stdout’: u’192.168.200.211 STREAM controller01.atnc.com\n192.168.200.211 DGRAM \n192.168.200.211 RAW ‘, u’_ansible_no_log’: False, u’stdout_lines’: [u’192.168.200.211 STREAM controller01.atnc.com’, u’192.168.200.211 DGRAM ‘, u’192.168.200.211 RAW ‘], u’warnings’: [], u’_ansible_item_result’: True, u’start’: u’2017-03-15 13:16:14.557091′, u’delta’: u’0:00:00.003012′, u’cmd’: [u’getent’, u’ahostsv4′, u’controller01′], u’item’: u’controller01′, u’rc’: 0, u’invocation’: {u’module_name’: u’command’, u’module_args’: {u’warn’: True, u’executable’: None, u’_uses_shell’: False, u’_raw_params’: u’getent ahostsv4 controller01′, u’removes’: None, u’creates’: None, u’chdir’: None}}, u’end’: u’2017-03-15 13:16:14.560103′, u’stderr’: u”}) => {“failed”: true, “item”: {“changed”: false, “cmd”: [“getent”, “ahostsv4”, “controller01”], “delta”: “0:00:00.003012”, “end”: “2017-03-15 13:16:14.560103”, “invocation”: {“module_args”: {“_raw_params”: “getent ahostsv4 controller01”, “_uses_shell”: false, “chdir”: null, “creates”: null, “executable”: null, “removes”: null, “warn”: true}, “module_name”: “command”}, “item”: “controller01”, “rc”: 0, “start”: “2017-03-15 13:16:14.557091”, “stderr”: “”, “stdout”: “192.168.200.211 STREAM controller01.atnc.com\n192.168.200.211 DGRAM \n192.168.200.211 RAW “, “stdout_lines”: [“192.168.200.211 STREAM controller01.atnc.com”, “192.168.200.211 DGRAM “, “192.168.200.211 RAW “], “warnings”: []}, “msg”: “Hostname has to resolve to IP address of api_interface”}
    实在搞不懂什么原因。
    我同样环境利用kolla节点做all in one在这里也有这个提示,但skipping了,想请教下什么原因,搞了很久,所有节点都重新做过,一直这个错

    • 你好好读读我的文档,我专门标记,让你配置好主机的hostname。Hostname has to resolve to IP address of api_interface”}

      • 嗯,问题出在了controller01节点上的hosts文件里需要添加management网段的IP和hostname,之前部署是添加了的,这次没加。只加了kolla网段的IP和hostname。添加后部署就通过了。

        • 搞定就好。其实这些hostname设置,和kolla没啥关系,openstack都是必须这样玩的。

          • 还有个问题困扰我,刚学kolla-ansible部署,我部署好后想通过Dashbroad上传转换好的RAW系统镜像(存储用ceph),刚部署好上传正常,但再上传镜像时完成100%上传后总报“TypeError: response is undefined”这个错。搞不懂什么原因

          • 命令行上传。

          • 没错,命令行上传是能成功,我就搞不明白为什么用Dashbroad上传就不行,另外我配置exnet时也遇到这个问题,我建flat网络,用dashbroad总报错,但命令行就没问题,搞不懂什么原因

  2. 请问ceph可以是三个网络吗?管理、前端和集群复制,如果是这样的话,该如何配置呢?

    • ceph 只认两个网络: 数据网和同步网,也就是你说的前端和集群复制。管理网你只要配置单独的 ip 就可以。

      两个网分开的话,只要配置

      # 数据网(前端 )
      storage_interface:
      # 同步网(集群复制 )
      cluster_interface:

      两个变量就可以了,

 Leave a Reply

(required)

(required)