共計 3453 個字符,預計需要花費 9 分鐘才能閱讀完成。
丸趣 TV 小編給大家分享一下 Openstack Trove 是什么意思,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
Trove 簡介
Openstack Trove 是 openstack 為用戶提供的數據庫即服務 (DBaaS)。所謂 DBaaS,即 trove 既具有數據庫管理的功能,又具有云計算的優勢。使用 trove,用戶可以:
按需 獲得數據庫服務器
配置所獲得的數據庫服務器或者數據庫服務器集群
對數據庫服務器或者數據庫服務器集群進行自動化管理
根據數據庫的負載讓數據庫服務器集群動態伸縮
與 openstack 的其他組件一樣,trove 也提供 RESTful API,并通過 RESTful API 和其他組件進行交互。
Trove 架構
上圖為 trove 的架構圖。Trove API 和用戶進行交互,當 Trove API 接收到用戶請求時,trove API 首先會調用 Keystone 的 API 來對用戶進行認證,認證通過后才會去執行相應的操作。Trove API 會同步處理操作簡單的一些請求,復雜的請求則會通過 Message Queue (RabbitMQ) 交給 Task Manager 來處理。Task Manager 會監聽 RabbitMQ 的一個 topic,收到請求后就會進行處理。這些請求通常是分配數據庫實例、管理數據庫實例的生命周期、操作數據庫等。和 openstack 的其他組件一樣,Trove 也有一個 Infrastructure Database 來存儲自己本身的數據,如數據庫實例的信息等。Trove conductor 的主要功能是接收來自 guest agent 的狀態更新信息,這些信息會被存儲在 Infrastructure database 里面或者作為調用結果返回給其他服務。通常這些狀態更新信息包括:guest agent 心跳包,數據庫備份狀態等。Guest Agent 運營于數據庫服務器中 (虛擬機),給 trove 其他組件提供了一套內部使用的 API,trove 的其他組件通過 Message Queue 來調用這些 API,guest agent 收到 API 調用請求后,執行相應的數據庫操作。
Trove 的安裝部署請參考 Openstack 官方文檔 (多坑慎入):
https://docs.openstack.org/project-install-guide/database/ocata/
Trove 的基本概念
數據庫實例(Instance):包含數據庫程序的 openstack 虛擬機,如果用戶創建了一個數據庫實例,那么他其實就創建了一臺 openstack 虛擬機,并在該虛擬機上啟動了數據庫服務。
Datastore:用來表示和存儲數據庫的類型、版本、虛擬機鏡像等信息。當用戶創建一個數據庫實例時需要指定 Datastore.
配置組 (Configuration Group):數據庫參數組成的集合。用戶可以將配置組應用到一個或多個數據庫實例上,因而避免了大量的重復操作。
Trove 的用法0.添加 Datastore
在創建數據庫實例時,需要指定 Datastore 來告訴 trove 需要用到的鏡像、數據庫類型及版本信息。所以在創建數據庫實例之前需要在系統中創建 Datastore.
由于版權問題,openstack 官方并沒有提供可供下載的鏡像,需要用戶自己去 build。可參考文檔:
https://docs.openstack.org/developer/trove/dev/building_guest_images.html
Build 好鏡像好需要將其上傳到 glance 服務:
ad@ltczhp11:~$ glance image-create --name mysql-5.6 --disk-format=qcow2 --container-format=bare --file=./mysql-5.6.qcow2 --visibility public
ad@ltczhp11:~$ glance image-list
+--------------------------------------+--------------------------+
| ID | Name |
+--------------------------------------+--------------------------+
| 31d60001-c2bf-496e-9f21-069bb411bd3b | CouchDB |
| eaf27f1b-3a8a-4efb-827c-697fa065933b | DB2 |
| 60ca8bfc-28a7-418a-9422-ec6548f23d54 | DIB-Mongodb |
| 51103b44-2618-4c15-8ded-4371bea8973a | DIB-Postgres |
| 8bc1a6a2-6ec3-4f37-bb54-91134b903996 | mongodb-lsl |
| c4c9a58f-bbe6-4640-8488-0c05b52028df | mysql-5.6 |
| 5d800163-3660-467a-a433-e1827924a741 | PostgreSQL |
| 38291f8f-5af6-4338-82b7-3f18dc355cae | ubuntu16.04-server-s390x |
+--------------------------------------+--------------------------+
使用 trove-manage 添加 Datastore:
root@ltczhp11:~# trove-manage datastore_update mysql #創建一個 datastore
root@ltczhp11:~# trove-manage datastore_version_update mysql 5.6 mysql c4c9a58f-bbe6-4640-8488-0c05b52028df 1 # 創建一個 dadastore 的版本,一個 dadastore 可以有多個版本
root@ltczhp11:~# trove-manage datastore_update mysql 5.6 #指定默認的 datastore 版本
1.基本的數據庫實例操作
列出所有的數據庫實例
$ trove list
創建一個數據庫實例
$ trove create vm1 2 –size 3 –datastore mysql
重啟一個數據庫實例
$ trove restart vm1
刪除一個數據庫實例
$ trove delete vm1
強制刪除一個數據庫實例
$ trove force-delete vm1
調整一個數據庫實例的規格
$ trove resize-volume vm1 4
$ trove resize-instance vm1 3
2.管理數據庫用戶
列出所有的數據庫用戶
$ trove user-list
創建一個用戶
$ trove user-create
刪除一個用戶
$ trove user-delete
給一個用戶授權訪問某個數據庫
$ trove user-grant-access
吊銷用戶對于某一個數據庫的訪問權限
$ trove user-revoke-access
顯示用戶信息
$ trove user-show
顯示用戶的權限
$ trove user-show-access
3. 數據庫管理
在一個數據庫實例中創建一個數據庫
$ trove database-create
列出一個數據庫實例中的所有數據庫
$ trove database-list
刪除一個數據庫實例中的某個數據庫
$ trove database-delete
4. 副本管理
創建一個副本
$ trove create –replica_of
將一個副本從源數據庫分離
$ trove detach-replica
讓一個副本在副本集合中成為源數據庫
$ trove promote-to-replica-source
刪除掛掉的源數據庫
$ trove eject-replica-source
設置副本親和性
$ trove create –replica_of –locality affinity
$ trove create –replica_of –locality anti-affinity
看完了這篇文章,相信你對“Openstack Trove 是什么意思”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!