91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

關于nova-manage service list檢測服務狀態原理 是什么

發布時間:2021-12-01 16:52:41 來源:億速云 閱讀:189 作者:柒染 欄目:云計算

這期內容當中小編將會給大家帶來有關 關于nova-manage service list檢測服務狀態原理 是什么,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

環境:centos6.5 openstack ice版

1、

關于nova-manage service list檢測服務狀態原理 是什么


2、

關于nova-manage service list檢測服務狀態原理 是什么


3、

vim /usr/bin/nova-manage

關于nova-manage service list檢測服務狀態原理 是什么


load_entry_point('nova==2014.1.1', 'console_scripts', 'nova-manage')()

第一個參數定向到 /usr/lib/python2.6/site-packages/nova-2014.1.1-py2.6.egg-info/

然后搜索EGG-INFO/entry_points.txt

 vim /usr/lib/python2.6/site-packages/nova-2014.1.1-py2.6.egg-info/entry_points.txt 

關于nova-manage service list檢測服務狀態原理 是什么


搜索

load_entry_point('nova==2014.1.1', 'console_scripts', 'nova-manage')()

第二、第三個參數:

console_scripts、nova-manage

關于nova-manage service list檢測服務狀態原理 是什么


得到入口地址為:

nova-manage = nova.cmd.manage:main


4、

關于nova-manage service list檢測服務狀態原理 是什么



關于nova-manage service list檢測服務狀態原理 是什么


關于nova-manage service list檢測服務狀態原理 是什么


5、

關于nova-manage service list檢測服務狀態原理 是什么



 @args('--host', metavar='<host>', help='Host')

    @args('--service', metavar='<service>', help='Nova service')

    def list(self, host=None, service=None):

        """Show a list of all running services. Filter by host & service

        name

        """

        servicegroup_api = servicegroup.API()

        ctxt = context.get_admin_context()

        services = db.service_get_all(ctxt)  #獲取nova service數據庫表所有數據

        services = availability_zones.set_availability_zones(ctxt, services)

        if host:

            services = [s for s in services if s['host'] == host]

        if service:

            services = [s for s in services if s['binary'] == service]

        print_format = "%-16s %-36s %-16s %-10s %-5s %-10s"

        print(print_format % ( #此處打印出圖1.1

                    _('Binary'),

                    _('Host'),

                    _('Zone'),

                    _('Status'),

                    _('State'),

                    _('Updated_At')))

        for svc in services:

            alive = servicegroup_api.service_is_up(svc)  #檢測服務是否為alive 、重點解析此處的代碼根據

            art = (alive and ":-)") or "XXX"

            active = 'enabled'

            if svc['disabled']:

                active = 'disabled'

            print(print_format % (svc['binary'], svc['host'],

                                  svc['availability_zone'], active, art,

                                  svc['updated_at']))


圖1.1:

關于nova-manage service list檢測服務狀態原理 是什么


6、 service_is_up:(根據到7講解is_up函數)

關于nova-manage service list檢測服務狀態原理 是什么

關于nova-manage service list檢測服務狀態原理 是什么


注:大家可以再下圖中看到,判斷服務狀態,可以有多重方式,有db、還有zookeeper等。從上圖可知本次中使用的為db檢查服務狀態。

關于nova-manage service list檢測服務狀態原理 是什么


7、講解is_up函數:


 

關于nova-manage service list檢測服務狀態原理 是什么



    def is_up(self, service_ref):

        """Moved from nova.utils

        Check whether a service is up based on last heartbeat.

        """

        last_heartbeat = service_ref['updated_at'] or service_ref['created_at']  #獲取服務最后一次更新時間,或者第一次創建時間,最為心跳時間

         if isinstance(last_heartbeat, six.string_types):  #此處代碼就是將上面獲取的心跳時間,轉換成datetime時間

            # NOTE(russellb) If this service_ref came in over rpc via

            # conductor, then the timestamp will be a string and needs to be

            # converted back to a datetime.

            last_heartbeat = timeutils.parse_strtime(last_heartbeat)

        else:

            # Objects have proper UTC timezones, but the timeutils comparison

            # below does not (and will fail)

            last_heartbeat = last_heartbeat.replace(tzinfo=None)

        # Timestamps in DB are UTC.

        elapsed = timeutils.delta_seconds(last_heartbeat, timeutils.utcnow())  #此處計算出心跳時間與當前時間的差值

        LOG.debug('DB_Driver.is_up last_heartbeat = %(lhb)s elapsed = %(el)s',

                  {'lhb': str(last_heartbeat), 'el': str(elapsed)})

        return abs(elapsed) <= CONF.service_down_time#此處根據差值來判斷服務是否正常(比較時間為配置文件配置。如下圖:)

關于nova-manage service list檢測服務狀態原理 是什么


nova.conf中:

關于nova-manage service list檢測服務狀態原理 是什么


所以最近更新時間,或者第一次創建時間與當前時間間隔少于CONF.service_down_time(60秒),則認為服務alive

從這里也可以得知為什么控制節點和計算節點的時間要一致。


接下來試驗驗證一下:

關于nova-manage service list檢測服務狀態原理 是什么

關于nova-manage service list檢測服務狀態原理 是什么


現在強制修改數據庫表中nova-compute的update_at時間:

由2014-08-04 23:51:24修改為:2014-08-04 22:51:24


關于nova-manage service list檢測服務狀態原理 是什么


再來查看狀態:

關于nova-manage service list檢測服務狀態原理 是什么

上述就是小編為大家分享的 關于nova-manage service list檢測服務狀態原理 是什么了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德阳市| 内丘县| 磴口县| 甘肃省| 保靖县| 聊城市| 平定县| 红桥区| 永德县| 准格尔旗| 措美县| 漳州市| 浪卡子县| 建湖县| 腾冲县| 锦州市| 长武县| 岳普湖县| 安图县| 夏邑县| 凤冈县| 且末县| 临洮县| 民乐县| 台湾省| 丁青县| 罗甸县| 湘潭县| 宜章县| 和林格尔县| 天柱县| 景德镇市| 灵宝市| 普兰店市| 中超| 比如县| 长丰县| 河北省| 舞钢市| 科技| 凤翔县|