您好,登錄后才能下訂單哦!
這篇文章主要介紹“OpenStack Cinder服務狀態排錯方法是什么”,在日常操作中,相信很多人在OpenStack Cinder服務狀態排錯方法是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”OpenStack Cinder服務狀態排錯方法是什么”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
最近手動搭建了一個openstack環境,創建硬盤時失敗,查看日志,提示無法進行調度,懷疑是cinder節點出現問題,去cinder節點查看服務 ,狀態顯示正常。
systemctl status openstack-cinder-volume.service
然后在控制節點查看cinder服務,openstack volume service list
正常情況下顯示:
結果顯示cinder-volume的state為down,查看日志發現沒有任何錯誤信息,重啟cinder的各種服務仍然沒有效果,最后決定跟蹤源碼(說明:文中代碼對應的是OpenStack Train版)。
找到openstack volume service list對應的實現代碼。
now = timeutils.utcnow(with_timezone=True)
由于openstack-cinder-api.servic服務在controller節點啟動,所以獲取的是controller節點的當前時間。
services = objects.ServiceList.get_all(context, filters)最終會從cinder數據庫的services表中獲取所有服務數據。
alive = abs(delta_sec) <= CONF.service_down_time,比較時間差的絕對值是否小于配置的service_down_time,其中service_down_time默認時間是60s。
cfg.IntOpt('service_down_time', default=60, help='Maximum time since last check-in for a service to be ' 'considered up'),
art = "up" if alive else "down" 差值小于60,則service 狀態為 up,否則為down。由此可見cinder service的state值取決于cinder數據庫中 service 表每行數據的 updated_at 列的值和當前 controller 節點的時間差是否在配置的范圍之內。
解決問題
上面cinder-volume出現down的原因就是因為運行openstack-cinder-volume.service服務的存儲節點時間與controller節點時間差值過大。為了保證狀態為up,必須保證兩節點的時間差在service_down_time - report_interval之內,默認情況下,差值為50秒。所以同步兩臺服務器時間之后,再次查看,發現cinder-volume的state變為up。
cinder服務更新機制
下面說下 Cinder Service 的更新機制。
report_interval默認時間是10s,
cfg.IntOpt('report_interval', default=10, help='Interval, in seconds, between nodes reporting state ' 'to datastore'),
到此,關于“OpenStack Cinder服務狀態排錯方法是什么”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。