暂无图片
暂无图片
10
暂无图片
暂无图片
暂无图片

通过命令行部署 OBProxy

OceanBase 2022-12-03
581

OBProxy 可以将用户发起的数据访问请求转发到正确的 OBServer 上,转发到后端 OBServer 的请求返回数据时,依然要通过 OBProxy 回发给客户端。本节主要介绍通过使用 RPM 包安装 OBProxy。

注意

  • OBProxy 在任何一个机器上部署后,通过向外暴露一个 ip:port 来提供 OceanBase 的代理服务。用户可以像访问 MySQL 数据库一样通过该 ip:port 即可访问 OceanBase 数据库,一般推荐部署在 OBServer 节点上。
  • 建议一台机器上只部署一个 OBProxy 服务,并且使用约定的 2883 端口。当同一台机器上部署多个OBProxy 服务时,需要指定不同端口和不同的配置文件路径予以区分,端口可以自定义为 3306 或 1521、或者其他端口。

安装 OBProxy

  1. 安装 OBProxy RPM 包。

    其中 $rpm_dir 表示存放 RPM 包的目录,$rpm_name 表示 RPM 包的名称。

    [root@xxx /]# cd $rpm_dir
    [root@xxx $rpm_dir]# rpm -ivh $rpm_name
    

    说明

    obproxy 安装目录在 /opt/taobao/install 下。

    示例如下:

    [root@xxx admin]# rpm -ivh obproxy-3.2.3-20220310201314.el7.x86_64.rpm
    Preparing...                          ################################# [100%]
    Updating / installing...
       1:obproxy-3.2.3-20220310201314.el7 ################################# [100%]
    
  2. (可选)创建到 obproxy 的软链接。

    说明

    创建到 obproxy 的软链接可以隐藏掉版本信息,方便后期操作。

    obproxy 安装目录在 /opt/taobao/install 下。obproxy 进程 home 目录是 /opt/taobao/install/obproxy,这是一个软链接,实际指向相应的 obproxy 版本软件目录。

    [root@xxx admin]# su - admin
    -bash-4.2$ cd /opt/taobao/install
    -bash-4.2$ sudo ln -s obproxy-3.2.3 obproxy
    -bash-4.2$ ll
    total 8
    drwxr-xr-x 9 root  root  4096 Mar 22 10:24 ajdk-8.3.6-b129
    lrwxrwxrwx 1 root  root    13 Apr 28 10:25 obproxy -> obproxy-3.2.3
    drwxr-xr-x 4 admin admin 4096 Apr 27 17:56 obproxy-3.2.3
    
    --把 obproxy 的所有者和所属组都改为 admin。
    [root@xxx install]# chown -R admin:admin obproxy
    [root@xxx install]# ll
    total 8
    drwxr-xr-x 9 root  root   4096 Mar 22 10:24 ajdk-8.3.6-b129
    lrwxrwxrwx 1 admin admin    13 Apr 28 10:25 obproxy -> obproxy-3.2.3
    drwxr-xr-x 4 admin admin  4096 Apr 27 17:56 obproxy-3.2.3
    
  3. 建立 obproxy 进程运行日志目录。

    obproxy 进程的运行日志目录通过软链接指向 /home/admin/logs/obproxy/log

    [root@xxx admin]# su - admin
    -bash-4.2$ mkdir -p /home/admin/logs/obproxy/log
    -bash-4.2$ for t in {log};do ln -s /opt/taobao/install/obproxy/$t /home/admin/logs/obproxy/log/$t; done
    -bash-4.2$ tree /opt/taobao/install/obproxy
    /opt/taobao/install/obproxy
    |-- bin
    |   |-- obp_xflush.py
    |   |-- obproxy
    |   |-- obproxyd.sh
    |   `-- unzip.py
    |-- log -> /home/admin/logs/obproxy/log
    |-- minidump -> /home/admin/logs/obproxy/minidump
    |-- start_obproxy.sh
    `-- tools
        |-- dump_syms
        |-- log4cplus.conf
        |-- minidump.sh
        |-- minidump_stackwalk
        `-- obproxy.sym
    
    3 directories, 11 files
    

初始化 OBProxy

初始化 OBProxy 账户

OBProxy 需要跟后端 OBServer 节点保持通信。所以需要提前在 OceanBase 集群的 sys 租户下为 OBProxy 创建连接用户(proxyro)和密码。后续在启动 OBProxy 时可通过设置 proxy 启动参数的方式来告知 proxy。

说明

proxyro 用户是 OBProxy 访问 OceanBase 集群的用户。一个 OceanBase 集群对应一个 proxyro 账号。

示例如下:

创建 proxyro 用户并授予 SELECT 权限。

$ obclient -h127.1 -uroot@sys -P2881 -p -c -A
Enter password: 

obclient> CREATE USER proxyro IDENTIFIED BY '**1***';
Query OK, 0 rows affected

obclient> GRANT SELECT ON *.* TO proxyro;
Query OK, 0 rows affected

obclient> SHOW GRANTS FOR proxyro;
+----------------------------------+
| Grants for proxyro@%             |
+----------------------------------+
| GRANT SELECT ON *.* TO 'proxyro' |
+----------------------------------+
1 row in set

启动 OBProxy

注意

启动 OBProxy 时,请在 admin 用户下并在 OBProxy 软件的 home 目录。其他用户或者其他目录下启动都可能带来问题。

  1. OBProxy 启动时需要知道 OceanBase 集群在哪里,这是通过参数 rootservice_list 指定。

    下面以三副本 OceanBase 集群为例。

    [root@xxx admin]# su - admin
    -bash-4.2$ cd /opt/taobao/install/obproxy && bin/obproxy -r "10.10.10.1:2881;10.10.10.2:2881;10.10.10.3:2881" -p 2883 -o "observer_sys_password=$sha1_value,enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obdemo
    

    说明

    • $sha1_value 应根据实际设置密码替换。设置 proxy 启动参数方式,设置的密码是 sha1 后的值,而不是原始值。例如:proxyro 用户设置的密码是 123456,则需要设置 observer_sys_password 的值是 7c4a8d09ca3762af61e59520943dc26494f8941b
    • 示例 IP 做了脱敏处理,这不是安装需求。在启动时应根据自己机器真实 IP 填写。

    参数解释:

    参数说明
    -r指定 OBServer 服务器 IP 和端口。
    -p指定服务端口号,一般指定为 2883
    -c指定集群名称。
    -o指定硬件或者内核参数配置。
  2. (可选)如果前面模拟了 OCP Web 服务,OBProxy 启动时也可以指定 API 地址。

    -bash-4.2$ cd /opt/taobao/install/obproxy && bin/obproxy -p 2883 -c obdemo -o "obproxy_config_server_url=http://10.10.10.1:8088/services?Action=GetObProxyConfig&User_ID=alibaba-inc&uid=ocpmaster,enable_cluster_checkout=false,enable_strict_kernel_release=false,enable_metadb_used=false"
    
  3. 启动之后,可以检查进程是否存在。

    -bash-4.2$ ps -ef|grep obproxy
    
  4. 停止 OBProxy 进程的方法是直接 kill。

    kill -9 `pidof obproxy`
    
  5. 再次启动 OBProxy 进程时就不需要指定那么参数。因为参数已经写到参数文件里。

    cd /opt/taobao/install/obproxy && bin/obproxy
    
  6. OBProxy 的运行日志在 /opt/taobao/install/obproxy/log 下,也就是 /home/admin/logs/obproxy/log 下。

    [root@xxx obproxy]# ll log
    lrwxrwxrwx 1 admin admin 28 Apr 27 17:56 log -> /home/admin/logs/obproxy/log
    

OceanBase 数据库连接示例

通过 OBProxy 连接时,用户名的格式需要包含用户名、租户名和集群名。格式为: 用户名@租户名#集群名 或 集群名:租户名:用户名

$ obclient -h10.10.10.1 -uroot@sys#obdemo -P2883 -p -c -A oceanbase 
Enter password:

$ obclient -h10.10.10.1 -uobdemo:sys:root -P2883 -p -c -A oceanbase 
Enter password:

调整 OBProxy 参数

下面是 obproxy 的一些参数配置用于减少运行日志量或降低 CPU 消耗,请根据实际情况修改。

obclient> ALTER PROXYCONFIG SET slow_proxy_process_time_threshold='1000ms';
Query OK, 0 rows affected

obclient> ALTER PROXYCONFIG SET xflush_log_level=ERROR;
Query OK, 0 rows affected

obclient> ALTER PROXYCONFIG SET syslog_level=WARN;
Query OK, 0 rows affected

obclient> ALTER PROXYCONFIG SET enable_compression_protocol=false;
Query OK, 0 rows affected

obclient> SHOW PROXYCONFIG LIKE '%compress%'\G
*************************** 1. row ***************************
         name: enable_compression_protocol
        value: False
         info: if enabled, proxy will use compression protocol with server
  need_reboot: false
visible_level: USER
*************************** 2. row ***************************
         name: enable_syslog_file_compress
        value: False
         info: Whether to enable archive log compression
  need_reboot: false
visible_level: SYS
2 rows in set
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论