[关闭]
@skyway 2016-08-18T08:09:11.000000Z 字数 3430 阅读 1048

CMDB问题

work


【注】有疑问的地方都通过加粗+???标明了

本地环境

  1. //requirements.txt
  2. Babel==1.3
  3. Flask==0.9
  4. Flask-Assets==0.9
  5. Flask-Babel==0.8
  6. Flask-Cache==0.9.2
  7. Flask-Celery==2.4.3
  8. Flask-DebugToolbar==0.9.0
  9. Flask-Mail==0.7.4
  10. Flask-Principal==0.3.5
  11. Flask-SQLAlchemy==0.16
  12. Flask-Script==0.5.2
  13. Flask-Uploads==0.1.3
  14. Flask-WTF==0.8.3
  15. Jinja2==2.7.2
  16. MarkupSafe==0.23
  17. Paste==1.7.4
  18. PyMySQL==0.5
  19. PyYAML==3.10
  20. SQLAlchemy==1.0.8
  21. WTForms==2.0.1
  22. Werkzeug==0.9.4
  23. amqp==1.0.13
  24. anyjson==0.3.3
  25. argparse==1.2.1
  26. billiard==2.7.3.34
  27. blinker==1.3
  28. celery==3.0.24
  29. cssmin==0.2.0
  30. gunicorn==0.17.4
  31. importlib==1.0.3
  32. iniparse==0.3.1
  33. itsdangerous==0.24
  34. jsmin==2.0.11
  35. kombu==2.5.16
  36. msgpack-python==0.1.9
  37. ordereddict==1.1
  38. pycrypto==2.0.1
  39. pycurl==7.19.0
  40. python-dateutil==2.2
  41. python-ldap==2.4.10
  42. pytz==2010h
  43. pyzmq==2.2.0.1
  44. redis==2.7.2
  45. requests==2.3.0
  46. salt==0.11.1
  47. simplejson==2.0.9
  48. six==1.7.2
  49. speaklater==1.3
  50. sunburnt==0.6
  51. webassets==0.9

程序疑惑

  1. 数据库master与slave
    目前config中只有一个数据库,没有master和slave的区分。本地使用use_master=True时数据库操作db.session().using_bind("master")失败报错。线上环境use_master=True不会出错吗?

    1. @celery.task(name="cmdb.ci_cache", queue="cmdb_async")
    2. def ci_cache(ci_id):
    3. time.sleep(0.1)
    4. db.session.close()
    5. m = lib.ci.CIManager()
    6. # 线上
    7. # ci = m.get_ci_by_id(ci_id, need_children=False, use_master=True)
    8. # 本地修改后
    9. ci = m.get_ci_by_id(ci_id, need_children=False, use_master=False)
    10. rd.delete(ci_id)
    11. rd.add({ci_id: json.dumps(ci)})
    12. current_app.logger.info("%d caching.........." % ci_id)
  2. 配置文件
    config中有broker配置,但是线上celery初始化时并未使用,且本地无法找到init_app函数?(线下使用的线上的celery版本)

    • celery无init_app函数
      1. // __init__.py
      2. def configure_extensions(app):
      3. db.app = app
      4. # 线上
      5. # celery.init_app(app)
      6. db.init_app(app)
      7. mail.init_app(app)
      8. cache.init_app(app)
      9. # 本地修改后
      10. celery.__init__(app, broker="redis://127.0.0.1//")
      11. celery.conf.update(app.config)

    本地执行时必须定义cache的type,否则set无效,线上初始化时没有看cache到进行相关配置?

    • cache初始化配置
      1. // extenssion.py
      2. mail = Mail()
      3. db = SQLAlchemy()
      4. # 线上
      5. # cache = Cache()
      6. # 本地修改后
      7. cache = Cache(config={'CACHE_TYPE': 'redis'})
      8. celery = Celery()
  3. 程序问题
    返回值个数多于接收变量个数,只有在缓存无效时才会触发

    1. // product.py
    2. def get_all_products(self, page, per_page=None):
    3. # 线上
    4. #if self.ci_type is None:
    5. # return 0, 0, page, []
    6. # 本地修改后
    7. if self.ci_type is None:
    8. return 0, 0, []
    9. numfound, page, cis = CIManager().get_cis_by_type(
    10. self.ci_type.type_id, page=page, per_page=per_page)
    11. return numfound, len(cis), cis

部署

线上目前python程序

  1. [root@cmdb05 cmdb-api]# ps -ef | grep python
  2. root 877 12032 6 03:00 ? 00:48:31 python manage.py run
  3. root 1227 1 0 2015 ? 01:21:38 /usr/bin/python /usr/bin/certmaster --daemon
  4. root 1374 1 0 2015 ? 00:39:39 /usr/bin/python /usr/bin/salt-minion -d
  5. root 3267 12032 6 14:00 ? 00:08:41 python manage.py run
  6. root 4969 12032 6 06:00 ? 00:38:44 python manage.py run
  7. root 8330 12032 7 09:00 ? 00:30:39 python manage.py run
  8. root 11822 12032 6 12:00 ? 00:16:44 python manage.py run
  9. root 11930 11901 0 Aug11 ? 00:17:25 python manage.py celeryd -Q cmdb_async
  10. root 11948 11930 0 Aug11 ? 00:35:57 python manage.py celeryd -Q cmdb_async
  11. root 11949 11930 0 Aug11 ? 00:35:45 python manage.py celeryd -Q cmdb_async
  12. root 11950 11930 0 Aug11 ? 00:37:18 python manage.py celeryd -Q cmdb_async
  13. root 11951 11930 0 Aug11 ? 00:36:23 python manage.py celeryd -Q cmdb_async
  14. root 12032 12003 0 Aug11 ? 00:02:05 python manage.py run
  15. root 21460 12032 6 02:00 ? 00:52:01 python manage.py run
  16. root 26518 26495 0 16:00 ? 00:00:00 python cmdb_agent.py
  17. root 26759 12032 8 16:00 ? 00:00:34 python manage.py run
  18. root 27872 1 0 Aug14 ? 00:00:00 /usr/bin/python /usr/bin/funcd --daemon
  19. root 28060 27943 0 16:07 pts/1 00:00:00 grep python
  20. root 28834 12032 6 08:00 ? 00:33:04 python manage.py run

本地

上面提到配置文件问题,本地修改后可以按下面指令运行起来

  1. $ python manage.py celeryd
  2. $ python manage.py runserver

但是线上需要怎么操作?

线上

  1. nginx去掉机器A
  2. pull代码到A

  3. pkill所有python程序???

  4. 无问题后添加到nginx???

扩容问题

部署问题了解清楚了的话,扩容相当于增加一台机器,运行cmdb然后添加到nginx???

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注