天天看點

OceanBase 2.x 試用版安裝體驗——OCP 2.31. 前言2. 安裝規劃3. 機器初始化4. 安裝OCP5. 常見問題和診斷方法5. 其他文章參考

1. 前言

OceanBase 2.2相關軟體包近期已經通過OceanBase官網提供,其中包括一個OceanBase資料庫産品、OceanBase自動化運維産品(OCP)的安裝檔案和相關容器鏡像。試用版指的是相關産品都是免費用于學習、開發和測試環境使用,功能上跟正式版并沒有多大差別。

2. 安裝規劃

OceanBase資料庫産品是必須安裝的,自動化運維産品(OCP)不是必須但是建議安裝。如果不安裝OCP,則需要手動安裝OceanBase資料庫産品,詳情參考《OceanBase 2.x體驗:手動搭建OceanBase叢集》。

官網下載下傳檔案裡包含試用版安裝手冊,本文分享OCP安裝體驗,大家在使用中遇到任何技術問題都可以聯系我或者其他OceanBase團隊成員。

2.1 容器介紹

OCP 2.x版本相比1.x版本做了重構,架構上簡單很多。OCP部署架構至少包含三個Docker容器:OCP應用容器、OBProxy容器、中繼資料庫OB容器。使用Docker容器技術主要是友善自動化部署,詳情請參考《OceanBase 運維平台(OCP)使用基礎:Docker技術》。

在三個容器裡,OBProxy容器是最簡單的,裡面隻有一個OBProxy程序,嚴格來說這個容器用一個單獨的OBProxy程序也可以代替。其他兩個容器就相對複雜一點。三個容器的啟動順序是先安裝中繼資料庫OB容器,然後啟動OBProxy容器,最後OCP容器。

實際安裝步驟上會在安裝OBProxy容器之前先啟動一個臨時的OCP容器(隻有提供API的功能),等OBProxy運作正常後,再将臨時的OCP容器替換為正式的OCP容器。

試用版的OCP中繼資料庫隻有單節點,正式版的會是三節點的OB叢集。三個容器會在三台機器上啟動。是以OBProxy會有三個,OCP也會有三個,對應的通路位址需要統一。通常有兩種做法:用VIP或者DNS做負載均衡。是以在正式版的OCP安裝步驟裡會先啟動一個負載均衡容器(本質是一個haproxy或者dns服務)。

2.2 機器初始化需求

三個容器裡,OB容器是存儲中繼資料的,其資料庫檔案使用的是主控端的目錄。是以需要在主控端上做好OB資料庫檔案目錄規劃。通常最佳實踐就是資料檔案和事務日志檔案使用單獨的檔案系統。

OB程序和OBProxy程序運作的owner都是使用者admin,是以安裝前要求主控端先建立使用者admin,并且對admin使用者能使用的預設資源也需要修改。

主機的核心參數、防火牆、安全等參數也需要針對資料庫特點做相應調整。

資料庫自動化運維平台的本質就是通過一個或一組中心運維節點,ssh遠端到資料庫節點上執行特定的腳本。是以網絡上各個節點要彼此互通,都要運作sshd服務并監聽相同的端口(預設是22,此次安裝不支援修改ssh自定義端口),并且確定不會有防火牆阻攔這些節點間特定端口通信。

OCP和OB相關的監聽通信端口比較多,簡單起見,請直接關閉主機防火牆。生産網會在交換機級别提前開通相關端口通路權限。

3. 機器初始化

OceanBase 2.2試用版安裝包官網下載下傳位址:

https://oceanbase.alipay.com/download/resource

檔案大小1.9G左右,下載下傳檔案後建議用root或者有sudo權限的賬戶解壓縮并運作相關指令。

[root@xxx /root]
#tar zxvf oceanbase_trial.tar.gz
[root@xxx /root]
#ls -lrth oceanbase_trial/           

3.1 安裝檔案清單

OceanBase 2.x 試用版安裝體驗——OCP 2.31. 前言2. 安裝規劃3. 機器初始化4. 安裝OCP5. 常見問題和診斷方法5. 其他文章參考

以上檔案中,以.rpm結尾的是OB、OBProxy和obclient的安裝包,以install開頭以.sh結尾的檔案是自動化安裝的shell腳本,有興趣看具體安裝邏輯的就看這些腳本。

obcluster.conf是安裝過程中使用的配置檔案,需要修改裡面的資訊。

clonescripts目錄是用于主機初始化的,每個OB機器都建議使用這個目錄裡腳本做一次初始化。

[root@xxx /root]
#cd oceanbase_trial/clonescripts/

[root@xxx /root/oceanbase_trial/clonescripts]
#ls
auto_clone.sh  clone.conf  clone_remote.sh  clone.sh  db_ob_v1  pre_check.sh           

初始化是通過腳本clone.sh執行,會讀取配置檔案clone.conf的内容。

[root@xxx /root/oceanbase_trial/clonescripts]
#./clone.sh -h
Usage:  ./clone.sh [OPTIONS]

Options:
  -h, --help                   Print help and exit
  -a, --auto-config            Automatically generate clone config, use -d | --dry-run to get the auto config result
  -r, --role                   Set machine role, by default is ocp, could be set as ob or obbackup
  -d, --dry-run                Print dry run information
  -V, --version                Print version
  -p, --disk-part              Only part disk
  -u, --add-user               Only add user
  -c, --run-config             Only run OS parameters config
  -i, --install-docker         Only install docker
  -m, --install-rpms           Only install dependent rpms
  -t, --pre-check              Pre-check after clone           

如果機型是螞蟻機型,初始化時使用自動選型(-a)最快,如果是外部客戶機型,建議逐項初始化。

初始化的建議順序是:修改配置檔案、安裝rpm包、修改核心參數、建立使用者、磁盤分區、安裝docker(可選)。

3.2 修改配置檔案clone.conf

配置檔案裡配置是對應各個初始化任務的,如果不做那一項初始化任務,那參數就可以忽略。如不是所有的機器都需要安裝Docker,那麼docker相關參數就可以忽略。

3.2.1 機器角色(必選)

## machine role, value could be ob, ocp or obbackup
machineRole=ocp           
  • ocp : 這是OCP機器,會初始化/docker、/data/1、/data/log1、/home(可選) 目錄。
  • ob : 這是OB機器,不會初始化/docker目錄,會初始化/data/1、/data/log1、/home(可選) 目錄。
  • obbackup :這是備份機器,備份以後單獨介紹。

3.2.2 磁盤分區配置(可選)

分區配置主要是為了針對不同機型建立上面相應的目錄。客戶機型千差萬别,這裡的配置和方法不一定适用所有的機型。客戶可以針對本機磁盤特點自行分區建立相關目錄。

part disk mode, value either lvm or parted

diskPartMode=lvm           

設定分區方式,目前有兩種:

  • lvm :使用lvm相關指令,将多盤聚合到一個VG裡,然後劃分出多個LV,包含資料目錄、日志目錄、HOME目錄(可選,由參數決定)、Docker目錄(可選,由參數決定)。建議用lvm。
  • parted :使用parted指令,對一個大盤做劃分,分出多個裸裝置用于資料目錄、日志目錄、HOME目錄(可選,由參數決定)、Docker目錄(可選,由參數決定)。

關于目錄部分,lvm和parted都分别有對應的配置檔案部分定義各個目錄的大小。

這裡有幾個注意點:

  1. 日志目錄主要是存放事務日志,大小建議記憶體大小的3到4倍,尤其是要做性能測試的前提下。如果機器資源不好,隻是看看OB的功能,這個日志目錄大小可以是記憶體的2倍左右。
  2. 資料目錄和日志目錄強烈建議是不同的LV或者裸裝置,即不能共用同一個檔案系統。如果條件有限機器隻有一塊大盤并且還被作業系統用了,那就不能執行磁盤分區指令。需要手動建立相關目錄。

通常建議使用lvm分區友善些。

############ lvm settings begin ###################
## could be partition or device name
devArray=(sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl)           

這是設定多盤的正确方式。這些值取自指令pvs裡列出來未使用的PV。

3.2.3 作業系統類型

## os, option support centos, alios and redhat
os=alios           

作業系統類型,外部客戶機型一般選擇centos或redhat。

這個主要是為了安裝軟體包時選擇對應作業系統類型的軟體包用。不過安裝腳本并沒有包含全部的軟體封包件,還需要依賴客戶機的

yum install

指令。

是以建議客戶機器所有機器都配置好YUM源。如果沒有遠端的可以做一個本地的YUM源指向CD光牒鏡像檔案。

3.2.4 Home目錄

OCP、OB以及備份軟體等都會安裝在admin使用者下,使用admin的預設目錄/home/admin。尤其是OB的運作日志(observer.log和rootservice.log等)都會在/home/admin目錄下。是以/home分區的空間建議在100G以上。測試環境可以小一些,但是如果很少的話,要時刻留意空間耗盡。OB的運作日志預設日志級别都是INFO級别,日志增長非常快。

## if make home disk, value could be yes or no. If yes selected, the script will make home disk, if no selected, the script will not make home disk, in which case you already have home disk made and donot
 want re-make it again
makeHomeDisk=no           

如果本機的/home分區空間夠大,那就不需要初始化/home目錄;否則這裡設定為自動初始化/home目錄。此前/home/目錄的資料會備份到/tmp/下,但是并不會恢複回來。這個要注意!

3.3 安裝RPM包

先確定本機的yum源是可用的。

[root@xxx /root/oceanbase_trial/clonescripts]
#yum list           

執行初始化腳本

[root@xxx /root/oceanbase_trial/clonescripts]
#./clone.sh -m           

3.4 修改核心參數

主要是修改核心參數

/etc/sysctl.conf

[root@xxx /root/oceanbase_trial/clonescripts]
#./clone.sh -c           

3.5 建立使用者

建立使用者admin,并且uid設定為500(這是阿裡内部習慣)。後面docker内外目錄映射的時候沒有做uid映射轉換,是以預設要求内外目錄的owner都是admin并且uid是500.否則,可能面臨目錄權限問題。

客戶機如果已經存在admin使用者,會被删除掉。

[root@xxx /root/oceanbase_trial/clonescripts]
#./clone.sh -u           

3.6 磁盤分區

注意前面配置檔案裡要配置正确,否則可能破壞已有資料。

[root@xxx /root/oceanbase_trial/clonescripts]
#./clone.sh -p           

這個步驟不支援重跑。如果運作出錯後,可能是一個中間狀态,這個時候需要手動删除相關裸裝置或者LV/VG/PV等。

下面是初始化後的一個示例。

OceanBase 2.x 試用版安裝體驗——OCP 2.31. 前言2. 安裝規劃3. 機器初始化4. 安裝OCP5. 常見問題和診斷方法5. 其他文章參考

3.7 安裝docker軟體(可選)

這一步安裝docker相關軟體包并啟動docker服務,預設會使用目錄/docker。是以在這一步之前要確定磁盤已經分區并且/docker目錄空間足夠。

[root@xxx /root/oceanbase_trial/clonescripts]
#./clone.sh -i           

檢查安裝是否正确用指令

[root@xxx /root/oceanbase_trial/clonescripts]
#systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-01-18 15:54:48 CST; 2 weeks 2 days ago
     Docs: http://docs.docker.com
 Main PID: 13771 (dockerd)
   Memory: 2.4G
   CGroup: /system.slice/docker.service
           ├─13771 /usr/bin/dockerd -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock --selinux-enabled=false --log-opt max-size=1g --graph=/docker
           └─13791 docker-containerd --config /var/run/docker/containerd/containerd.toml

Jan 31 11:22:36 xxx dockerd[13771]: time="2020-01-31T11:22:36+08:00" level=info msg="shim docker-containerd-shim started" address="/containerd-shim/moby/28379e1464373c7249a7...ks" pid=71070
Jan 31 11:26:19 xxx dockerd[13771]: time="2020-01-31T11:26:19+08:00" level=error msg="stat cgroup 28379e1464373c7249a76c03162a7dd6e6d285618fd98346180e57dbfc271621" error=""/...ave 4 fields"
Jan 31 11:26:19 xxx dockerd[13771]: time="2020-01-31T11:26:19+08:00" level=info msg="shim reaped" id=28379e1464373c7249a76c03162a7dd6e6d285618fd98346180e57dbfc271621 module=...ainerd/tasks"
Jan 31 11:26:19 xxx dockerd[13771]: time="2020-01-31T11:26:19.780741127+08:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="...s.TaskDelete"
Jan 31 11:26:20 xxx dockerd[13771]: time="2020-01-31T11:26:20+08:00" level=error msg="stat cgroup fb959a57982a6312804c0ff765f345d8cf6f007b3d6d222d30eaa0573dceb44f" error=""/...ave 4 fields"
Jan 31 11:26:20 xxx dockerd[13771]: time="2020-01-31T11:26:20+08:00" level=info msg="shim reaped" id=fb959a57982a6312804c0ff765f345d8cf6f007b3d6d222d30eaa0573dceb44f module=...ainerd/tasks"
Jan 31 11:26:20 xxx dockerd[13771]: time="2020-01-31T11:26:20.997790335+08:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="...s.TaskDelete"
Jan 31 11:26:25 xxx dockerd[13771]: time="2020-01-31T11:26:25+08:00" level=error msg="stat cgroup 175364fb736988d24c05261497b9d4160188cd8d53e5b2f1b695e79cd4ac5d9c" error=""/...ave 4 fields"
Jan 31 11:26:25 xxx dockerd[13771]: time="2020-01-31T11:26:25+08:00" level=info msg="shim reaped" id=175364fb736988d24c05261497b9d4160188cd8d53e5b2f1b695e79cd4ac5d9c module=...ainerd/tasks"
Jan 31 11:26:25 xxx dockerd[13771]: time="2020-01-31T11:26:25.837715440+08:00" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/tasks/delete type="...s.TaskDelete"
Hint: Some lines were ellipsized, use -l to show in full.

[root@xxx /root/oceanbase_trial/clonescripts]
#docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES           

4. 安裝OCP

4.1 OCP安裝配置檔案

OCP安裝配置檔案是obcluster.conf在解壓縮後的目錄下。

配置檔案需要根據客戶機器資訊做少量修改。

4.1.1 OCP運作模式

##
SINGLE_OCP_MODE=TRUE
################################   根據環境必須修改 / MUST CHANGE ACCORDING ENVIRONMENT   ################################
############  填寫機器IP和root/admin密碼 / Edit Machine IP and Password Of root/admin  ############
ZONE1_RS_IP=11.xxx.xxx.5
OBSERVER01_ROOTPASS=root087005
OBSERVER01_ADMINPASS=admin087005
SINGLE_OCP_MODE指定是否單節點運作。如果不是,那就預設是三節點叢集形式運作。
ZONE1_RS_IP是單節點IP資訊,後面OBSERVER01是這個節點上的root和admin使用者的密碼。安裝完後可以再改密碼。           

如果是三節點運作,這裡配置就要指定三組這樣的資訊,以1,2,3區分。官網下載下傳的試用版隻支援單節點運作模式,這個對學習和POC驗證也足夠了。

4.1.2 容器資源

############  根據伺服器CPU、記憶體設定容器資源編排 / Allocate Container Resources According To Server  ############
OB_docker_cpus=18
OB_docker_memory=106G
OCP_docker_cpus=8
OCP_docker_memory=16G
OBProxy_docker_cpus=4
OBProxy_docker_memory=6G           

OCP由三個容器組成:OB容器、OCP容器和OBProxy容器。這裡分别指定每個容器需要的CPU和記憶體。如果主機資源充足,就多分一點資源。主機資源少的情況下,隻能調小這裡容器的資源。OB容器記憶體至少要保證32G,OCP容器記憶體不要少于16G,OBProxy容器也可以省略直接安裝RPM包。

上面配置的主機是32C128G。

4.1.3 容器鏡像資訊

這裡是要指定三個容器對應鏡像檔案的資訊:檔案名、REPO和TAG。

############  填寫OCP各元件容器的版本資訊 / Edit Docker Image, Repo And Tag of OCP Components  ############
# OB docker
docker_image_package=observer1478.tar.gz
OB_image_REPO=reg.docker.alibaba-inc.com/antman/ob-docker
OB_image_TAG=OB1478_20200102_2113
# OCP docker
ocp_docker_image_package=ocp233.tar.gz
OCP_image_REPO=reg.docker.alibaba-inc.com/antman/ocp-all-in-one
OCP_image_TAG=OCP233_20200102_2122
# OBPROXY docker
obproxy_docker_image_package=obproxy156.tar.gz
obproxy_image_REPO=reg.docker.alibaba-inc.com/antman/obproxy
obproxy_image_TAG=OBP156_20200102_2110           

如果是官網下載下傳的安裝檔案,這部份配置資訊是不用修改的。

但是如果後續更新了鏡像檔案,這裡資訊可能就需要修改。而要檢視鏡像檔案的REPO和TAG資訊,可以先将鏡像加載(docker load),然後檢視鏡像資訊(docker images)。

[root@xxx /root/oceanbase_trial]
#ls *.gz
obproxy156.tar.gz  observer1478.tar.gz  ocp233.tar.gz

[root@xxx /root/oceanbase_trial]
#for img in `ls *.gz`;do echo $img ;docker load < $img; done
obproxy156.tar.gz
Loaded image: reg.docker.alibaba-inc.com/antman/obproxy:OBP156_20200102_2110
observer1478.tar.gz
Loaded image: reg.docker.alibaba-inc.com/antman/ob-docker:OB1478_20200102_2113
ocp233.tar.gz
Loaded image: reg.docker.alibaba-inc.com/antman/ocp-all-in-one:OCP233_20200102_2122

[root@xxx /root/oceanbase_trial]
#docker images
REPOSITORY                                         TAG                    IMAGE ID            CREATED             SIZE
reg.docker.alibaba-inc.com/antman/ocp-all-in-one   OCP233_20200102_2122   967f985769d2        4 weeks ago         1.8GB
reg.docker.alibaba-inc.com/antman/ob-docker        OB1478_20200102_2113   5351e5990e0f        4 weeks ago         780MB
reg.docker.alibaba-inc.com/antman/obproxy          OBP156_20200102_2110   c4076538faa1        4 weeks ago         282MB           

後面其他配置就不用修改了。

4.2 開始安裝OCP

4.2.1 安裝指令

安裝會分為好幾步,檢視幫助文檔可以看到步驟。關于安裝的步驟前面已經多次提到這裡就不介紹了。

[root@xxxs /root/oceanbase_trial]
#./install.sh -h

Usage:  ./install.sh [OPTIONS]

Options:
  -h, --help                   Print help and exit
  -d, --debug                  Print debug information
  -V, --version                Print version
  -i, --install-steps string   For example 1,3-5,7-
  -c, --clear-steps string     For example 1,3-5,7-
  -f, --config-file string     Read in a config file
  -l, --load-balance           Load balance mode

Steps:
    1. ssh authorization
    2. install load balancer
    3. install ob server
    4. init ocp metadb
    5. install temp OCP
    6. install obproxy
    7. install OCP
    8. POSTCHECK           

注意,安裝參數是-i,清理參數是-c。都可以連續安裝或清理,或者單步安裝或清理。

每個指令後都會有相應的日志檔案供檢視進度。

4.2.2 自動連續安裝

[root@xxx /root/oceanbase_trial]
#./install.sh -i 1-
run install.sh with DEBUG=FALSE, INSTALL_STEPS=1 2 3 4 5 6 7 8 CLEAR_STEPS= CONFIG_FILE=/root/oceanbase_trial/obcluster.conf
[2020-02-04 17:25:26.261595] INFO [start antman API service]
LB_MODE=none
[2020-02-04 17:25:26.353919] INFO [step1: making ssh authorization, logfile: /root/oceanbase_trial/logs/ssh_auth.log]
[2020-02-04 17:25:26.832011] INFO [step1: ssh authorization done]
[2020-02-04 17:25:26.847573] INFO [step2: no action need when LB_MODE=none]
[2020-02-04 17:25:26.850503] INFO [step3: check whether OBSERVER port 2881,2882 are in use or not on 11.xxx.xxx.5]
[2020-02-04 17:25:27.197266] INFO [step3: OBSERVER port 2881,2882 are idle on 11.xxx.xxx.5]
[2020-02-04 17:25:27.199657] INFO [step3: installing ob cluster, logfile: /root/oceanbase_trial/logs/install_ob.log]
[2020-02-04 17:30:26.007264] INFO [step3: installation of ob cluster done]
[2020-02-04 17:30:26.009985] INFO [step4: initializing ocp metadb, logfile: /root/oceanbase_trial/logs/init_metadb.log]
[2020-02-04 17:30:26.941684] INFO [step4: initialization of ocp metadb done]
[2020-02-04 17:30:26.944131] INFO [step5: check whether OCP port 8080 is in use or not on 11.xxx.xxx.5]
[2020-02-04 17:30:27.308464] INFO [step5: OCP port 8080 is idle on 11.xxx.xxx.5]
[2020-02-04 17:30:27.311137] INFO [step5: installing temporary ocp, logfile: /root/oceanbase_trial/logs/install_tmp_ocp.log]
[2020-02-04 17:34:36.886177] INFO [step5: installation of temporary ocp done]
[2020-02-04 17:34:36.889325] INFO [step6: check whether OBPROXY port 2883 is in use or not on 11.xxx.xxx.5]
[2020-02-04 17:34:37.084248] INFO [step6: OBPROXY port 2883 is idle on 11.xxx.xxx.5]
[2020-02-04 17:34:37.087163] INFO [step6: installing obproxy, logfile: /root/oceanbase_trial/logs/install_obproxy.log]
[2020-02-04 17:35:09.314143] INFO [step6: installation of obproxy done]
[2020-02-04 17:35:09.316600] INFO [step7: installing ocp, logfile: /root/oceanbase_trial/logs/install_ocp.log]
[2020-02-04 17:36:19.347975] INFO [step7: installation of ocp done]
[2020-02-04 17:36:19.350974] INFO [step8: post-checking service, logfile: /root/oceanbase_trial/logs/post_check_service.log]
[2020-02-04 17:36:27.431920] INFO [step8: post check done]f           

自動化連續清理:

[root@xxx /root/oceanbase_trial]
#./install.sh -c 1-
run install.sh with DEBUG=FALSE, INSTALL_STEPS= CLEAR_STEPS=8 7 6 5 4 3 2 1 CONFIG_FILE=/root/oceanbase_trial/obcluster.conf
[2020-02-04 17:24:41.127969] INFO [start antman API service]
LB_MODE=none
[2020-02-04 17:24:41.183515] INFO [clear_step8: no need to clear for step network post-check]
[2020-02-04 17:24:41.186271] INFO [clear_step7: uninstalling ocp and remove docker, logfile: /root/oceanbase_trial/logs/uninstall_ocp.log]
[2020-02-04 17:24:42.034660] INFO [clear_step7: uninstallation of ocp done]
[2020-02-04 17:24:42.036854] INFO [clear_step6: uninstalling obproxy and remove docker, logfile: /root/oceanbase_trial/logs/uninstall_obproxy.log]
[2020-02-04 17:24:42.886604] INFO [clear_step6: uninstallation of obproxy done]
[2020-02-04 17:24:42.888851] INFO [clear_step5: uninstalling ocp and remove docker, logfile: /root/oceanbase_trial/logs/uninstall_tmp_ocp.log]
[2020-02-04 17:24:43.738130] INFO [clear_step5: uninstallation of temporary ocp done]
[2020-02-04 17:24:43.740634] INFO [clear_step4: drop ocp meta db/tenant/user/resource, logfile: /root/oceanbase_trial/logs/uninit_metadb.log]
[2020-02-04 17:24:43.813946] INFO [clear_step4: uninit of metadb done]
[2020-02-04 17:24:43.816483] INFO [clear_step3: uninstalling OB server and remove docker, logfile: /root/oceanbase_trial/logs/uninstall_ob.log]
[2020-02-04 17:24:44.832929] INFO [clear_step3: uninstallation of ob done]
[2020-02-04 17:24:44.835425] INFO [clear_step1: no need to clear for step ssh authorization]           

4.2.3 單步執行或清理(可選)

比如說第3步重裝一下。需要注意的是第3步如果是重裝,建議先清理第3步及其以後所有步驟。

[root@xxx /root/oceanbase_trial]
#./install.sh -c 3- -i 3           

理論上每一步都可以重新安裝。但是不同步驟之間可能會有一些依賴關系。這裡要關注的是重新安裝前後是否有配置資訊變更。如果配置檔案變更了,中繼資料庫那一步肯定是要重新執行的。

4.2.4 安裝後檢查

[root@xxx /root/oceanbase_trial]
#docker ps
CONTAINER ID        IMAGE                                                                   COMMAND                  CREATED             STATUS              PORTS               NAMES
04d585acbeed        reg.docker.alibaba-inc.com/antman/ocp-all-in-one:OCP233_20200102_2122   "/bin/sh -c '/usr/bi…"   12 minutes ago      Up 12 minutes                           ocp
17097103b74b        reg.docker.alibaba-inc.com/antman/obproxy:OBP156_20200102_2110          "sh start_obproxy.sh"    13 minutes ago      Up 13 minutes                           obproxy
dca537d692ea        reg.docker.alibaba-inc.com/antman/ob-docker:OB1478_20200102_2113        "/usr/bin/supervisor…"   22 minutes ago      Up 22 minutes                           META_OB_ZONE_1           

打卡浏覽器,通路

http://11.xxx.87.5:8080

,能出現登入界面基本安裝就成功了。

OceanBase 2.x 試用版安裝體驗——OCP 2.31. 前言2. 安裝規劃3. 機器初始化4. 安裝OCP5. 常見問題和診斷方法5. 其他文章參考

5. 常見問題和診斷方法

5.1 常用問題診斷方法

5.2.1 檢視對應日志

每個安裝步驟都有相應的日志檔案,首先需要從日志檔案裡擷取資訊。

[root@xxx /root/oceanbase_trial]
#tail /root/oceanbase_trial/logs/install_tmp_ocp.log
[2020-02-04 17:20:40.305403] INFO [waiting ocp to be ready on host 11.xxx.xxx.5 for 7 Minites]
[2020-02-04 17:21:10.313486] INFO [waiting ocp to be ready on host 11.xxx.xxx.5 for 8 Minites]
[2020-02-04 17:21:40.321695] INFO [waiting ocp to be ready on host 11.xxx.xxx.5 for 8 Minites]
[2020-02-04 17:22:10.330312] INFO [waiting ocp to be ready on host 11.xxx.xxx.5 for 9 Minites]
[2020-02-04 17:22:40.338612] INFO [waiting ocp to be ready on host 11.xxx.xxx.5 for 9 Minites]
[2020-02-04 17:23:10.346736] INFO [waiting ocp to be ready on host 11.xxx.xxx.5 for 10 Minites]
[2020-02-04 17:23:40.355044] ERROR [ANTMAN-503: timeout( 10 Minites) on waiting ocp ready, URL=http://11.xxx.xxx.5:8080/services?Action=GetObProxyConfig&User_ID=admin&UID=alibaba]
[2020-02-04 17:23:40.360255] WARN [error ERROR exists in /root/oceanbase_trial/logs/install_tmp_ocp.log]
[2020-02-04 17:23:40.817147] INFO [install_ocp.sh finished and reg.docker.alibaba-inc.com/antman/ocp-all-in-one:OCP233_20200102_2122 started on 11.xxx.xxx.5]
[2020-02-04 17:23:40.819777] ERROR [ANTMAN-308: tmp_ocp docker on 11.xxx.xxx.5 is NOT started]           

5.2.2 檢視安裝腳本(可選)

根據日志檔案裡的資訊檢視安裝腳本裡的邏輯,能進一步看到報錯的邏輯。安裝腳本并不複雜。

5.2.3 檢視容器運作日志

[root@xxx /root/oceanbase_trial]
#docker logs ocp           

從日志裡尋找線索。

5.2.4 重裝某一步或者幾步

根據上面線索分析問題可能跟哪幾步有關系,然後把相應的步驟都清理然後重新執行一遍。

[root@xxx /root/oceanbase_trial]
#./install.sh -c 3- -i 3           

5.2 常見問題

通常問題會出在資源方面、環境方面(監聽程序、mysql用戶端)等。

5.2.1

waiting on observer ready on

逾時失敗

在OB容器安裝一步中,會啟動一個observer程序,啟動前會有個IO性能測試過程,以及啟動過程中有個OB 初始化(boostrap)操作,是以這一步會需要5-10分鐘。安裝主程式通過mysql用戶端使用賬戶名和密碼循環連接配接進去檢測程序是否準備好。

如果看到這個相關的逾時錯誤,首先看看OB容器是否正常。observer的監聽端口是2881和2882 是否存活。如果容器存在但是狀态是退出的,手動啟動一次。

[root@xxx /root/oceanbase_trial]
#docker ps -a
CONTAINER ID        IMAGE                                                                   COMMAND                  CREATED              STATUS                          PORTS               NAMES

78c80e4ad822        reg.docker.alibaba-inc.com/antman/ocp-all-in-one:OCP233_20200102_2122   "/bin/sh -c '/usr/bi…"   About a minute ago   Exited (2) About a minute ago                       ocp

4eaf2d600d31        reg.docker.alibaba-inc.com/antman/ob-docker:OB1478_20200102_2113        "/usr/bin/supervisor…"   6 minutes ago        Up 6 minutes                                        META_OB_ZONE_1

[root@xxx /root/oceanbase_trial]
#netstat -ntlp |grep 2881
[root@xxx /root/oceanbase_trial]
#which mysql           

如果是正常的,那檢查用戶端的mysql用戶端運作環境是否被破壞。

如果observer程序異常/監聽不正常,則看看是不是資源問題。如果OB容器給的記憶體太小,是有可能導緻observer程序起不來。

具體确認還需要進入容器内部檢視observer程序的運作日志。

5.2.2

waiting ocp to be ready on host

在temp OCP安裝一步,安裝主程式會頻繁去檢測OCP容器的API是否準備好。探測方法如下:

#docker ps -a

-- 如果容器ocp存在但是狀态是退出的,手動啟動一次
[root@xxx /root/oceanbase_trial]
#docker start ocp

[root@xxx /root/oceanbase_trial]
#curl -s "http://11.xxx.87.5:8080/services?Action=GetObProxyConfig&User_ID=admin&UID=alibaba"
{"Code":200,"Cost":4,"Data":{"ObRootServiceInfoUrlList":[{"ObRegion":"obcluster","ObRootServiceInfoUrl":"http://11.xxx.87.5:8080/services?Action=ObRootServiceInfo&User_ID=admin&UID=alibaba&ObRegion=obcluster"}],"ObProxyBinUrl":"http://11.xxx.87.5:8080/client?Action=GetObProxy&User_ID=admin&UID=alibaba","Version":"7a7b4f210f02e4c9549fc9c6085e4299","ObProxyDatabaseInfo":{"MetaDataBase":"http://11.xxx.87.5:8080/services?Action=ObRootServiceInfo&User_ID=admin&UID=alibaba&ObRegion=obdv1","DataBase":"obproxy","User":"root@obproxy","Password":"**********"}},"Message":"successful","Success":true,"Trace":"11.xxx.87.5:11.xxx.87.5:1580808939674"}           

有結果輸出就表示API正常。否則最終會報等待逾時。

分析這個問題的方法就是檢視目前tcp端口監聽狀況。看是否是老的程序或者其他什麼程序占用了OCP要用的端口(8001和8080)。

5. 其他文章參考