陈沙克

Mar 012017
 

默认安装的all in one,是没有安装cinder服务的,也是没有ceph。如何在一个已经装好的环境下,增加Ceph?那么这个其实比我直接装Ceph更加有挑战。

下面的文档,就是在All in one的基础上,继续安装Ceph,并且实现nova,glance,cinder整合,还支持swift api。

需要强调的是,我们需要把all in one环境里的虚拟机,镜像都删除掉。

 

增加磁盘

我们给虚拟机增加一块磁盘,100G。重启虚拟机,应该就可以看到 sdb

parted /dev/sdb -s -- mklabel gpt mkpart KOLLA_CEPH_OSD_BOOTSTRAP 1 -1

这条命令,就是对磁盘进行打标签。表示是用来做kolla的ceph。

查看命令的结果。

#  parted /dev/sdb print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 107GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End    Size   File system  Name                      Flags
 1      1049kB  107GB  107GB               KOLLA_CEPH_OSD_BOOTSTRAP

配置Ceph

由于是单节点,all in one的部署,ceph数据只存放1份

创建 /etc/kolla/config/ceph.conf

[global]
osd pool default size = 1
osd pool default min size = 1

全局设置

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

enable_cinder: "yes"
enable_ceph: "yes"
enable_ceph_rgw: "yes"
enable_ceph_rgw_keystone: "yes"
glance_backend_ceph: "yes"

安装

这个时候,你就可以重复运行kolla安装

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

目前的版本,装完后,需要把相关的容器重启一遍,或者你把虚拟机重启也是可以的。

镜像格式

由于Ceph要求使用Raw的格式的镜像。所以要把qcow2的镜像进行格式转换。

yum install qemu-img

对于ceph,我们需要上传raw格式,需要对镜像进行转换。

# qemu-img info  cirros-0.3.4-x86_64-disk.img   
image: cirros-0.3.4-x86_64-disk.img
file format: qcow2
virtual size: 39M (41126400 bytes)
disk size: 13M
cluster_size: 65536
Format specific information:
    compat: 0.10

转成raw格式

qemu-img convert -f qcow2 -O raw \
cirros-0.3.4-x86_64-disk.img cirros-0.3.4-x86_64-disk.raw

这时候查看镜像信息

# qemu-img info cirros-0.3.4-x86_64-disk.raw 
image: cirros-0.3.4-x86_64-disk.raw
file format: raw
virtual size: 39M (41126400 bytes)
disk size: 18M

上传镜像

openstack image create --disk-format raw --container-format bare \
--public true --file ./cirros-0.3.4-x86_64-disk.raw

这个时候,你就可以登录Dashboard,进行创建虚拟机。

参考文档

http://www.ibm.com/developerworks/cn/linux/1409_qiaoly_qemuimgages/

附上我同事给我的ceph的管理命令

docker exec -it ceph_mon ceph osd pool ls
docker exec -it ceph_mon ceph osd pool set vms size 1
docker exec -it ceph_mon ceph osd pool set images size 1
docker exec -it ceph_mon ceph osd pool set volumes size 1
docker exec -it ceph_mon ceph osd pool set backups size 1
docker exec -it ceph_mon ceph osd pool set rbd size 1
docker exec -it ceph_mon ceph osd pool set rbd min_size 1
docker exec -it ceph_mon ceph osd pool set backups min_size 1
docker exec -it ceph_mon ceph osd pool set volumes min_size 1
docker exec -it ceph_mon ceph osd pool set images min_size 1
docker exec -it ceph_mon ceph osd pool set vms min_size 1
docker exec -it ceph_mon ceph osd pool ls
docker exec -it ceph_mon ceph -s
Feb 242017
 

目前Kolla的Ocata版本的正式发布,其实还需要大概2周时间,不过基础的功能,其实早就完成。现在OpenStack版本发布,已经不再搞Release note,大家了解项目的新功能,其实不是太方便。

我是跟踪的Kolla的Ocata版本的全程开发,所以根据我的理解,给大家写一个Ocata版本的Kolla新功能介绍。

如果让我比较Kolla的Ocata版本和Newton版本,那么我只能说是脱胎换骨,已经接近很完善的地步。

Continue reading »

Feb 232017
 

今天OpenStack的Ocata版本发布,Ocata版本算是OpenStack基金会成立以来,最短开发周期的的一个版本,不到五个月时间,从2016年10月底开完峰会到今天2017年2月23日。

短短不到半年的时间,OpenStack的社区贡献,其实已经发生的重大的变化。stackalytics统计也做了一个重大调整,默认设置统计是全部OpenStack项目,一直以来,stackalytics默认显示内容,对OpenStack的影响的非常深远。我大概回顾一下默认显示的变化过程。

stackalytics网站,是2013年出来,当时统计默认显示页面是按照代码行数来显示,也就是说这是最优先的指标。当时同事刚刚参加OpenStack社区贡献,通过完成了4个BP,提交了好几千行代码,当时处于OpenStack功能比较缺乏的阶段,也是一个变化快速的时候,这是指标作为默认显示,是很有意义的。

2013年下半年,stackalytics的统计默认显示改成Commit,这时候OpenStack的贡献者很多,大量的bug等待修复。记得很清楚,当时同事已经把精力专注于各种bug的修复。

2014年,stackalytics又做了调整,把Review的指标作为默认显示。这个时候OpenStack的项目,已经开始更加注重质量,Core Review显得更加重要。我同事也把精力放到Review项目的代码上,最终成为的Horizon项目的Core。

2013年到2014年,OpenStack增加项目,都是需要经过技术委员会批准,也就是TC approved,一共是12个项目,不过这种模式有点跟不上OpenStack的快速发展,那么到了2015年,决定不再采用TC approved方式增加项目,而是    引入Big Tent模式,项目数量从以前的TC approved 增加到超过60个项目。stackalytics对项目进行了分类,

在OpenStack下,包括

  1. TC-approved
  2. Offical
  3. Others

Offical项目里,包括全部Big Tent里的项目,也包括以前的TC-approved的项目,还有部分OpenStack CI要用的项目。

Other项目,就是没有进入Offical的项目,在孵化阶段,或者很小,工具类的项目。

2017年2月份,stackalytics默认显示,把统计项目从Offical,改成OpenStack,这样用户看到的统计数据就是全部OpenStack项目。这对后续OpenStack发展,还是有深远影响的。我的同事后来去了一家公司专门做社区开发,目前在OpenStack创立一个新的项目,还没有加入Big Tent,以前还比较头疼,在项目里所做的工作,无法默认显示在统计上,也导致项目的开发者参与积极性下降。现在一下子发生了改变,个人贡献在公司排名前十。

八卦完这段历程,我们就对Ocata统计进行盘点,我也是采用默认的,统计全部OpenStack项目的,我以前的文章其实都是Offical项目的。

Continue reading »

Feb 222017
 

很久没动手,导致配置一点东西,基本完全忘记。这次要在CentOS 7.3 下装Kolla,好好把这个补回来。

我的习惯都是最小化安装操作系统,然后慢慢玩和调整。

关闭Selinux

这个就基本不需要讨论的事情,编辑  /etc/selinux/config

SELINUX=disabled

我习惯重启机器,查看selinux状态

# sestatus
SELinux status:                 disabled

关闭Firewalld

做实验的时候,端口无法访问的事情是经常发生的。不折腾了。

systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
firewall-cmd --state

Epel

现在的epel源,已经很简单了。

yum install epel-release

查看repo情况

yum repolist

Hostname

对于很多环境,这是必须的。

cat /etc/hostname
kolla
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

192.168.27.10   kolla.chenshake.com     kolla

检查

#hostname -F /etc/hostname

#hostname
kolla

#hostname -f
kolla.chenshake.com

同步时间

yum install ntp
systemctl enable ntpd.service
systemctl start ntpd.service

手工同步时间

ntpdate 0.centos.pool.ntp.org
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/

Feb 082017
 

从2016年开始,OpenStack项目的PTL从以前的1年选举一次,改成半年选举一次。也就是项目的当前版本开发周期RC1发布前后,就要开始下一个版本的PTL的选举。

根据 https://releases.openstack.org/ocata/schedule.html Pike版本的PTL选举将要在1月底举行,首先是提名,如果一个项目提名人只有一人,那么就自动当选。如果超过2人,就要进行投票,在过去1年里,参与过该项目提交过commiter都是有资格进行投票。如果该项目没人竞选,那么这个项目将会很可能移除Big Tent。

目前所有Big Tent管理的项目 https://governance.openstack.org/tc/reference/projects/index.html

经常会增加或减少项目,截止到2017年2月24日为止,是61个项目,也就意味着我们需要选举出61位PTL。

OpenStack专门一个一个地方管理项目候选人的竞选 https://github.com/openstack/election/tree/master/candidates

大家可以通过这里了解不同版本的PTL的情况。

  1. Rackspace:10个项目PTL(Designate,Document,Glance,Keystone,Magnum,Octavia,OpenStack-ansible,Requirements,Solum,Stable Branch Maintenance)
  2. IBM :7个项目PTL(Community App Catalog,Nova,Quality Assurance,RefStack,Security,Senlin,Storlets)
  3. Redhat:6个项目PTL(ironic,Kuryr,Puppet,Sahara,Telemetry,Tripleo)
  4. Mirantis: 5个项目PTL(Fuel, Neutron,Deb,Rpm,Rally)
  5. 华为 :4个项目PTL(DragonFlow,Karbor,Tricircle,Zun)
  6. HPE:3个项目PTL (Freezer,Monasca,Searchlight)
  7. Intel :2个项目PTL(OpenStackClient,Kolla)
  8. Cisco:2个项目PTL(Barbican,Horizon)
  9. Nokia:2个项目PTL(Mistral,Vitrage)
  10. OpenStack Foundation:2个项目PTL (Release Management,Infrastructure)
  11. 个人身份当选:2个项目(Congress,I18n)

大陆这次两家OpenStack创业公司99cloud,获得Tacker项目PTL,EasyStack,获得Olso项目PTL。台湾地区创业公司inwinSTACK,Heat的PTL。

研究了一下,PTL里,会说中文的大概有7位 (Heat,Oslo,Senlin,Tacker,Tricircle, Zaqar,Zun)

我就根据项目的字母排序,进行介绍一下。同时也统计一下PTL归属那个厂商。

项目 PTL 公司
Barbican Dave McCowan Cisco
Chef OpenStack Jan Klare Cloudbau
Cinder Sean McGinnis Dell
Cloudkitty Christophe Sauthier Objectif Libre
Community App Catalog Matthew Wagoner IBM
Congress Eric K 个人
Designate Tim Simmons Rackspace
Documentation Alexandra Settle Rackspace
Dragonflow Omer Anson Huawei
Ec2 Api Alexandre Levine Cloudscaling
Freezer Saad Zaher HPE
Fuel Vladimir Kuklin Mirantis
Glance Brian Rosmaita Rackspace
Heat Rico Lin inwinSTACK
Horizon Rob Cresswell Cisco
I18n Ian Y. Choi 个人
Infrastructure Jeremy Stanley OpenStack Foundation
Ironic Dmitry Tantsur Redhat
Karbor Yuval Brik Huawei
Keystone Lance Bragstad Rackspace
Kolla Michal Jastrzebski   Intel
Kuryr Antoni Segura Puimedon Redhat
Magnum Adrian Otto Rackspace
Manila Ben Swartzlander NetApp
Mistral Renat Akhmerov Nokia
Monasca Roland Hochmuth HPE
Murano Felipe Monteiro AT&T
Neutron Kevin Benton Mirantis
Nova Matt Riedemann IBM
Octavia Michael Johnson Rackspace
OpenStackAnsible Andy McCrae Rackspace
OpenStackClient Dean Troyer intel
OpenStack Charms James Page  Canonical
Oslo ChangBo Guo EasyStack
Packaging Deb Thomas Goirand Mirantis
Packaging Rpm Igor Yozhikov Mirantis
Puppet OpenStack Alex Schultz Redhat
Quality Assurance Andrea Frittoli IBM
Rally  Andrey Kurilin Mirantis
RefStack Catherine Diep IBM
Release Management Thierry Carrez OpenStack Foundation
Requirements Tony Breeds Rackspace
Sahara Telles Mota Vidal Nóbrega Redhat
Searchlight Steve McLellan HPE
Security Robert Clark  IBM
Senlin Qiming Teng    IBM
Solum Devdatta-kulkarni Rackspace
Stable Branch Maintenance Tony Breeds Rackspace
Storlets Eran Rom IBM
Swift John Dickinson  SwiftStack
Tacker Gongysh Gongysh 99Cloud
Telemetry Julien Danjou Redhat
Tricircle Chaoyi Huang Huawei
Tripleo Emilien Macchi Redhat
Trove Amrith Amrith Tesora
Vitrage Ifat Afek Nokia
Watcher Alexander Chadin Servionica
Winstackers Claudiu Belu ClouBase
Zaqar  Fei Long Wang Catalyst IT
Zun Hongbin Lu Huawei