Trove提供了便捷的圖形操作界面,進行數據庫創建、管理等,也可以通過命令行方式實現相同的功能。下面通過Trove創建一個數據庫實例來講解Trove的工作流程。
1.創建數據庫實例
1)命令行方式,創建一個數據庫實例troveabc,並設置數據庫用戶和密碼。
trove create TROVE_INSTANCE_NAME 1---size 10 \ --databases troveabc \ --users longgeek:password \ --datastore_version 5.5 \ --datastore mysql \ --nic net-id=9cbae051-78c7-4574-968e-2cb9b0f410aa
2)通過圖形界面創建一個數據庫實例。
創建一個Trove實例,輸入實例名字,選擇一個Flavor,以及使用的Cinder-volume大小,填入要創建的數據庫名、用戶名、密碼,以及訪問限制,完成創建。
通過上面的描述我們可以看出,通過Trove可以很便捷地在雲化環境中實現對數據庫的自動化創建和管理等。在創建一個數據庫實例的過程中,包含了很多隱性的操作,那就看看在創建數據庫實例過程中,Trove調用了哪些主鍵,做了些什麼操作。
1)Tove通過OpenStack其他主鍵的API接口調用了zone、volume、neutron、Security-Group、instance等。
2)admin用戶創建的一個共享內網網絡,同時也寫在了trove.conf中。
3)在創建Trove實例時,分配5G的卷給虛擬機。
4)創建Trove實例時會自動根據datastore_type來指定一個單獨的安全組,默認開啟了相關數據庫服務端口號。
5)給實例添加網絡資源浮動IP,可以通過浮動IP連接到數據庫。
創建一個數據庫實例內容的實現流程
1)啟動VM,創建Nova實例。
2)創建數據庫實例,執行cloud-init自動擴展根分區、Metadata以及Heat模板中自定義的腳本。
3)重啟Tove-guestagent服務,而Trove-guestagent會監聽RPC消息隊列,Trove-guestagent服務啟動後,更新狀態為Running,發送RPC消息。
4)Taskmanager收到消息後,發送創建db請求。
5)Trove-guestagent收到請求後創建相應db,最後發送Active狀態消息給RPC。
6)Trove-conductor同時收到trove-guestagent Active消息後,去數據庫裡更新trove instance的狀態。