技術分享 | 使用 RPM 部署 Oceanbase Proxy
愛可生研發中心工程師,負責專案的需求與維護工作。其他身份:柯基鏟屎官。
*愛可生開源社群出品,原創內容未經授權不得隨意使用,轉載請聯絡小編並註明來源。
一、引言:
二、前期準備
golang 1.17 或以上版本(用於編譯執行 Config server) 部署一套 OB 資料庫叢集(本文使用版本為:oceanbase-ce 3.1.4) oceanbase-obproxy-ce-3.2.3.5-2.el7.x86_64.rpm
三、部署 Config server
3.1 下載 Oceanbase 原始碼
git clone
3.2 編輯 ./etc/config.yaml 配置檔案
server.address: web 服務執行後繫結的 IP 與埠 vip.address: VIP 地址,注:如果為單節點,此處應填寫 OBproxy 與 OBserver 可以訪問到的IP地址(127的話如果不在同一臺主機是不行的) storage.connection_url: 這裡使用 mysql 作為資料來源進行儲存,資料表會自動進行建立,但庫如果不存在會導致啟動失敗
## server config
server:
address: "0.0.0.0:8080"
run_dir: run
## vip config, configserver will generate url with vip address and port and return it to the client
## if you don't hava a vip, use the server address and port is ok, but do not use some random value that can't be connected
vip:
address: "127.0.0.1"
port: 8080
## storage config
storage:
## database type, support sqlite3 or mysql
database_type: mysql
# database_type: sqlite3
## database connection config, should match database_type above
connection_url: "user:password@tcp(127.0.0.1:3306)/oceanbase?parseTime=true"
# connection_url: "/tmp/data.db?cache=shared&_fk=1"
# connection_url: "file:ent?mode=memory&cache=shared&_fk=1"
3.3 編譯二進位制檔案:
# 預設的build方法編譯的是debug版本,如果需要release版本請使用:make build-release
root@ubuntu: make build
Build with debug flags
GO111MODULE=on GOPROXY= go build -p 2 -race -ldflags '-X "github.com/oceanbase/configserver/config.Version=1.0" -X "github.com/oceanbase/configserver/config.BuildTimestamp=2022-12-21 06:07:53" -X "github.com/oceanbase/configserver/config.GitBranch=master" -X "github.com/oceanbase/configserver/config.GitHash=873c59f5fe834d87fc0252f4522281f3e4e6ceea" -X "github.com/oceanbase/configserver/config.Mode=debug" -X "github.com/oceanbase/configserver/config.CurProcess=ob-configserver"' -o bin/ob-configserver cmd/main.go
3.4 啟動 config server
root@ubuntu: nohup ./bin/ob-configserver -c ./etc/config.yaml &
四、為 OB server 叢集註冊 Config server
4.1 登入 OB server ,初始化 proxyro 賬號
$ obclient -h172.20.134.2 -uroot@sys -P2881 -p -c -A oceanbase
Enter password:
# 單引號內為賬號密碼,請自行修改
obclient> CREATE USER proxyro IDENTIFIED BY '123456';
Query OK, 0 rows affected
obclient> GRANT SELECT ON *.* TO proxyro;5
Query OK, 0 rows affected
obclient> SHOW GRANTS FOR proxyro;
+----------------------------------+
| Grants for proxyro@% |
+----------------------------------+
| GRANT SELECT ON *.* TO 'proxyro' |
+----------------------------------+
1 row in set (0.067 sec)
4.2 配置 ConfigURL
# 叢集名需要調整為OB server的叢集名稱
obclient [oceanbase]> ALTER SYSTEM SET obconfig_url = 'http://192.168.2.42:8088/services?Action=ObRootServiceInfo&ObCluster=obcluster';
Query OK, 0 rows affected (0.078 sec)
4.3 重新整理 config server 配置
使用手動 POST API 介面的形式註冊比較麻煩,在 OB server 側,會主動更新 config server 內的配置資訊,觸發方式如下,當配置了 config URL 之後:
# 注:雙引號內調整為當前角色為follower的root service進行切換(如果使用leader執行如下語句並不會觸發更新上報)
obclient [oceanbase]> ALTER SYSTEM SWITCH ROOTSERVICE LEADER server '172.20.134.2:2882';
Query OK, 0 rows affected (0.004 sec)
4.4 檢查是否上報成功
五、部署 OBproxy
5.1 建立 admin 使用者與使用者組(在非 admin 使用者下執行程式可能會出現一些意料之外的問題)
# 建立admin使用者組
sh-4.2# groupadd --force admin
# 檢查admin使用者是否存在
sh-4.2# id admin
id: admin: no such user
# 如果不存在,則建立並加入admin使用者組
sh-4.2# useradd -M -g admin admin
sh-4.2# id admin
uid=5701(admin) gid=5701(admin) groups=5701(admin)
5.2 安裝 RPM 包
sh-4.2# rpm -ivh --force oceanbase-obproxy-ce-3.2.3.5-2.el7.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:obproxy-ce-3.2.3.5-2.el7 ################################# [100%] 下載完成後執行
5.3 啟動 proxy 程式
obproxy_config_server_url (configURL 引數,缺少的話會導致無法連線 OBserver)
observer_sys_password(OBserver 內的 proxyro 賬號的密碼,用於 proxy 與 OBserver 之間通訊使用,啟動時缺少的話可以進入 proxy 內重新修改,但不指定的話會連線時提示密碼錯誤)
bash-4.2$ cd admin/obproxy-3.2.3.5/
bash-4.2$ su admin
bash-4.2$ ./bin/obproxy -p 2883 -n mycluster -o "prometheus_sync_interval=1s,obproxy_config_server_url=
./bin/obproxy -p 2883 -n mycluster -c obcluster -o prometheus_sync_interval=1s,obproxy_config_server_url=
listen port: 2883
appname: mycluster
cluster_name: obcluster
optstr: prometheus_sync_interval=1s,obproxy_config_server_url=
5.4 檢查引數是否正確
observer_sys_password 密碼是 sha1 後的值,而不是原始值。例如:proxyro 使用者設定的密碼是 123456 ,則需要設定 observer_sys_password 的值是 7c4a8d09ca3762af61e59520943dc26494f8941b
# config URL是否已設定
bash-4.2$ strings ./etc/obproxy_config.bin |grep "obproxy_config_server_url"
obproxy_config_server_url=
# proxyro使用者密碼是否已設定
bash-4.2$ strings ./etc/obproxy_config.bin |grep "observer_sys_password"
observer_sys_password1=
observer_sys_password=7c4a8d09ca3762af61e59520943dc26494f8941b
六、連線測試
bash-4.2$ obclient -h172.20.134.3 -P2883 -uroot@sys#obcluster -p -c -A oceanbase
Enter password:
Welcome to the OceanBase. Commands end with ; or \g.
Your OceanBase connection id is 1
Server version: 5.6.25 OceanBase 3.1.4 (r10000092022071511-b4bfa011ceaef428782dcb65ae89190c40b78c2f) (Built Jul 15 2022 11:45:14)
Copyright (c) 2000, 2022, OceanBase and/or its affiliates. All rights reserved.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
obclient [oceanbase]> SELECT SYSDATE();
+---------------------+
| SYSDATE() |
+---------------------+
| 2022-12-28 14:31:04 |
+---------------------+
1 row in set (0.003 sec)
obclient [oceanbase]> exit
Bye
七、其他
7.1 連線時提示密碼錯誤
檢查 proxy 配置引數中 observer_sys_password 的值是否正確 檢查 OBserver 內是否存在 proxyro 賬號,存在的話賬號的密碼是否正確,許可權是否正確
7.2 連線時提示找不到叢集,日誌顯示:curl easy perform failed
3.2.3.5 版本 proxy 的 obproxy_config_server_url 引數內不能使用單引號,否則會出現該錯誤。
本文關鍵字:#OBproxy部署# #OB config server#
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024420/viewspace-2933726/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 技術分享 | OceanBase 裡的 BUFFER 表
- 技術分享 | OceanBase 租戶延遲刪除
- 技術分享 | OceanBase 資源及租戶管理
- 技術分享:Proxy-Pool代理池搭建IP代理
- 技術分享 | LSM-Tree 和 OceanBase 分層轉儲
- 技術分享 | OceanBase 資料處理之控制檔案
- 基於linux離線部署nginx,使用rpmLinuxNginx
- oracle18c shard技術分享-安裝部署Oracle
- 技術分享| 訊息佇列Kafka群集部署佇列Kafka
- 手把手教你使用rpm部署ceph叢集
- 技術分享 | OceanBase 手滑誤刪了資料檔案怎麼辦
- 【技術分享】如何使用FMEA解決問題?
- 陽振坤:OceanBase 4.0 核心技術解讀
- oceanbase 安裝叢集 install OB rpm報錯處理
- IAST技術知識-Java環境Agent部署知識乾貨分享ASTJava
- 技術分享主幹
- 技術分享| HTTP 代理HTTP
- 『技術分享』-- 使用極光 IM 構建聊天功能
- 技術分享 | dbslower 工具學習之探針使用
- 各公司使用者畫像技術案例分享
- 2021資料技術嘉年華 | OceanBase 技術盛宴ON LINE ,我們不見不散!
- 【熱門IT技術專案分享】-雲原生應用部署-電商網站網站
- 技術分享| 如何部署安裝分散式序列號生成器系統分散式
- OceanBase楊志豐 OceanBase 4.0:單機分散式一體化的技術演進分散式
- web前端技術分享:使用react實現簡易路由Web前端React路由
- GDD 2018 上海 技術分享
- zabbix server & proxy部署操作過程Server
- Linux 筆記分享十三:RPM 命令管理Linux筆記
- 封仲淹:OceanBase開源技術生態全景解析
- 深度乾貨 | OceanBase 主動切主技術解讀
- 技術選型的藝術---湖北技術價值分享會
- 技術分享| 雲伺服器的使用-nginx的安裝及使用伺服器Nginx
- 簡單使用rpm命令
- [技術分享]使用 iris 是根據 laravel 特色 搭建小架子Laravel
- 技術分享| 如何使用Prometheus實現系統程式監控Prometheus
- 2021 OceanBase 年度報告 | 用技術讓海量資料的管理和使用更簡單!
- 2022 OceanBase 年度報告|用技術讓海量資料的管理和使用更簡單!
- 2021 OceanBase 年度報告 | 用技術讓海量資料的管理和使用更簡單