Feb 142017
 

大家看我的blog,其实一直都没写过Kolla的安装过程,其实并不是我不想写,而是对于用户来说,参考我的文章,因为网络带宽的原因,他其实是很难照做的。

经过很多的尝试,在OpenStack的Ocata版本发布的时候,我想我应该已经有办法解决安装的各种问题。

我还是使用大家最常用的vmware workstation 12.0, CentOS 7.3 虚拟机来完成整个的验证过程。

准备工作

我习惯最小化安装CentOS 7.3,装完后,对他进行初始化的工作。

http://www.chenshake.com/centos-7-x-class/ 大家照做就可以,放到一个文档,显得太长。selinux,防火墙端口无法访问,主机名问题,都是安装的常见错误,大家一定要细心确认。

kolla的安装,要求目标机器是两块网卡,所以我虚拟机也是分配两块网卡,

  1. ens33,NAT网络里,设置的IP是:192.168.27.10,日后Horizon访问就是通过这个IP地址
  2. ens34,桥接模式,ip其实是dhcp分配,这个其实是让neutron的br-ex 绑定使用,虚拟机是通过这块网卡访问外网。

在机器上连接虚拟机,是通过ens33的IP进行访问,如果你通过ens34 ssh,安装过程,会导致ssh中断。

默认设置,其实两块网卡都是可以访问到互联网。也可以是其中一块网卡访问外网,对于测试来说,基本问题不大。

如果在服务器直接安装,两块网卡的IP,就算是同一个网段,也是没啥问题的。

以前安装kolla,必须自己build镜像,这样由于网络的原因,经常会导致在build 镜像的时候失败。这次我们直接采用kolla官方提供的镜像文件,这样就不需要自己build镜像的环节。

 

基础包

一定要启用EPEL的repo源

yum install epel-release
yum install python-devel libffi-devel gcc openssl-devel git python-pip

安装Docker

目前最新版本的Docker是1.13.1,Kolla目前支持的Docker是1.12.x,所以我们要指定Docker的版本来安装,并且一定要采用Docker官方的源,不能使用红帽的源,红帽的源的Docker是有bug。

设置repo

tee /etc/yum.repos.d/docker.repo << 'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

安装Docker 1.12.5

yum install docker-engine-1.12.5 docker-engine-selinux-1.12.5

设置docker

mkdir /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF

重启相关服务

systemctl daemon-reload
systemctl enable docker
systemctl restart docker

访问私有的Docker仓库

编辑  /usr/lib/systemd/system/docker.service

#ExecStart=/usr/bin/dockerd
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.27.10:4000

重启服务

systemctl daemon-reload
systemctl restart docker

Ansible

Kolla项目的Mitaka版本要求ansible版本低于2.0,Newton版本以后的就只支持2.x以上的版本。

yum install ansible

Registry 服务器

默认docker的registry是使用5000端口,对于OpenStack来说,有端口冲突,所以改成4000

docker run -d -v /opt/registry:/var/lib/registry -p 4000:5000 \
--restart=always --name registry registry:2

下载kolla官方提供的镜像

http://tarballs.openstack.org/kolla/images/

这是kolla官方提供的镜像给CI使用,只保留最新版本和最新的stable版本。大家可以下载Ocata版本

wget http://tarballs.openstack.org/kolla/images/centos-source-registry-ocata.tar.gz
tar zxvf centos-source-registry-ocata.tar.gz -C /opt/registry/

这样就把kolla的docker镜像文件放到Regisitry服务器上。

kolla-ansible

下载kolla-ansible的代码

cd /home
git clone http://git.trystack.cn/openstack/kolla-ansible –b stable/ocata

安装kolla-ansible

cd kolla-ansible
pip install .

一个小技巧,如果pip速度很慢,后面可以加上参数,指定国内的pip源

pip install . -i https://pypi.tuna.tsinghua.edu.cn/simple

复制相关文件

cp -r etc/kolla /etc/kolla/
cp ansible/inventory/* /home/

如果是在虚拟机里装kolla,希望可以启动再启动虚拟机,那么你需要把virt_type=qemu,默认是kvm

mkdir -p /etc/kolla/config/nova
cat << EOF > /etc/kolla/config/nova/nova-compute.conf
[libvirt]
virt_type=qemu
cpu_mode = none
EOF

生成密码文件

kolla-genpwd

编辑 /etc/kolla/passwords.yml

keystone_admin_password: chenshake

这是登录Dashboard,admin使用的密码,你可以根据自己需要进行修改。

编辑 /etc/kolla/globals.yml  文件

kolla_internal_vip_address: "192.168.27.11"

kolla_install_type: "source"
openstack_release: "4.0.0"
docker_registry: "192.168.27.10:4000"
docker_namespace: "lokolla"
network_interface: "ens33"
neutron_external_interface: "ens34"

192.168.27.11,这个ip是一个没有使用的的ip地址,他是给haproxy使用,单节点其实压根没有意义。

安装OpenStack

kolla-ansible deploy -i /home/all-in-one 

验证部署

 

kolla-ansible post-deploy

这样就创建 /etc/kolla/admin-openrc.sh 文件

安装OpenStack client端

pip install python-openstackclient

编辑 /usr/share/kolla-ansible/init-runonce,

网络需要根据实际情况修改

EXT_NET_CIDR='192.168.12.0/24'
EXT_NET_RANGE='start=192.168.12.30,end=192.168.12.40'
EXT_NET_GATEWAY='192.168.12.1'

这里解析一下,192.168.12.0的网络,就是我上面ens34接的网络,这个网络是通过路由器访问互联网。这个地方需要好好理解。配置好这个,装完虚拟机就可以直接ping通。

 

运行

source /etc/kolla/admin-openrc.sh
cd /usr/share/kolla-ansible
./init-runonce

最后你可以创建一个虚拟机来玩玩,根据最后的命令提示

openstack server create \
    --image cirros \
    --flavor m1.tiny \
    --key-name mykey \
    --nic net-id=2ba93782-71e2-44d6-ad64-796c5853dcce \
    demo1

这个时候,你可以登录Dashboard,给虚拟机分配一个floating ip,如果顺利,你应该就可以直接ping 通 floating ip的地址。

 

参考文档

http://docs.openstack.org/developer/kolla-ansible/quickstart.html

http://www.cnblogs.com/lienhua34/p/4922130.html

https://gist.github.com/jeffrey4l/c69688180b056d08a0c1733e24193143

http://www.cnblogs.com/microman/p/6107879.html

http://xcodest.me/

  33 Responses to “Kolla安装Ocata 单节点”

  1. 陈兄,你好:
    我在部署完之后。进行测试时发现。在后端使用ceph时,创建虚拟机会失败,从日志的内容来看是libvirt无法连接到ceph。不知陈兄是否也遇到了这样的问题,请指点一下该如何解决。谢谢。如果需要我可以提供详细的日志。

    • 几个地方需要注意一下就可以。这个我验证过,没问题。
      1:libvirt
      [libvirt]
      virt_type=qemu
      cpu_mode = none

      记得加上这两个设置。

      2:ceph要设置成存放一份。这个参考我
      http://www.chenshake.com/ceph-kolla-installed-all-in-one/

      3:记得上次raw格式镜像。文章有提到。

      • 我少加了一个cpu_mode = none,解决了。谢谢!🙏。我记得在newton里是没有加这个配置项的。

        • 其实这是一个bug。估计过一个月,就不需要这个参数。

          • 陈兄,不好意思,还得麻烦你,我发现在创建虚拟机的时候选择同时创建卷会创建失败,好像是ceph的权限认证问题,提示的错误为:error connecting: Operation not permitted。我看到下发的libvirt.xml里的auth_user是cinder,在创建虚拟机时不选择同时创建卷就可以正常创建虚拟机,这个时候下发的libvirt.xml里的auth_user为nova.

          • 人才。这个bug,你也碰到和发现。目前社区正在修复中。https://review.openstack.org/#/c/442519/ 正式版本发布,会把这个bug修复的。

  2. 陈老师,您好!
    按照您的这个教程操作,第一次部署结束发现无法登录dashboard。然后在第一次的环境里重新运行部署至步骤:kolla-ansible deploy -i /home/all-in-one时报错如下,求问可以怎么解决,谢谢陈老师呀———————————————————————————————————————————
    TASK [common : Starting fluentd container] *************************************
    fatal: [localhost]: FAILED! => {“changed”: false, “failed”: true, “msg”: “The requested image does not exist: 192.168.89.128:4000/slkolla/centos-source-fluentd:4.0.0”}
    to retry, use: –limit @/usr/share/kolla-ansible/ansible/site.retry

    PLAY RECAP *********************************************************************
    localhost : ok=14 changed=0 unreachable=0 failed=1

  3. 陈老师,您好!
    我最近在学习ceilometer相关的监视功能,涉及gnocchi、aodh、grafana等组件,我在这个All in one环境都部署好了,通过3000端口可以正常操作grafana,但按网上资料添加Data sources时,选择gnocchi并利用proxy接入选择token总无法添加,总是testing,后面也没法做dashboard去展示监视数据。比较混乱,参考资料又很少,能否针对这方面写写搭建步骤,谢谢。

  4. hi 沙克,

    我用最新的ocata centos 版本 进行AIO安装,但是遇到了compute service 无法启动的错误,到flumed中查了一下发现以下错误,

    2017-03-24 07:37:29.375+0000: 24221: error : virDBusGetSystemBus:109 : internal error: Unable to get DBus system bus connection: Failed to connect to socket /var/run/dbus/system_bus_socket: Permission denied
    2017-03-24 07:37:29.376+0000: 24221: warning : networkStateInitialize:692 : DBus not available, disabling firewalld support in bridge_network_driver: internal error: Unable to get DBus system bus connection: Failed to connect to socket /var/run/dbus/system_bus_socket: Permission denied
    2017-03-24 07:37:29.721+0000: 24221: error : virDBusGetSystemBus:109 : internal error: Unable to get DBus system bus connection: Failed to connect to socket /var/run/dbus/system_bus_socket: Permission denied

    请教一下是否是哪里配置不对还是确实有bug?

    谢谢!

  5. 版本升级太快也是醉了,总是各种问题。我的版本CentOS7.3,但是kolla的版本变为4.0.1
    使用 kolla-ansible prechecks -i /home/all-in-one 检查没有任何问题。

    kolla-ansible deploy /home/all-in-one一安装一大半成功了,到nova-compute就卡住了。对ansible不太熟悉,这种错误到哪找错误日志?
    相关配置文件./ansible/roles/nova/tasks/simple_cell_setup.yml

    TASK [nova : Waiting for nova-compute service up] ******************************
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (20 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (19 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (18 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (17 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (16 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (15 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (14 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (13 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (12 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (11 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (10 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (9 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (8 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (7 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (6 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (5 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (4 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (3 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (2 retries left).
    FAILED – RETRYING: TASK: nova : Waiting for nova-compute service up (1 retries left).
    fatal: [localhost -> localhost]: FAILED! => {“attempts”: 20, “changed”: false, “cmd”: [“docker”, “exec”, “kolla_toolbox”, “openstack”, “–os-interface”, “internal”, “–os-auth-url”, “http://10.0.0.100:35357/v3”, “–os-identity-api-version”, “3”, “–os-project-domain-name”, “default”, “–os-tenant-name”, “admin”, “–os-username”, “admin”, “–os-password”, “zyops”, “–os-user-domain-name”, “default”, “compute”, “service”, “list”, “-f”, “json”, “–service”, “nova-compute”], “delta”: “0:00:01.242621”, “end”: “2017-03-24 20:31:43.880186”, “failed”: true, “rc”: 0, “start”: “2017-03-24 20:31:42.637565”, “stderr”: “”, “stdout”: “[]”, “stdout_lines”: [“[]”], “warnings”: []}

    NO MORE HOSTS LEFT *************************************************************
    to retry, use: –limit @/usr/share/kolla-ansible/ansible/site.retry

    PLAY RECAP *********************************************************************
    localhost : ok=145 changed=0 unreachable=0 failed=1

    Command failed ansible-playbook -i /usr/share/kolla-ansible/ansible/inventory/all-in-one -e @/etc/kolla/globals.yml -e @/etc/kolla/passwords.yml -e CONFIG_DIR=/etc/kolla -e action=deploy /usr/share/kolla-ansible/ansible/site.yml

    • 补充一下我的环境
      [root@openstack-1 ~]# cat /etc/redhat-release
      CentOS Linux release 7.3.1611 (Core)
      [root@openstack-1 ~]# uname -r
      3.10.0-514.el7.x86_64
      [root@openstack-1 ~]# getenforce
      Disabled
      [root@openstack-1 ~]# systemctl status firewalld.service
      ● firewalld.service – firewalld – dynamic firewall daemon
      Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
      Active: inactive (dead)
      Docs: man:firewalld(1)
      [root@openstack-1 ~]# cat /etc/hostname
      openstack-1
      [root@openstack-1 ~]# ping openstack-1
      PING openstack1.zyops.com (10.0.0.31) 56(84) bytes of data.
      64 bytes from openstack1.zyops.com (10.0.0.31): icmp_seq=1 ttl=64 time=0.052 ms
      64 bytes from openstack1.zyops.com (10.0.0.31): icmp_seq=2 ttl=64 time=0.040 ms
      ^C
      — openstack1.zyops.com ping statistics —
      2 packets transmitted, 2 received, 0% packet loss, time 1000ms
      rtt min/avg/max/mdev = 0.040/0.046/0.052/0.006 ms
      [root@openstack-1 ~]# hostname -F /etc/hostname
      [root@openstack-1 ~]# hostname
      openstack-1
      [root@openstack-1 ~]# hostname -f
      openstack1.zyops.com
      [root@openstack-1 ~]# date
      Fri Mar 24 20:37:56 CST 2017
      [root@openstack-1 ~]# cat /etc/hosts
      127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
      ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
      10.0.0.31 openstack1.zyops.com openstack-1

    • 估计是和我遇到的一样,libvirt起不来。你看一下nova-libvirt的日志,应该是同样的问题。

      • 我找时间验证一遍。

        • 找到错误的地方了,应该是rabbitmq容器出问题了,nova连接不上消息队列。没有正常启动,而且一进入容器,容器就挂。

          nova里面也有大量的错误日志
          [root@openstack-1 nova]# pwd
          /var/log/kolla/nova
          [root@openstack-1 nova]# grep -iRn error *|less
          …………
          nova-scheduler.log:107:2017-03-25 19:29:08.132 5 ERROR oslo.messaging._drivers.impl_rabbit [req-cad78f62-a610-4e4f-b79c-08a06cc767d4 – – – – -] [c478a83d-d6b5-423a-97e1-ae6348a4cbe4] AMQP server on 10.0.0.31:5672 is unreachable: [Errno 111] ECONNREFUSED. Trying again in 28 seconds. Client port: None
          nova-scheduler.log:108:2017-03-25 19:29:36.180 5 ERROR oslo.messaging._drivers.impl_rabbit [req-cad78f62-a610-4e4f-b79c-08a06cc767d4 – – – – -] [c478a83d-d6b5-423a-97e1-ae6348a4cbe4] AMQP server on 10.0.0.31:5672 is unreachable: [Errno 111] ECONNREFUSED. Trying again in 30 seconds. Client port: None
          nova-scheduler.log:109:2017-03-25 19:30:06.229 5 ERROR oslo.messaging._drivers.impl_rabbit [req-cad78f62-a610-4e4f-b79c-08a06cc767d4 – – – – -] [c478a83d-d6b5-423a-97e1-ae6348a4cbe4] AMQP server on 10.0.0.31:5672 is unreachable: [Errno 111] ECONNREFUSED. Trying again in 32 seconds. Client port: None

          • 我的运气好衰,24号上午在http://tarballs.openstack.org/kolla/images/网站下载镜像,下午这个网站镜像更新了。

            centos-source-registry-ocata.tar.gz 2017-03-24 13:30 2.8G

          • 这个会经常更新。

          • 主机名。

  6. 沙克您好,单节点kolla安装终于搞定,是apparmor惹的祸。 虚拟机可以正常启动,但是floating ip无法正常工作, 我想应该是neutron_external_interface 的问题吧? 现在我想进入neutron 容器中看个究竟,但是不知道sudo的密码,这个密码应该在哪里找到呢?或者有什么办法可以看到类似这样的命令docker exec neutron_openvswitch_agent ovs-vsctl show的输出呢?

    谢谢!

    • 这是docker的。http://www.chenshake.com/ceph-kolla-installed-all-in-one/ 参考文章最后,进入docker容器操作ceph。

  7. 请问 Redhat 的 Docker 源的 bug 是什么?

  8. 你好,陈老师,我在部署过程中都正常,最后也能启动实例和绑定浮动IP,但是控制台打不开,实例日志可以看到系统已经起来,控制台显示“连接时间过长”,请问下这是什么原因呢?非常感谢

  9. http://www.chenshake.com/kolla-monthly-april-2017/#Ocata-2

    大家可以尝试使用iso来安装,这样可以避免很多麻烦。

 Leave a Reply

(required)

(required)