设为首页 收藏本站
查看: 1661|回复: 0

[经验分享] Openstack Cinder使用NetApp NFS作为后端存储

[复制链接]

尚未签到

发表于 2017-12-5 07:21:17 | 显示全部楼层 |阅读模式
  公司使用NetApp FS8040作为测试环境NFS存储使用。正好有机会测一下OpenStack的Cinder跟NetApp存储集成。
  说明:
  1.OpenStack使用NetApp存储直接挂载NFS文件没任何问题,生产中已使用比较稳定测试IOPS在160-220M/s。
DSC0000.png

  2.使用OpenStack的Cinder无法像挂载如Linux主机共享NFS文件那样直接使用,需要调用NetAPP的API才能实现功能,如果设置为标准驱动故障现象为cinder-volume在开始的时候是正常的,一般十来分钟后State状态为down.(暂无截图)
DSC0001.png

  错误配置文件如下:
[DEFAULT]
enabled_backends = nfs

  [nfs]
  volume_backend_name = nfs               //标黄的三处命名应统一,命名内容与使用协议无关如下文命名netapp_nfs
volume_driver = cinder.volume.drivers.nfs.NfsDriver    //定义使用的驱动类型,通用的NFS使用该选项,第三方厂商调用的驱动配置各不相同
nfs_sparsed_volumes = True
nfs_shares_config = /etc/cinder/nfs_shares
nfs_mount_point_base = $state_path/mnt
nfs_mount_options = v3
[iyunv@controller1 cinder]# vim nfs_shares

  172.16.5.242:/vol/sqmgtvm02/nfs      //NetApp存储IP:/共享的文件目录  正确的内容应为172.16.5.xx:/vol/sqmgtvm02提供volume不是文件夹nfs为生产环境隔离增加nfs(导致下文报错2)
  检查/var/log/cinder/volume.log中报错日志如下:
  2017-09-07 22:07:58.983 16612 ERROR oslo_service.service [req-37e3e47a-e1cb-47b8-a950-73374fd8713b - - - - -] Error starting thread.
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service Traceback (most recent call last):
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service   File "/usr/lib/python2.7/site-packages/oslo_service/service.py", line 708, in run_service
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service     service.start()
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service   File "/usr/lib/python2.7/site-packages/cinder/service.py", line 234, in start
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service     self.manager.init_host(added_to_cluster=self.added_to_cluster)
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service   File "/usr/lib/python2.7/site-packages/cinder/volume/manager.py", line 425, in init_host
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service     self.driver.init_capabilities()
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service   File "/usr/lib/python2.7/site-packages/cinder/volume/driver.py", line 704, in init_capabilities
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service     stats = self.get_volume_stats(True)
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/remotefs.py", line 512, in get_volume_stats
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service     self._update_volume_stats()
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/nfs.py", line 448, in _update_volume_stats
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service     provisioned_capacity = self._get_provisioned_capacity()
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/remotefs.py", line 212, in _get_provisioned_capacity
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service     run_as_root=True)
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service   File "/usr/lib/python2.7/site-packages/cinder/utils.py", line 123, in execute
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service     return processutils.execute(*cmd, **kwargs)
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service   File "/usr/lib/python2.7/site-packages/oslo_concurrency/processutils.py", line 389, in execute
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service     cmd=sanitized_cmd)
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service ProcessExecutionError: Unexpected error while running command.
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service Command: sudo cinder-rootwrap /etc/cinder/rootwrap.conf du --bytes /var/lib/cinder/mnt/3d59744e62f876bf5171140e3a723d34
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service Exit code: 1
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service Stdout: u'4096\t/var/lib/cinder/mnt/3d59744e62f876bf5171140e3a723d34/.snapshot\n8268\t/var/lib/cinder/mnt/3d59744e62f876bf5171140e3a723d34\n'
2017-09-07 22:07:58.983 16612 ERROR oslo_service.service Stderr: '/bin/du: WARNING: Circular directory structure.\nThis almost certainly means that you have a corrupted file system.\nNOTIFY YOUR SYSTEM MANAGER.\nThe following directory is part of the cycle:\n  \xe2\x80\x98/var/lib/cinder/mnt/3d59744e62f876bf5171140e3a723d34/.snapshot/sv_nightly.0\xe2\x80\x99\n\n'
  2017-09-09 21:33:28.066 154678 WARNING oslo_reports.guru_meditation_report [-] Guru meditation now registers SIGUSR1 and SIGUSR2 by default for backward compatibility. SIGUSR1 will no longer be registered in a future release, so please use SIGUSR2 to generate reports.
2017-09-09 21:33:28.500 154678 WARNING cinder.keymgr.conf_key_mgr [req-ba7d370f-a96c-4b3f-95fa-c6234277766e - - - - -] This key manager is insecure and is not recommended for production deployments
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume [req-ba7d370f-a96c-4b3f-95fa-c6234277766e - - - - -] Volume service controller2@nfs failed to start.
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume Traceback (most recent call last):
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume   File "/usr/lib/python2.7/site-packages/cinder/cmd/volume.py", line 99, in main
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume     cluster=cluster)
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume   File "/usr/lib/python2.7/site-packages/cinder/service.py", line 382, in create
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume     cluster=cluster)
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume   File "/usr/lib/python2.7/site-packages/cinder/service.py", line 202, in __init__
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume     *args, **kwargs)
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume   File "/usr/lib/python2.7/site-packages/cinder/volume/manager.py", line 242, in __init__
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume     active_backend_id=curr_active_backend_id)
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume   File "/usr/lib/python2.7/site-packages/oslo_utils/importutils.py", line 44, in import_object
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume     return import_class(import_str)(*args, **kwargs)
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/common.py", line 75, in __new__
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume     na_utils.check_flags(NetAppDriver.REQUIRED_FLAGS, config)
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume   File "/usr/lib/python2.7/site-packages/cinder/volume/drivers/netapp/utils.py", line 79, in check_flags
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume     raise exception.InvalidInput(reason=msg)
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume InvalidInput: Invalid input received: Configuration value netapp_storage_protocol is not set.
2017-09-09 21:33:28.513 154678 ERROR cinder.cmd.volume
2017-09-09 21:33:28.517 154678 ERROR cinder.cmd.volume [req-ba7d370f-a96c-4b3f-95fa-c6234277766e - - - - -] No volume service(s) started successfully, terminating.
2017-09-09 21:33:30.401 154691 WARNING oslo_reports.guru_meditation_report [-] Guru meditation now registers SIGUSR1 and SIGUSR2 by default for backward compatibility. SIGUSR1 will no longer be registered in a future release, so please use SIGUSR2 to generate reports.
2017-09-09 21:33:33.308 154691 WARNING cinder.keymgr.conf_key_mgr [req-44d8acf3-246c-4efb-aaaf-00d092a68f40 - - - - -] This key manager is insecure and is not recommended for production deployments
  正确配置文件:
[netapp_nfs]
volume_backend_name = netpp_nfs
volume_driver = cinder.volume.drivers.netapp.common.NetAppDriver
netapp_storage_family = ontap_7mode          //NetApp目前产品线分为两种模式
netapp_storage_protocol = nfs                        //使用协议
netapp_server_hostname = sqmgtvm02         //改名称建议修改/etc/hosts来定义主机和IP (原使用共享目录的172.16.X.X的IP地址提示认证错误更改为NetApp的管理地址正常)
netapp_server_port = 80                             
netapp_transport_type = http                          //认证协议选择支持https和http,标准中我使用http模式。(https配置较复杂详见下文参考链接)
netapp_login = root                                         //登录用户名,应该为管理员权限,就是登陆onecommand的那个账号和密码
netapp_password = netappxxx                       //登录密码
#netapp_vserver = svm_name                       //具体未知 按照官方文档推测应该就是sqmgtvm02
nfs_shares_config = /etc/cinder/nfs_shares   //配置NetApp NFS存储共享内容,可以使用showmount -e 172.16.5.xxx 来显示存储共享的目录
nfs_mount_point_base = $state_path/mnt     //挂载到本地的挂载点,改命令直接挂载至/var/lib/cinder/mnt/6ff41da189e9ce5bfc54af3394adbcd8
#max_over_subscription_ratio = 1.0              //推测为磁盘超配比
#reserved_percentage = 5                             //卷预留空间占比防止卷彻底挂掉,Ceph中也有类似选项避免空间爆掉可以通过释放改空间来执行紧急删除或迁移操作

  个人排错跳坑历程:
  too young,too simple
  Cinder装好后认为会跟挂载NFS一样简单,按照错误配置直接挂载后打完收工竟然可以创建卷并成功挂载,简单dd命令一把完美准备交付。
DSC0002.png

  为伊消得人憔悴
  断断续续重启服务微调参数,各种参数修改但是cinder依然帅不过三秒。
  1.尝试检查各节点时间与时区是否同步,发现NetApp存储时间差异较大差点动手调整。
  2.检查NetApp配置,发现启用为NFS v3版本,调整[nfs]中nfs_mount_options = v3该选项默认是先尝试v4.1->v4.0->v3.0依次尝试,生产中建议直接指定为后端的NFS版本。
  3.通过搜索发现下面截图的内容,灵光一闪如思科这种国际大厂都是对共有协议N多修改难道NetApp也有类似的修改定制。
  原文链接:http://www.cnblogs.com/liaojiafa/p/6392684.html
DSC0003.png

  检查如下,确认Cinder确有NetApp定制的驱动内容
DSC0004.png

  翻看了RedHat相关文档内容也支持了这种推论。(囧,竟然是在思科官方找到)
  截图链接:https://www.cisco.com/c/en/us/td/docs/unified_computing/ucs/UCS_CVDs/flexpod_openstack_osp6_design.html
DSC0005.png

  各种让人忧伤的报错截图:
DSC0006.png

DSC0007.png

  方向既然有就开始翻看OpenStack官网内容然后才了解原来NetApp存储还分不同的family如7-Mode和ontap_cluster,检查公司存储为7-Mode,其他不同的NetApp型号可能需要单独查询。
DSC0008.png

DSC0009.png

  Newton:https://docs.openstack.org/newton/config-reference/block-storage/drivers/netapp-volume-driver.html
  Ocata   :https://docs.openstack.org/ocata/config-reference/block-storage/drivers/netapp-volume-driver.html
  按照上文配置参数修改后重新配置服务后重启依然帅不过三秒,果然幸福来的太快都是假的。
DSC00010.png

DSC00011.png

  不过这次报错信息很贴心的告诉我服务很快会显示down,我谢谢你啊。。。。。。
  报错为no sending heartbeat,既然是用heartbeat就说明有联动的调用关系才会有状态信息监测。OpenStack官方文档未找到相关选项点击进NetApp官方的GitHub看看有没有思路。

DSC00012.png   官方配置文档 :   http://netapp.io/openstack/
  GitHub:            https://github.com/NetApp/cinder
  对应参考NFS 7Mode:    http://netapp.github.io/openstack-deploy-ops-guide/liberty/content/cinder.7mode.nfs.configuration.html
  netapp_transport_type = http 既然是Required所有示例中都没该参数,修改参数后故障依然继续服务还是帅不过三秒。
DSC00013.png

DSC00014.png

  报错相关链接搜索:
  http://community.netapp.com/t5/OpenStack-Discussions/Cinder-driver-netapp-problem-KILO-Release/td-p/115209
  https://community.netapp.com/t5/OpenStack-Discussions/cinder-iscsi-driver-initialization-failed/td-p/131503
  https://platform9.com/support/openstack-cinder-integration-with-netapp-cluster-nfs/
  https://review.openstack.org/#/c/499148/
  https://bugs.launchpad.net/cinder/+bug/1660870
  https://bugs.launchpad.net/cinder/+bug/1705738
  https://bugs.launchpad.net/cinder/+bug/1694579
  检查NetApp日志XML报错提示http认证错误,排除账号密码问题检查NetApp发现默认是启用SSL,关闭SSL认证认证通过在存储控制器上正常发现Openstack Cinder可以正常连接。
  该操作存在问题后续启用认证并未提示失败,待测。
DSC00015.png

DSC00016.png

  HTTPS认证方式可以参考该文章非常不错可参考:
  http://netapp.io/2017/02/15/use-certificate-verification-netapp-ontap-openstack-cinder-driver/
DSC00017.png

  报错2:
DSC00018.png

  使用中遇到问题:
  nfs_sparsed_volumes=True生产中应禁用,该选项会导致创建的卷直接占用磁盘空间存在IOPS保证风险,切记不准随意开启。
DSC00019.png

  Cinder成功后每次创建虚机都会先吃存储卷大小,直接将创建新卷点击为否可暂时不创建存储卷。
DSC00020.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-420676-1-1.html 上篇帖子: 2017-7-7 制作OpenStack Ocata版的本地yum仓库 下篇帖子: OpenStack计费项目Cloudkitty系列详解(一)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表