我与 OpenStack 的五年:一个 OpenStacker 的开源之旅



导读

    

     OpenStack 历经短短7年时间发展,如今已成为全球开源云计算基础设施的事实标准,拥有包括 AT&T、沃尔玛、国家电网、银联、邮储银行等大型企业用户。OpenStack 亦是全球发展最快的开源社区,目前已经拥有来自近200个国家的八万余名会员,成为全球第二大开源社区。OpenStack 之所以取得今天的骄人成绩,与遍布世界各地的开发者的贡献和 OpenStack 基金会的领导密不可分。郭长波是2017年 OpenStack 基金会独立董事、 EasyStack开源社区负责人,是国内最早一批 OpenStack 贡献者,小编约到郭长波董事的撰稿,总结其5年OpenStack开源之路与个人心得体会,力荐阅读。同时在1月8号,OpenStack 新一届独立董事选举之际邀请您参与投票,投票方法见文章尾部。


参加完2017年9月Denver的PTG,在飞机上的十多个小时里,回想起自己第一次听说OpenStack到投身于开源社区实践中已经有五年多了,感触良多, 很想把这些年与OpenStack相关的经历跟感想写出来与大家分享,算是对于自己过去五年OpenStack经历的总结,心中的这个想法一直都存在,转眼到了2017年12月份,总算抽出时间写出来。


2012—2014


依稀记得2012年第一次向社区提交上代码后,满心期待获得反馈的心情,到第一个patch被合并的兴奋。与世界各地工程师一起交流工作,这种全新的工作方式深深地吸引了我,出于热情,除了工作日的白天,周末或是工作日凌晨4、5点清醒一下的时候,打开电脑,按照反馈修改代码提交,起初凡是我发现的问题,我都尽力去修改,Icehouse版本我在IBM所有OpenStack贡献者提交排名中可以排到前三,当时美国负责OpenStack的经理访问北京CSTL专门找到我交流,这是对我在社区工作的第一次认可。


2014—2015


2014年初作为创始工程师加入 EasyStack, 作为一家当时只有9人的创业团队的一员,我的核心任务是公司的产品研发,但是一有时间我就坚持贡献社区,尽管常常只有在业余时间才能抽出时间贡献,但是依然没有放弃,随着公司的逐步壮大,公司特别鼓励员工参与开源社区贡献,对于在开源社区完成第一次代码提交的员工,公司会颁发奖状与奖励,这算是个传统保持至今。


因为起初 OpenStack 大部分 core reviewer 和 PTL  多分布在北美欧洲,开会时间对于中国工程师并不友好,通常是晚上十点以后 IRC channel 里才热闹起来,我以前经常需要凌晨参加 Oslo 会议,与其抱怨不如尝试改变,坚持参加是第一步,今年Pike版本当选 Oslo PTL   之后,我发起了周例会时间投票,时间定为周一晚上十点。近期考虑到这个时间对于美国人太早,我主动提出推迟一个小时,作为社区整体不能认为方便某些开发者就是某一地区的开发者的胜利,更多的是社区公平原则的体现。


这五年我在社区的角色也在发生变化。2015年11月下旬被当时的 Oslo PTL dims 提名成为 core reviewer,再到2016年2月份成为PTL, 除去成为新角色时的激动自豪,更感到责任重大。coding 与 review 一直是我参与社区的主要形式,到目前为止共提交 1000+commits、2000+ Review, 以及近五万行代码变更。并且,我很高兴看到越来越多的中国工程师参与社区贡献,并承担重要角色。


Meetup


OpenStack不仅仅是一组开源软件的集合,更重要的是作为全球性的社区存在。通过OpenStack活动遇见老朋友、结识新朋友成为特别开心的一件事情,我经常参加国内各地的 OpenStack Meetup , 很多时候不是为了宣传公司产品,纯粹是技术交流.依然记得在古城西安的Meetup, 结识了孔令贤,分享结束后因为赶火车将笔记本遗落在会场,孔令贤冒雨开车送到火车站交给我,大家虽然在不同的公司工作,但是开源使原本没有交集的人认识并成为朋友。


很高兴在悉尼峰会上见到孔令贤分享Qinling, 他依然意气风发,侃侃而谈,会后回到世界的角落继续贡献自己的热情与智慧。也依然记得刚从Austin 峰会回来,就飞赴成都,参加Meetup分享峰会的见闻与更新,感谢成都子凡招待的热辣的火锅,与北极熊饭后一路的交谈。


16年底我开始张罗北京的Meetup的组织工作, 这些活动完全是大家牺牲周末个人休息时间,聚到一起分享最新的技术,得到各家公司和好朋友的支持,特别感谢中华和新勇从成都飞到北京,李明宇从深圳飞到北京带来分享,感谢中国移动的张晓光与 IBM 的胡彦彦。最终那天会议室爆满,参会人员非常积极交流非常充分,会后还久久不愿离去。


这次 Meetup 只是此后数十个我为社区组织或者参与的 Meetup 的一个缩影,包括17年7月 OpenStack Days China 我联合永乐、建峰等担任 Session 议题评委组长,从技术、实践等多个维度甄选议题以我们的专业保证最有价值的分享最终有机会呈现出来。通过这些活动,我们把最先佳实践分享出来,推动 OpenStack 进一步落地生根。


北京 OpenStack Meetup 现场


国内另一个对于中国工程师重要的活动就是 OpenStack Bug Smash ,我参加了在成都、杭州、苏州的三届 Bug Smash。过去6届Bug Smash,总共17个公司,累计300工程师修复了近600个Bug, 这个活动给国内OpenStack 工程师提供了一个很好的平台.这次悉尼峰会我跟华为和Intel 的两个OpenStack老兵也结合这个活动带来了中国开发者/用户关于OpenStack的思考,感兴趣的朋友可以查找相关视频了解。


悉尼峰会三位OpenStacker分享前合影


个人独立董事


2017年1月我当选个人独立董事,参选前我给所有中国开发者发了一封公开信,陈述了自己的 OpenStack 经历与竞选理念,当选之后深感责任重大,在今年的任期内:


  1. 我参加了2017年所有(每月一次)董事会会议以及17年两届峰会前与TC/UC、基金会成员的会议,这些会议通常在凌晨4点。

  2. 投票支持了和见证了包括中国企业在内的多个优秀企业加入OpenStack 基金会。

  3. 参与社区一些重大的方向讨论与决策。

  4. 作为沟通桥梁,在OpenStack基金会为国内开发者以及企业更好的参与OpenStack社区代言。


作为基金会个人独立董事,我在社区和活动中的言行竭尽全力保持中立,而不是代表EasyStack一家公司,努力维护和宣传OpenStack,包括各种非OpenStack 会议,悉尼峰会前一天的董事会上,基金会执行董事Jonathan Bryce按照惯例介绍了峰会情况,董事会和基金会团队一起讨论了基金会管理更多非OpenStack 但属于Open Infrastructure 范围内的项目提议,TC也陈述了社区里最想要帮助的五个方向。


基金会通过各种Program在发掘新用户用例,促进OpenStack在行业落地,应对新的挑战方面有足够的经验与能力,比如这次峰会为改善基于OpenStack的SDK, 工具和程序框架的用户体验与性能,发起OpenLab Program, 这个Program 将在多个项目和工作协作包括测试,报告,修复问题.为了协同公有云工作组的努力及落地OpenStack, 推出OpenStack Public Cloud Passport Program。


原来的峰会分为会议和Design Summit 两部分,后来干脆把Design Summit 拆出来形成独立的PTG, 关于这个拆分国内不少公司和工程师反对,就此悉尼峰会期间我召集了国内几家公司的社区负责人,约了 TC chair ttx 反馈我们的意见与建议。 近年来越来越多的中国企业加入基金会,更多的中国人加入董事会,中国的贡献者不仅可以贡献代码,同样在开源社区的管理和方向性决策上,也在发挥着越来越大的作用,传达中国的声音和诉求将变为常态。


结尾


参与OpenStack的五年间,我见证了 OpenStack 的发展, 多数是跟技术打交道,也免不了牵扯到非技术相关的事情。有过开心的经历,也有过郁闷甚至心痛的经历,我庆幸在 OpenStack 社区里找到学习的榜样并追随,并对周围认识或不认识的人起到积极的影响,庆幸通过 OpenStack 结识了一些技术朋友,五年多过去了,过往成绩终究已成过去,抱着归零心态,热情依旧,OpenStacker 加油,前方有更美好的 OpenStack 旅程等着大家去经历!


作者郭长波 2017年11月悉尼峰会摄于蓝山 



作者介绍:

郭长波 / 2017年OpenStack基金会的独立董事、EasyStack开源社区负责人


2012年在IBM工作时开始接触OpenStack,最开始参与公司内部Nova PowerVM driver 开发,2014年加入EasyStack后逐渐集中在计算组件Nova和公共基础库Oslo,Lead 公司在开源社区的贡献,近半年在公司内部推动社区与产品融合,提升工程技术文化等工作.目前是OpenStack User Gruop 的组织者,从Pike版本开始到现在担任Oslo PTL, 组织参与国内多个活动meetup, 2017年 OpenStack China Day 活动志愿者,担任最近三届OpenStack峰会Upstream Development 议题评审,2017 年1月当选OpenStack基金会个人独立董事。


!!!投票方法!!!


1.OpenStack基金会董事会年度独立董事选举于2018年1月8日到2018年1月12日举行,所有的投票在网上进行,从UTC时间1月8日00:01开始在UTC时间1月12日17:00结束。如果您有资格投票(成为社区成员不少于6个月), 您将收到一个带有投票链接的电子邮件。


2.1月8日,在注册会员的邮箱里找一封名为“OpenStack Foundation – 2018 Individual Director Election”的信(具体标题可能不完全一致),里面有一个链接打开,勾上你要选的个人独立董事,可以看到郭长波(ChangBo Guo)等,点击“Submit Vote”。


3. 在出来的新页面里点“Confirm”,就生成了最终页面,投票就完成了。如果您没有找到该投票邮件,试着在其它文件夹里找找,看是否被当成垃圾邮件了。


4. 如果忘记密码,上官网https://openstackid.org/accounts/user/login,在login中,点“Forgot password”找回密码。


5. 如果实在不幸,不记得当初的注册邮箱地址了, 可以发信给OpenStack基金会(电子邮箱:secretary@openstack.org),问问他们帮你找回,下次请记住了。


6.如果没有帐号,还不是OpenStack会员,请上https://www.openstack.org/join/register/?membership-type=foundation   注册一下,记得注册为“Foundation Member”,关注了这么久的OpenStack,还不是会员是说不过去的。对于新注册用户您今年是不能投票的,必须会龄要半年以上。


投稿邮箱:openstackcn@sina.cn

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是在 Red Hat 上搭建 OpenStack Mitaka 版的完整过程: 1. 系统要求 首先,确保您的系统符合以下要求: - 操作系统:Red Hat Enterprise Linux 7.x - CPU:双核或更高 - 内存:至少8GB - 磁盘:至少100GB 2. 安装必要的软件 在开始安装 OpenStack Mitaka 之前,您需要安装一些必要的软件包和依赖项。运行以下命令来安装它们: ``` yum install -y centos-release-openstack-mitaka yum update -y yum install -y python-openstackclient openstack-selinux mariadb mariadb-server MySQL-python rabbitmq-server memcached python-memcached httpd mod_wsgi openstack-keystone openstack-glance openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables ipset ``` 3. 配置数据库 a. 启动 MariaDB 服务并设置自动启动: ``` systemctl start mariadb.service systemctl enable mariadb.service ``` b. 运行 mysql_secure_installation 命令来设置密码和其他安全设置: ``` mysql_secure_installation ``` c. 创建数据库和用户: ``` mysql -u root -p CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS'; CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS'; CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS'; FLUSH PRIVILEGES; EXIT; ``` 4. 配置 Identity Service(Keystone) a. 编辑 /etc/keystone/keystone.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone ... [token] ... provider = fernet ... ``` b. 初始化 Keystone 数据库: ``` su -s /bin/sh -c "keystone-manage db_sync" keystone ``` c. 设置 Keystone 管理员密码: ``` export OS_TOKEN=ADMIN_TOKEN export OS_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 openstack service create --name keystone --description "OpenStack Identity" identity openstack endpoint create --region RegionOne identity public http://controller:5000/v3 openstack endpoint create --region RegionOne identity internal http://controller:5000/v3 openstack endpoint create --region RegionOne identity admin http://controller:35357/v3 openstack domain create --description "Default Domain" default openstack project create --domain default --description "Admin Project" admin openstack user create --domain default --password ADMIN_PASS admin openstack role create admin openstack role add --project admin --user admin admin ``` d. 配置 Apache: ``` echo "ServerName controller" >> /etc/httpd/conf/httpd.conf systemctl restart httpd.service ``` 5. 配置 Image Service(Glance) a. 编辑 /etc/glance/glance-api.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance ... [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS ... [glance_store] ... default_store = file filesystem_store_datadir = /var/lib/glance/images/ ... ``` b. 编辑 /etc/glance/glance-registry.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance ... [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS ... ``` c. 初始化 Glance 数据库: ``` su -s /bin/sh -c "glance-manage db_sync" glance ``` d. 重启 Glance 服务: ``` systemctl enable openstack-glance-api.service openstack-glance-registry.service systemctl start openstack-glance-api.service openstack-glance-registry.service ``` 6. 配置 Compute Service(Nova) a. 编辑 /etc/nova/nova.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova ... [DEFAULT] ... auth_strategy = keystone ... my_ip = CONTROLLER_IP_ADDRESS ... [api] ... auth_strategy = keystone ... [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = NOVA_PASS ... [glance] ... api_servers = http://controller:9292 ... [oslo_concurrency] ... lock_path = /var/lib/nova/tmp ... ``` b. 初始化 Nova 数据库: ``` su -s /bin/sh -c "nova-manage db sync" nova ``` c. 重启 Nova 服务: ``` systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service systemctl start openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service ``` 7. 配置 Networking Service(Neutron) a. 编辑 /etc/neutron/neutron.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron ... [DEFAULT] ... core_plugin = ml2 service_plugins = router allow_overlapping_ips = True auth_strategy = keystone ... rpc_backend = rabbit ... [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = NEUTRON_PASS ... [oslo_concurrency] ... lock_path = /var/lib/neutron/tmp ... ``` b. 编辑 /etc/neutron/plugins/ml2/ml2_conf.ini 文件,修改以下部分: ``` [ml2] ... type_drivers = flat,vlan,vxlan tenant_network_types = vxlan mechanism_drivers = linuxbridge,l2population extension_drivers = port_security ... [ml2_type_flat] ... flat_networks = provider ... [ml2_type_vxlan] ... vni_ranges = 1:1000 ... [securitygroup] ... enable_ipset = True ... ``` c. 编辑 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件,修改以下部分: ``` [linux_bridge] ... physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME ... [vxlan] ... enable_vxlan = True local_ip = CONTROLLER_IP_ADDRESS l2_population = True ... [securitygroup] ... enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver ``` d. 编辑 /etc/neutron/l3_agent.ini 文件,修改以下部分: ``` [DEFAULT] ... interface_driver = linuxbridge ... external_network_bridge = ... ``` e. 编辑 /etc/neutron/dhcp_agent.ini 文件,修改以下部分: ``` [DEFAULT] ... interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = True ... ``` f. 创建软链接: ``` ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini ``` g. 初始化 Neutron 数据库: ``` su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron ``` h. 重启 Neutron 服务: ``` systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service ``` 8. 验证安装 使用 OpenStack 的命令行工具进行验证,例如: ``` source /root/admin-openrc.sh openstack user list ``` 如果可以列出用户列表,则说明 OpenStack Mitaka 版已经安装成功了! 希望这个完整的安装过程可以帮助到您!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值