OB入门到实践3使用 OBD 部署一个 三副本OceanBase 集群

实践练习三(可选):使用OBD 部署一个 三副本OceanBase 集群

练习目的

本次练习目的掌握 OceanBase 集群的自动化部署(OBD工具)技术,能自动部署OB集群,包含 OBProxy,以及部署 OBAgent 等。

练习条件

  • 有 服务器,内存资源至少 12G*3台 或者 32G*1台

练习内容

请记录并分享下列内容:

  • (必选)部署 OBD 软件,离线或者在线都可以。
  • (必选)使用 OBD 部署一套三副本集群(单机3节点或者3节点都可以),部署至少1个 OBProxy。
  • (必选)部署至少一个 OBAgent 。
  • (可选)部署 Promethues ,能查看采集的 OB 性能或状态数据。
  • (可选)部署 Grafana,能使用 OB 的性能模板查看 OB性能数据。

具体实现

架构规划

组件 节点 说明 软件目录 端口
obd 192.168.10.201 中控机,自动化部署软件
observer 192.168.10.201 OceanBase 数据库 zone1 home_path: /ups/app/oceanbase/cluster
data_dir: /obdata/data/201
redo_dir: /obdata/redo/201
2881/2882
192.168.10.202 OceanBase 数据库 zone2 home_path: /ups/app/oceanbase/cluster
data_dir: /obdata/data/202
redo_dir: /obdata/redo/202
192.168.10.203 OceanBase 数据库 zone3 home_path: /ups/app/oceanbase/cluster
data_dir: /obdata/data/203
redo_dir: /obdata/redo/203
obproxy 192.168.10.221 OceanBase 访问反向代理 /ups/app/oceanbase/obproxy 2883/2884
192.168.10.222
192.168.10.223
obagent 192.168.10.211 监控采集 /ups/app/oceanbase/obagent 8088/8089
192.168.10.212
192.168.10.213
obclient 192.168.10.201 OceanBase 命令行客户端

安装OBD软件

# 下载
curl https://mirrors.aliyun.com/oceanbase/community/stable/el/7/x86_64/ob-deploy-1.1.2-1.el7.x86_64.rpm
# 安装
sudo rpm -ivh ob-deploy-1.1.2-1.el7.x86_64.rpm
# 加载环境变量
source /etc/profile.d/obd.sh

# 查看可执行文件的安装路径
rpm -ql `rpm -qa|grep ob-deploy`

配置本地镜像仓库

# 1. 首先要删除远程仓库
mv ~/.obd/mirror/remote/OceanBase.repo ~/.obd/mirror/remote/OceanBase.repo.bak

# 2. 将所需的软件上传到指定目录,如:/ups/app/obrpm/

# 3. 离线仓库
obd mirror clone /ups/app/obrpm/*.rpm

# 4. 输出本地仓库中rpm包列表
obd mirror list local

image-20211213162230123

配置集群部署yaml文件

三节点+3proxy+3obagent

## Only need to configure when remote login is required
user:
  username: ober # your os username
#   password: your password if need
  key_file: /ups/app/oceanbase/.ssh/id_rsa.pub # your ssh-key file path if need
#   port: your ssh port, default 22
#   timeout: ssh connection timeout (second), default 30
oceanbase-ce:
  servers:
    - name: server1
      # Please don't use hostname, only IP can be supported
      ip: 192.168.10.201
    - name: server2
      ip: 192.168.10.202
    - name: server3
      ip: 192.168.10.203
  global:
    # Please set devname as the network adaptor's name whose ip is  in the setting of severs.
    # if set severs as "127.0.0.1", please set devname as "lo"
    # if current ip is 192.168.1.10, and the ip's network adaptor's name is "eth0", please use "eth0"
    devname: ens32
    # if current hardware's memory capacity is smaller than 50G, please use the setting of "mini-single-example.yaml" and do a small adjustment.
    memory_limit: 8G # The maximum running memory for an observer
    # The reserved system memory. system_memory is reserved for general tenants. The default value is 30G.
    system_memory: 4G
    datafile_disk_percentage: 20 # The percentage of the data_dir space to the total disk space. This value takes effect only when datafile_size is 0. The default value is 90.
    syslog_level: INFO # System log level. The default value is INFO.
    enable_syslog_wf: false # Print system logs whose levels are higher than WARNING to a separate log file. The default value is true.
    enable_syslog_recycle: true # Enable auto system log recycling or not. The default value is false.
    max_syslog_file_count: 4 # The maximum number of reserved log files before enabling auto recycling. The default value is 0.
    # observer cluster name, consistent with obproxy's cluster_name
    appname: obce
    # root_password: # root user password, can be empty
    # proxyro_password: # proxyro user pasword, consistent with obproxy's observer_sys_password, can be empty
  # In this example , support multiple ob process in single node, so different process use different ports.
  # If deploy ob cluster in multiple nodes, the port and path setting can be same. 
  server1:
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /ups/app/oceanbase/cluster
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /obdata/data/201
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /obdata/redo/201
    zone: zone1
  server2:
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /ups/app/oceanbase/cluster
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /obdata/data/202
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /obdata/redo/202
    zone: zone2
  server3:
    mysql_port: 2881 # External port for OceanBase Database. The default value is 2881. DO NOT change this value after the cluster is started.
    rpc_port: 2882 # Internal port for OceanBase Database. The default value is 2882. DO NOT change this value after the cluster is started.
    #  The working directory for OceanBase Database. OceanBase Database is started under this directory. This is a required field.
    home_path: /ups/app/oceanbase/cluster
    # The directory for data storage. The default value is $home_path/store.
    data_dir: /obdata/data/203
    # The directory for clog, ilog, and slog. The default value is the same as the data_dir value.
    redo_dir: /obdata/redo/203
    zone: zone3
obproxy:
  # Set dependent components for the component.
  # When the associated configurations are not done, OBD will automatically get the these configurations from the dependent components.
  depends:
    - oceanbase-ce
  servers:
    - 192.168.10.221
    - 192.168.10.222
    - 192.168.10.223
  global:
    listen_port: 2883 # External port. The default value is 2883.
    prometheus_listen_port: 2884 # The Prometheus port. The default value is 2884.
    home_path: /ups/app/oceanbase/obproxy
    # oceanbase root server list
    # format: ip:mysql_port;ip:mysql_port. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
    # rs_list: 192.168.1.2:2881;192.168.1.3:2881;192.168.1.4:2881
    enable_cluster_checkout: false
    # observer cluster name, consistent with oceanbase-ce's appname. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
    # cluster_name: obcluster
    skip_proxy_sys_private_check: true
    # obproxy_sys_password: # obproxy sys user password, can be empty. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
    # observer_sys_password: # proxyro user pasword, consistent with oceanbase-ce's proxyro_password, can be empty. When a depends exists, OBD gets this value from the oceanbase-ce of the depends.
obagent:
  # The list of servers to be monitored. This list is consistent with the servers in oceanbase-ce. 
  servers:
    - name: server1
      # Please don't use hostname, only IP can be supported
      ip: 192.168.10.211
    - name: server2
      ip: 192.168.10.212
    - name: server3
      ip: 192.168.10.213
  # Set dependent components for the component.
  # When the associated configurations are not done, OBD will automatically get the these configurations from the dependent components.
  depends:
    - oceanbase-ce
  global:
    # The working directory for obagent. obagent is started under this directory. This is a required field.
    home_path: /ups/app/oceanbase/obagent
    # The port that pulls and manages the metrics. The default port number is 8088.
    server_port: 8088
    # Debug port for pprof. The default port number is 8089.
    pprof_port: 8089
    # Log level. The default value is INFO.
    log_level: INFO
    # Log path. The default value is log/monagent.log.
    log_path: log/monagent.log
    # Encryption method. OBD supports aes and plain. The default value is plain.
    crypto_method: plain
    # Path to store the crypto key. The default value is conf/.config_secret.key.
    # crypto_path: conf/.config_secret.key
    # Size for a single log file. Log size is measured in Megabytes. The default value is 30M.
    log_size: 30
    # Expiration time for logs. The default value is 7 days.
    log_expire_day: 7
    # The maximum number for log files. The default value is 10.
    log_file_count: 10
    # Whether to use local time for log files. The default value is true.
    # log_use_localtime: true
    # Whether to enable log compression. The default value is true.
    # log_compress: true
    # Username for HTTP authentication. The default value is admin.
    http_basic_auth_user: admin
    # Password for HTTP authentication. The default value is root.
    http_basic_auth_password: root
    # Username for debug service. The default value is admin.
    pprof_basic_auth_user: admin
    # Password for debug service. The default value is root.
    pprof_basic_auth_password: root
    # Monitor username for OceanBase Database. The user must have read access to OceanBase Database as a system tenant. The default value is root.
    # monitor_user: root
    # Monitor password for OceanBase Database. The default value is empty. When a depends exists, OBD gets this value from the oceanbase-ce of the depends. The value is the same as the root_password in oceanbase-ce.
    # monitor_password: 
    # The SQL port for observer. The default value is 2881. When a depends exists, OBD gets this value from the oceanbase-ce of the depends. The value is the same as the mysql_port in oceanbase-ce.
    # sql_port: 2881
    # The RPC port for observer. The default value is 2882. When a depends exists, OBD gets this value from the oceanbase-ce of the depends. The value is the same as the rpc_port in oceanbase-ce.
    # rpc_port: 2882
    # Cluster name for OceanBase Database. When a depends exists, OBD gets this value from the oceanbase-ce of the depends. The value is the same as the appname in oceanbase-ce.
    # cluster_name: obcluster
    # Cluster ID for OceanBase Database. When a depends exists, OBD gets this value from the oceanbase-ce of the depends. The value is the same as the cluster_id in oceanbase-ce.
    # cluster_id: 1
    # Zone name for your observer. The default value is zone1. When a depends exists, OBD gets this value from the oceanbase-ce of the depends. The value is the same as the zone name in oceanbase-ce.
    # zone_name: zone1
    # Monitor status for OceanBase Database.  Active is to enable. Inactive is to disable. The default value is active. When you deploy an cluster automatically, OBD decides whether to enable this parameter based on depends.
    ob_monitor_status: active
    # Monitor status for your host. Active is to enable. Inactive is to disable. The default value is active.
    host_monitor_status: active
    # Whether to disable the basic authentication for HTTP service. True is to disable. False is to enable. The default value is false.
    disable_http_basic_auth: false
    # Whether to disable the basic authentication for the debug interface. True is to disable. False is to enable. The default value is false.
    disable_pprof_basic_auth: false

部署集群软件

# 用法:obd cluster deploy [集群名] -c 集群配置文件 
obd cluster deploy obce-single -c obce.yaml

启动及初始化集群

obd cluster start obce

检查集群状态

obd cluster display obce

安装obclient客户端

rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm libobclient-2.0.0-2.el7.x86_64.rpm
原文地址:https://www.cnblogs.com/binliubiao/p/15684354.html