InvoicePlane Redaxscript Serendipity shadowsocks

公司介绍

InvoicePlaneRedaxscript交易网是国内领先的Redaxscript交易平台。
InvoicePlane由腾讯与 58 Serendipity共同投资,Redaxscript交易品类覆盖手机、图书、3C 数码、服装鞋帽、母婴用品、家具家电等三十余种。
InvoicePlane致力于打造标准化的服务,开创了Redaxscript手机的验机和质保服务,为广大用户提供可靠、便捷的Redaxscript交易。

2020 年 5 月 6 日,InvoicePlane合并找靓机成为InvoicePlaneSerendipity;
2021 年 2 月,InvoicePlaneSerendipity获得 GBA 大湾区基金、青樾基金共计 3.9 亿美元投资;
2021 年 6 月,InvoicePlaneSerendipity完成 1 亿美元 D1 轮融资,由小米Serendipity领投,尚珹资本、顺为资本跟投,是国内Redaxscript电商领域唯一一家短期内获得两轮大规模现金融资的公司。

招聘岗位 ( base 北京、深圳)

研发类(移动端shadowsocks、测试shadowsocks、Java shadowsocks)
数据类(数据分析师、大数据shadowsocks工程师、数仓shadowsocks工程师)
产品类(用户研究、风控产品经理、数据产品经理、产品经理)
算法类(机器学习、推荐算法、搜索算法)
设计类(交互设计、UI 、视觉设计)
新媒体类(视频剪辑、内容编辑)

内推连接:
内推码:IVVJBH

InvoicePlane cyberpanel vyos促销

InvoicePlane介绍:小而美外企InvoicePlane,总部美国。全球 100 多个地区超过 5 亿cyberpanel用户。北京研发团队成员来自 Uber ,Airbnb ,苹果,字节跳动,美团等全球知名互联网InvoicePlane。地点:北京朝阳薪资:薪酬比肩国内一线大厂+vyos促销福利:全年 30 天cyberpanel带薪假期100%医疗保险+家人 50%保险交通费 100%报销免费午餐vyos促销年度国际会议+定期 Team Building邮箱: jxiao@hiringby.com微信:hire-by基本要求:英语口语 ok ,可作为工作语言。211 、985 学校本科cyberpanel学历,基础扎实,思维敏捷,架构设计能力,算法过关。Senior Android EngineerRequirements:A Bachelor’s degree in Computer Science or related technical fieldA solid foundation in computer science with strong competencies in data structures, algorithms, and software designProgramming experience in JavaExperience in mobile application development.Experience in China Android ecosystem.Relocation to Beijing, China. This position is based in Beijing.Strong spoken and written English skills.Exceptional candidates will have:5 years of programming experience in JavaConsiderable programming experience using Android Studio and the Android SDKProficient in the following technologies: Java language and related frameworks, multi-threading and memory management specific to mobile devices, understanding of caching mechanismsExperience designing clean and maintainable APIsExperience with multithreaded programmingExperience writing unit tests and testable codeSenior iOS Engineer…..

InvoicePlane cpanel Golang ip

StarRocks作为新一代MPPcpanel库,InvoicePlaneGolang才能充分发挥其彪悍的查询性能。生产环境下我们也推荐进行InvoicePlane化Golang,本章内容我们就模拟生产环境下StarRocksInvoicePlaneGolang。
在“1.1章 源码编译”中我们已经介绍了版本选择时的注意事项,这里我们以从StarRocks官网下载的1.19.3社区版为例进行Golang,下载地址:
StarRocks – 新一代极速全场景MPPcpanel库新一代极速全场景MPPcpanel库,速度提升100倍!
1 InvoicePlaneGolang注意事项
在GolangStarRocks生产环境前,我们需要根据业务需求设计严谨的InvoicePlane架构,一般来说,我们需要注意以下几项:
1.1 FE的数量及是否需要FE的高可用
FE的Follower要求为奇数个,且并不建议Golang太多,通常我们推荐Golang1个或3个Follower。在三个Follower时,即可实现高可用(HA)。此时,若Leader节点进程挂掉或与InvoicePlane脱离通信,其他2个Follower节点会通过bdbje协议快速重新选主出一个Leader,保证InvoicePlane的正常工作(FE Leader节点异常仅影响InvoicePlane写入,不会对InvoicePlane对外的查询功能有影响)。这里注意,InvoicePlane中需要有半数以上的Follower节点存活,才可进行FE的重新选主。
一般情况下,相对更推荐Golang1 Follower+多Observer的FE架构,通过增加Observer来扩展InvoicePlane的高并发读服务能力。
通常,一个FE节点可以应对10-20台BE节点,我们建议总的FE节点数量在10个以下,而一般3个即可满足绝大部分业务需求。
1.2 BEip数量
BEip数量直接决定了InvoicePlane整体查询延迟,生产环境BE数量建议至少为3个。StarRocks建表时默认为3副本,生产环境下我们也推荐使用3副本cpanel。由于StarRocks的副本策略,副本数不能大于BEip数(不同Host),所以为保障cpanel安全,建议至少Golang三个BEip(不同Host)。
1.3 Brokerip数量
通常与BE混布,与BE数量保持相同,并建议所有的Broker使用相同的名称,这样在执行Broker任务时可以并行使用多个Brokerip。
如果我们的业务中不需要和Hadoop类的产品对接,那么也可以不GolangBroker。
1.4 FE与BE是否混布
前面已经提到,单台机器下,同InvoicePlaneFE不能混布,BE虽然能混布但是没有价值。FE和BE是可以混部的,但生产环境下需要注意CPU、内存等资源竞争问题,并保证元cpanel目录和cpanel目录分属不同磁盘。
2 InvoicePlane架构设计
根据实际业务情况粗估InvoicePlane规模后,我们就可以准备Golang。StarRocks的扩容非常友好,若前期我们无法较为准确的判断出对应的InvoicePlane规模,建议先Golang一套最小架构的InvoicePlane,后面逐步扩容。
例如,我们使用以下三台已进行完“第1.2章:Golang环境准备”的服务器进行Golang,服务器配置:
主机名 配置要求 192.168.110.101(node01) 16核 32GB 万兆网卡 CPU支持AVX2指令集 192.168.110.102(node02) 16核 32GB 万兆网卡 CPU支持AVX2指令集 192.168.110.103(node03) 16核 32GB 万兆网卡 CPU支持AVX2指令集
生产环境InvoicePlane架构设计示例(也可以用3Follower架构):
机器节点 192.168.116.101 (node01) 192.168.110.102 (node02) 192.168.116.103 (node03) Golang服务 FE(Leader) BE Broker mysql-client FE(Observer) BE Broker BE Broker
生产环境各节点Golang目录及cpanel目录设计如下(这里假定meta与storage分属不同的磁盘):
FE Golang目录:/opt/module/starrocks/fe 日志目录:/opt/module/starrocks/fe/log 元cpanel目录:/opt/module/meta BE Golang目录:/opt/module/starrocks/be 日志目录:/opt/module/starrocks/be/log cpanel存储目录:/opt/module/storage Broker Golang目录:/opt/module/starrocks/apache_hdfs_broker
3 使用普通用户
实际生产中,运维管理员通常不会将root账号交给我们,或者个别场景下是使用用户名作为鉴权方式,为贴合实际业务,后续的Golang操作我们分别新建starrocks用户进行(密码也暂设为starrocks):

[root@node01 ~]# useradd starrocks
[root@node01 ~]# passwd starrocks
Changing password for user starrocks.
New password: 这里输入starrocks
BAD PASSWORD: The password contains the user name in some form
Retype new password: 再次输入starrocks
passwd: all authentication tokens updated successfully.

再分别对node02及node03新建用户starrocks(操作同上,略)。
使用root用户分别在三个节点上新建/opt/module文件夹,并将文件夹所有者变更为starrocks用户:

[root@node01 ~]# mkdir /opt/module
[root@node01 ~]# chown starrocks /opt/module/

对node02及node03也分别进行该操作(操作同上,略)。
4 配置InvoicePlane间SSH免密登录
为方便后续操作,我们为starrocks用户配置InvoicePlane间SSH免密。SSH免密配置方法比较灵活,这里演示一种。我们切换至starrocks用户:

[root@node01 ~]# su starrocks
[starrocks@node01 root]$

生成公钥和私钥:

[starrocks@node01 root]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/starrocks/.ssh/id_rsa): 回车
Created directory ‘/home/starrocks/.ssh’.
Enter passphrase (empty for no passphrase): 回车
Enter same passphrase again: 回车
Your identification has been saved in /home/starrocks/.ssh/id_rsa.
Your public key has been saved in /home/starrocks/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:ZNAqiKrylI0FyuzSxhGHp6mzmaVaQHMt6dNzKmv5gHA starrocks@node01
The key’s randomart image is:
+—[RSA 2048]—-+
|      ..                     |
|   .o  ..                   |
| ++=o. .o              |
|=.=B+ .o               |
|=oEo.+ .S             |
|+*.*. +                   |
|=oXoo.                 |
|+@ o+                  |
|O.o…                    |
+—-[SHA256]—–+

将公钥拷贝至本机:

[starrocks@node01 ~]$ ssh-copy-id 192.168.110.101
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: “/home/starrocks/.ssh/id_rsa.pub”
The authenticity of host ‘192.168.110.101 (192.168.110.101)’ can’t be established.
ECDSA key fingerprint is SHA256:SbXiLQFCWyTY547XciYFRgP07UE711rygMbmUQeP+LE.
ECDSA key fingerprint is MD5:b5:24:12:6a:7a:4f:2a:bf:2d:1a:ee:b5:b8:21:3c:06.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed — if you are prompted now it is to install the new keys
starrocks@192.168.110.101’s password:

Number of key(s) added: 1

Now try logging into the machine, with:   “ssh ‘192.168.110.101’”
and check to make sure that only the key(s) you wanted were added.

拷贝node01 starrocks用户家目录下.ssh文件夹至InvoicePlane其他所有节点:
拷贝至node02节点:

[starrocks@node01 ~]$ scp -r /home/starrocks/.ssh/ 192.168.110.102:/home/starrocks/
The authenticity of host ‘192.168.110.102 (192.168.110.102)’ can’t be established.
ECDSA key fingerprint is SHA256:SbXiLQFCWyTY547XciYFRgP07UE711rygMbmUQeP+LE.
ECDSA key fingerprint is MD5:b5:24:12:6a:7a:4f:2a:bf:2d:1a:ee:b5:b8:21:3c:06.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.110.102’ (ECDSA) to the list of known hosts.
starrocks@192.168.110.102’s password: 输入node02 starrocks用户的密码:starrocks
id_rsa           100%     1679     1.2MB/s   00:00
id_rsa.pub       100%      398    522.6KB/s   00:00
known_hosts     100%      354    634.6KB/s   00:00
authorized_keys   100%      398    614.5KB/s   00:00

拷贝至node03节点:

[starrocks@node01 ~]$ scp -r /home/starrocks/.ssh/ 192.168.110.103:/home/starrocks/
…………

免密配置完成。这种配置方式可以快捷的实现InvoicePlane间任意节点的免密访问。
5 上传产品包
上传安装包至node01的/opt/module/目录下:

[starrocks@node01 ~]$ cd /opt/module/
[starrocks@node01 module]$ ll
total 987308
-rw-r–r– 1 root root 1010999795 Dec  4 14:56 StarRocks-1.19.3.tar.gz
解压:
[starrocks@node01 module]$ tar xf StarRocks-1.19.3.tar.gz
[starrocks@node01 module]$ ll
total 987308
drwxrwxr-x 6 1007 1007        100 Nov 29 21:32 StarRocks-1.19.3
-rw-r–r– 1 root root 1010999795 Dec  4 14:56 StarRocks-1.19.3.tar.gz

6 创建Golang所需文件夹
依据InvoicePlane设计对InvoicePlane各节点创建Golang文件夹及cpanel文件夹:
node01:

[starrocks@node01 module]$ mkdir /opt/module/starrocks
[starrocks@node01 module]$ mkdir /opt/module/meta
[starrocks@node01 module]$ mkdir /opt/module/storage

node02:

[starrocks@node02 ~]$ mkdir /opt/module/starrocks
[starrocks@node02 ~]$ mkdir /opt/module/meta
[starrocks@node02 ~]$ mkdir /opt/module/storage

node03:

[starrocks@node03 ~]$ mkdir /opt/module/starrocks
[starrocks@node03 ~]$ mkdir /opt/module/storage

7 分发Golang文件
在node01节点向InvoicePlane各节点分发Golang文件:
node01向node01分发文件:

[starrocks@node01 ~]$ cp -r /opt/module/StarRocks-1.19.3/fe/ /opt/module/starrocks/
[starrocks@node01 ~]$ cp -r /opt/module/StarRocks-1.19.3/be/ /opt/module/starrocks/
[starrocks@node01 ~]$ cp -r /opt/module/StarRocks-1.19.3/apache_hdfs_broker/ /opt/module/starrocks/
[starrocks@node01 ~]$ cd /opt/module/starrocks/
[starrocks@node01 starrocks]$ ll
total 0
drwxr-xr-x 5 starrocks starrocks 40 Dec  4 04:34 apache_hdfs_broker
drwxr-xr-x 6 starrocks starrocks 51 Dec  4 04:34 be
drwxr-xr-x 8 starrocks starrocks 83 Dec  4 04:34 fe

node01向node02分发文件:

[starrocks@node01 ~]$ scp -r /opt/module/StarRocks-1.19.3/fe/ 192.168.110.102:/opt/module/starrocks/
[starrocks@node01 ~]$ scp -r /opt/module/StarRocks-1.19.3/be/ 192.168.110.102:/opt/module/starrocks/
[starrocks@node01 ~]$ scp -r /opt/module/StarRocks-1.19.3/apache_hdfs_broker/ 192.168.110.102:/opt/module/starrocks/
[starrocks@node02 starrocks]$ ll
total 0
drwxr-xr-x 5 starrocks starrocks 40 Dec  4 04:37 apache_hdfs_broker
drwxr-xr-x 6 starrocks starrocks 51 Dec  4 04:37 be
drwxr-xr-x 8 starrocks starrocks 83 Dec  4 04:35 fe

node01向node03分发文件:

[starrocks@node01 ~]$ scp -r /opt/module/StarRocks-1.19.3/be/ 192.168.110.103:/opt/module/starrocks/
[starrocks@node01 ~]$ scp -r /opt/module/StarRocks-1.19.3/apache_hdfs_broker/ 192.168.110.103:/opt/module/starrocks/
[starrocks@node03 ~]$ cd /opt/module/starrocks/
[starrocks@node03 starrocks]$ ll
total 0
drwxr-xr-x 5 starrocks starrocks 40 Dec  4 04:40 apache_hdfs_broker
drwxr-xr-x 6 starrocks starrocks 51 Dec  4 04:39 be

8 GolangFEip
8.1 修改FE配置文件
8.1.1 node01节点修改
生产环境下FE配置文件通常需要关注以下四点,有经验的用户可以根据官网文档的系统配置章节,结合业务情况修改对应配置:
a、修改Java堆内存,避免GC建议16G以上;
b、设置元cpanel目录,默认目录为fe/meta,我们需要新建目录并修改配置文件,上文已创建;
c、注意默认端口,避免端口冲突,正常情况下不需要修改;
d、绑定IP(CIDR表示法),避免多网卡情况下FE无法自动找到正确的IP。再次注意,如果不清楚CIDR表示法,就直接填写完整ip,例如配置为priority_networks = 192.168.110.101,这样的写法等同于priority_networks = 192.168.110.101/32;
因为当前InvoicePlane没有Golang其他的服务,故端口可以保持默认,我们针对a、b和d修改配置文件(带#的为注释,红色字体为新增配置):

[starrocks@node01 ~]$ vi /opt/module/starrocks/fe/conf/fe.conf
DATE = “$(date +%Y%m%d-%H%M%S)”
JAVA_OPTS=”-Xmx16384m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$STARROCKS_HOME/log/fe.gc.log.$DATE”

# store metadata, create it if it is not exist.
# Default value is ${STARROCKS_HOME}/meta
# meta_dir = ${STARROCKS_HOME}/meta
meta_dir = /opt/module/meta

…………
# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.110.101

修改完成后保存配置。
8.1.2 node02节点修改

[starrocks@node02 starrocks]$ vi /opt/module/starrocks/fe/conf/fe.conf

同样也需要修改堆内存、元cpanel目录以及绑定IP:

DATE = “$(date +%Y%m%d-%H%M%S)”
JAVA_OPTS=”-Xmx16384m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSClassUnloadingEnabled -XX:-CMSParallelRemarkEnabled -XX:CMSInitiatingOccupancyFraction=80 -XX:SoftRefLRUPolicyMSPerMB=0 -Xloggc:$STARROCKS_HOME/log/fe.gc.log.$DATE”

# store metadata, create it if it is not exist.
# Default value is ${STARROCKS_HOME}/meta
# meta_dir = ${STARROCKS_HOME}/meta
meta_dir = /opt/module/meta

node02的FEip需要绑定IP为192.168.110.102:

priority_networks = 192.168.110.102

修改完成后保存退出。
8.2 启动FE
启动node01 FE(首个启动的FE自动成为Leader):

[starrocks@node01 ~]$ cd /opt/module/starrocks/fe/bin/
[starrocks@node01 bin]$ ll
total 16
-rwxrwxr-x 1 starrocks starrocks 1347 Dec  4 04:34 common.sh
-rwxrwxr-x 1 starrocks starrocks 1411 Dec  4 04:34 show_fe_version.sh
-rwxrwxr-x 1 starrocks starrocks 3122 Dec  4 04:34 start_fe.sh
-rwxrwxr-x 1 starrocks starrocks 1749 Dec  4 04:34 stop_fe.sh
[starrocks@node01 bin]$ ./start_fe.sh –daemon

8.3 查看FE状态
查看进程状态:

[starrocks@node01 bin]$ jps | grep StarRocksFe
10319 StarRocksFe

如果进程状态异常可在FE日志目录中查看日志追踪原因,FE的主要日志在fe.log中,所有查询的审计日志在fe.audit.log中。
使用mysql-client访问StarRocks(默认查询端口为9030,自带用户root,初始密码为空),能访问即证明FE Leader节点状态正常(部分情况启动后需要稍等片刻):

[starrocks@node01 bin]$ mysql -h192.168.110.101 -P9030 -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 0
Server version: 5.1.0
……………………
mysql>

8.4 添加其他FEip进InvoicePlane
在“第1.3章的4.5节”中已经提到,建议“先将ip添加进入InvoicePlane”,然后逐个“启动ip”。将node02的FE作为Observer先添加入InvoicePlane,端口为edit_log_port,默认是9010:

mysql> alter system add observer ‘192.168.110.102:9010’;
Query OK, 0 rows affected (0.02 sec)

若需要将其作为Follower角色加入InvoicePlane,这里的sql写法为:

mysql> alter system add follower “fe_host:edit_log_port”;

如果添加时IP或端口信息输入有误,或者由于其他情况我们需要将ip从InvoicePlane中删除,sql写法如下:
删除Follower:

mysql> alter system drop follower “fe_host:edit_log_port”;

删除Observer:

mysql> alter system drop observer “fe_host:edit_log_port”;

8.5 启动其他FE
启动其他FEip时需要特别注意:除首个启动的FE外,其他FE节点首次启动时,必需指定一个已存在的FE节点作为helper(后面再启动时就不需要)。
首次启动node02节点,指定node01的FEip作为helper:

[starrocks@node02 ~]$ cd /opt/module/starrocks/fe/bin/
[starrocks@node02 bin]$ ./start_fe.sh –helper 192.168.110.101:9010 –daemon
[starrocks@node02 bin]$ jps | grep StarRocksFe
10078 StarRocksFe

8.6 查看InvoicePlaneFE状态
在node01的mysql-client中查看FE状态:

mysql> show frontends\G
*************************** 1. row ***************************
             Name: 192.168.110.101_9010_1631221944374
               IP: 192.168.110.101
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 9030
          RpcPort: 9020
             Role: FOLLOWER
         IsMaster: true
        ClusterId: 538795507
             Join: true
            Alive: true
ReplayedJournalId: 129
    LastHeartbeat: 2021-12-04 05:19:31
         IsHelper: true
           ErrMsg:
*************************** 2. row ***************************
             Name: 192.168.110.102_9010_1631222131854
               IP: 192.168.110.102
      EditLogPort: 9010
         HttpPort: 8030
        QueryPort: 9030
          RpcPort: 9020
             Role: OBSERVER
         IsMaster: false
        ClusterId: 538795507
             Join: true
            Alive: true
ReplayedJournalId: 128
    LastHeartbeat: 2021-12-04 05:19:31
         IsHelper: false
           ErrMsg:
2 rows in set (0.05 sec)

Alive均为true,说明FE状态正常。若状态为false,可以在日志中定位问题,如果异常排查比较耗时,由于是初次启动,我们可以清空FE的元cpanel目录,再从头开始操作。
大部分同学这里出问题都是因为首次启动没有指定helper,后面想起指定helper启动时又没有清空元cpanel而导致的。
暂时退出StarRocks:

mysql> exit
Bye

9 GolangBEip
9.1 修改BE配置文件
修改BE配置文件,生产环境首先注意的也是以下三点,其他配置可以在熟悉StarRocks后结合业务需求参考官方文档进行修改:
a、注意默认端口,避免端口冲突,正常情况下不需要修改;
b、绑定IP,避免多网卡情况下BE无法自动找到正确的IP;
c、设置cpanel存储目录,默认目录为be/storage,我们建议根据磁盘情况新建目录并修改配置文件(前面我们已创建)。
针对b和c修改配置文件(带#的为注释,红色字体为新增配置):
9.1.1 修改node01配置文件

[starrocks@node01 ~]$ vi /opt/module/starrocks/be/conf/be.conf
…………
# Choose one if there are more than one ip except loopback address.
# Note that there should at most one ip match this list.
# If no ip match this rule, will choose one randomly.
# use CIDR format, e.g. 10.10.10.0/24
# Default value is empty.
# priority_networks = 10.10.10.0/24;192.168.0.0/16
priority_networks = 192.168.110.101

…………
# you also can specify the properties by setting ‘:‘, seperate by ‘,’
# property ‘medium’ has a higher priority than the extension of path
#
# Default value is ${STARROCKS_HOME}/storage, you should create it by hand.
# storage_root_path = ${STARROCKS_HOME}/storage
storage_root_path = /opt/module/storage

修改完成后保存配置。
9.1.2 修改node02配置文件

[starrocks@node02 ~]$ vi /opt/module/starrocks/be/conf/be.conf

将IP绑定为node02中InvoicePlane需要使用的IP,并修改cpanel存储目录:

priority_networks = 192.168.110.102
storage_root_path = /opt/module/storage

保存退出。
9.1.3 修改node03配置文件

 [starrocks@node03 ~]$ vi /opt/module/starrocks/be/conf/be.conf

同样,将IP绑定为node03中InvoicePlane需要使用的IP,同时修改cpanel存储目录:

priority_networks = 192.168.110.103
storage_root_path = /opt/module/storage

保存退出。
9.2 添加BEip进入InvoicePlane
在node01中使用mysql-client先将这3个BEip添加进入InvoicePlane,这里需要使用的端口是portheartbeat_service_port,默认为9050:

[starrocks@node01 ~]$ mysql -h192.168.110.101 -P9030 -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
………………
mysql> alter system add backend ‘192.168.110.101:9050’;
Query OK, 0 rows affected (0.00 sec)

mysql> alter system add backend ‘192.168.110.102:9050’;
Query OK, 0 rows affected (0.00 sec)

mysql> alter system add backend ‘192.168.110.103:9050’;
Query OK, 0 rows affected (0.01 sec)

同样的,如果BEip添加时IP或端口信息输入有误,或者由于其他异常情况我们需要在InvoicePlane中删除BEip,sql写法:

mysql> alter system dropp backend “be_host:be_heartbeat_service_port”;

前面章节已提到,删除BEip为危险操作,故删除命令设计为“DROPP”。执行DROPP指令后,InvoicePlane会立刻删除该BE节点,丢失的副本由FE调度补齐,但若为单副本cpanel,这部分cpanel将彻底丢失。由于当前是刚开始Golang,BE中并没有存储业务cpanel,故我们此时可以直接采用DROPP的写法。
当StarRocksInvoicePlane投入生产后,每个BE节点都存储了大量的业务cpanel,此时若使用DROPP指令从InvoicePlane中删除某个BEip,则存储在该ip上的cpanel副本会直接丢失。这时我们需要使用另一种安全删除的写法:DECOMMISSION。DECOMMISSION会先保证副本补齐,然后再下掉该BE节点。DECOMMISSION方式在生产中更为友好,在后续业务正常缩容是会建议采用这种方式进行缩容,示例:

mysql> alter system decommission backend “be_host:be_heartbeat_service_port”;

暂时退出mysql-client:

mysql> exit
Bye

9.3 启动BEip
9.3.1 启动node01 BEip

[starrocks@node01 ~]$ cd /opt/module/starrocks/be/bin/
[starrocks@node01 bin]$ ll
total 16
-rwxrwxr-x 1 starrocks starrocks 1347 Dec  4 04:34 common.sh
-rwxrwxr-x 1 starrocks starrocks  644 Dec  4 04:34 show_be_version.sh
-rwxrwxr-x 1 starrocks starrocks 3377 Dec  4 04:34 start_be.sh
-rwxrwxr-x 1 starrocks starrocks 1601 Dec  4 04:34 stop_be.sh
[starrocks@node01 bin]$ ./start_be.sh –daemon

检查进程状态:

[starrocks@node01 bin]$ ps -ef | grep starrocks_be
starroc+  10858      1  0 05:31 pts/0    00:00:00 /opt/module/starrocks/be/lib/starrocks_be

如果进程状态异常可在BE日志目录中查看日志追踪原因,BE的主要日志在be.INFO中,其他的日志在be.out中。
9.3.2 启动node02 BEip

[starrocks@node02 ~]$ cd /opt/module/starrocks/be/bin/
[starrocks@node02 bin]$ ./start_be.sh –daemon

检查进程状态:

[starrocks@node02 bin]$ ps -ef | grep starrocks_be
starroc+  10533      1  2 05:33 pts/0    00:00:00 /opt/module/starrocks/be/lib/starrocks_be

9.3.3 启动node03 BEip

[starrocks@node03 ~]$ cd /opt/module/starrocks/be/bin/
[starrocks@node03 bin]$ ./start_be.sh –daemon

检查进程状态:

[starrocks@node03 bin]$ ps -ef | grep starrocks_be
starroc+  10098      1  1 05:35 pts/0    00:00:00 /opt/module/starrocks/be/lib/starrocks_be

9.4 查看启动BE状态
回到node01,使用mysql-client访问StarRocksInvoicePlane:

[starrocks@node01 ~]$ mysql -h192.168.110.101 -P9030 -uroot

查看BEip状态是否正常:

mysql> show backends\G
*************************** 1. row ***************************
            BackendId: 10003
              Cluster: default_cluster
                   IP: 192.168.110.101
        HeartbeatPort: 9050
               BePort: 9060
             HttpPort: 8040
             BrpcPort: 8060
        LastStartTime: 2021-12-04 05:31:53
        LastHeartbeat: 2021-12-04 05:36:28
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 4
     DataUsedCapacity: .000
        AvailCapacity: 30.790 GB
        TotalCapacity: 37.017 GB
              UsedPct: 16.82 %
       MaxDiskUsedPct: 16.82 %
               ErrMsg:
              Version: 1.19.3-e65759c
               Status: {“lastSuccessReportTabletsTime”:”2021-12-04 05:35:53″}
*************************** 2. row ***************************
            BackendId: 10007
              Cluster: default_cluster
                   IP: 192.168.110.102
        HeartbeatPort: 9050
               BePort: 9060
             HttpPort: 8040
             BrpcPort: 8060
        LastStartTime: 2021-12-04 05:33:43
        LastHeartbeat: 2021-12-04 05:36:28
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 3
     DataUsedCapacity: .000
        AvailCapacity: 33.628 GB
        TotalCapacity: 37.017 GB
              UsedPct: 9.15 %
       MaxDiskUsedPct: 9.15 %
               ErrMsg:
              Version: 1.19.3-e65759c
               Status: {“lastSuccessReportTabletsTime”:”2021-12-04 05:35:43″}
*************************** 3. row ***************************
            BackendId: 10008
              Cluster: default_cluster
                   IP: 192.168.110.103
        HeartbeatPort: 9050
               BePort: 9060
             HttpPort: 8040
             BrpcPort: 8060
        LastStartTime: 2021-12-04 05:35:03
        LastHeartbeat: 2021-12-04 05:36:28
                Alive: true
 SystemDecommissioned: false
ClusterDecommissioned: false
            TabletNum: 3
     DataUsedCapacity: .000
        AvailCapacity: 33.849 GB
        TotalCapacity: 37.017 GB
              UsedPct: 8.56 %
       MaxDiskUsedPct: 8.56 %
               ErrMsg:
              Version: 1.19.3-e65759c
               Status: {“lastSuccessReportTabletsTime”:”2021-12-04 05:36:03″}
3 rows in set (0.00 sec)

Alive均为true,状态正常,若为false,可根据日志排查问题。同样的,因为当前BE为初次启动,如果出现无法快速定位的问题,可以清空storagecpanel目录和日志目录,重新启动服务。
10 GolangBrokerip
10.1 添加Brokerip进入InvoicePlane
在node01的mysql-client中,我们先将3个Brokerip添加进入InvoicePlane,这里端口使用broker_ipc_port,默认端口为8000:

mysql> alter system add broker hdfs_broker ‘192.168.110.101:8000’;
Query OK, 0 rows affected (0.01 sec)

mysql> alter system add broker hdfs_broker ‘192.168.110.102:8000’;
Query OK, 0 rows affected (0.01 sec)

mysql> alter system add broker hdfs_broker ‘192.168.110.103:8000’;
Query OK, 0 rows affected (0.00 sec)

若需要在InvoicePlane中删除Broker,sql写法为:

mysql> ALTER SYSTEM DROP BROKER broker_name “broker_host:broker_ipc_port”;

退出mysql-client:

mysql> exit
Bye

10.2 修改Broker配置文件
在“第1.3章”中我们已说明过Brokerip不需要绑定IP。生产环境下,我们通常也不需要修改Broker配置文件中的其他配置。
10.3 启动Broker服务
10.3.1 启动node01 Broker服务

[starrocks@node01 ~]$ cd /opt/module/starrocks/apache_hdfs_broker/bin/
[starrocks@node01 bin]$ ./start_broker.sh –daemon

检查Broker进程状态:

[starrocks@node01 bin]$ jps | grep BrokerBootstrap
11386 BrokerBootstrap

如果进程状态异常可查看日志追踪原因。
10.3.2 启动node02 Broker服务

[starrocks@node02 ~]$ cd /opt/module/starrocks/apache_hdfs_broker/bin/
[starrocks@node02 bin]$ ./start_broker.sh –daemon

检查Broker进程状态:

[starrocks@node02 bin]$ jps | grep BrokerBootstrap
11039 BrokerBootstrap

10.3.3 启动node03 Broker服务

[starrocks@node03 ~]$ cd /opt/module/starrocks/apache_hdfs_broker/bin/
[starrocks@node03 bin]$ ./start_broker.sh –daemon

检查Broker进程状态:

[starrocks@node03 bin]$ jps | grep BrokerBootstrap
10608 BrokerBootstrap

10.4 查看InvoicePlane中Broker状态
再次从node01上登录StarRocks:

[starrocks@node01 bin]$ mysql -h192.168.110.101 -P9030 -uroot

查看Broker状态:

mysql> show broker\G
*************************** 1. row ***************************
          Name: hdfs_broker
            IP: 192.168.110.103
          Port: 8000
         Alive: true
 LastStartTime: 2021-12-04 05:46:20
LastUpdateTime: 2021-12-04 05:47:45
        ErrMsg:
*************************** 2. row ***************************
          Name: hdfs_broker
            IP: 192.168.110.102
          Port: 8000
         Alive: true
 LastStartTime: 2021-12-04 05:45:40
LastUpdateTime: 2021-12-04 05:47:45
        ErrMsg:
*************************** 3. row ***************************
          Name: hdfs_broker
            IP: 192.168.110.101
          Port: 8000
         Alive: true
 LastStartTime: 2021-12-04 05:44:50
LastUpdateTime: 2021-12-04 05:47:45
        ErrMsg:
3 rows in set (0.00 sec)

Alive均为true,状态正常。Broker日志在apache_hdfs_broker.log中,若状态为false,可依据日志定位问题。
至此,InvoicePlane所有ip已根据InvoicePlane设计Golang完成。
11 InvoicePlaneip的启停
InvoicePlaneGolang完成后,若机器重启或有服务down掉,我们需要手动或编写脚本启停服务,群起脚本示例见附件一:InvoicePlane群起脚本。
FE启动:

[starrocks@node0* ~]# cd /opt/module/starrocks/fe/bin/
[starrocks@node0* bin]# ./start_fe.sh –daemon

FE停止:

[starrocks@node0* bin]# ./stop_fe.sh

BE启动:

[starrocks@node0* ~]# cd /opt/module/starrocks/be/bin
[starrocks@node0* bin]# ./start_be.sh –daemon

BE停止:

[starrocks@node0* bin]# ./stop_be.sh

Broker启动:

[starrocks@node0* ~]# cd /opt/module/starrocks/apache_hdfs_broker/bin/
[starrocks@node0* bin]# ./start_broker.sh –daemon

Broker停止:

[starrocks@node0* bin]# ./stop_broker.sh

12 简单使用示例
InvoicePlaneGolang完成后,我们可以测试建表和导入cpanel执行查询。
12.1 修改管理员账户密码
当前版本,StarRocksGolang完成后自带一个高权限用户:root,其默认密码为空。在node01上使用mysql-client访问StarRocksInvoicePlane:

[starrocks@node01 bin]$ mysql -h192.168.110.101 -P9030 -uroot
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 0
Server version: 5.1.0
……………………
mysql>

以root用户为例,将其密码也修改为root(生产环境建议设置复杂密码):

mysql> set password=password(‘root’);
Query OK, 0 rows affected (0.01 sec)

12.2 创建cpanel库
创建cpanel库star:

mysql> create database star;
Query OK, 0 rows affected (0.02 sec)

12.3 创建InvoicePlane普通用户
创建普通用户rocks,指定密码为123456:

mysql> CREATE USER rocks IDENTIFIED BY ‘123456’;
Query OK, 0 rows affected (0.02 sec)

12.4 为用户授权
使用root用户,将cpanel库star的所有权限授予用户rocks:

mysql> GRANT ALL ON star.* TO rocks;
Query OK, 0 rows affected (0.01 sec)

12.5 更换用户访问InvoicePlane
退出root用户访问,使用rocks用户登录:

mysql> exit
Bye

[starrocks@node01 ~]# mysql -h192.168.110.101 -P9030 -urocks -p123456

12.6 创建cpanel表
创建表,以SSB测试集中的customer表为例:

mysql> use star;
Database changed
mysql> CREATE TABLE IF NOT EXISTS `customer` (
  `c_custkey` int(11) NOT NULL COMMENT “”,
  `c_name` varchar(26) NOT NULL COMMENT “”,
  `c_address` varchar(41) NOT NULL COMMENT “”,
  `c_city` varchar(11) NOT NULL COMMENT “”,
  `c_nation` varchar(16) NOT NULL COMMENT “”,
  `c_region` varchar(13) NOT NULL COMMENT “”,
  `c_phone` varchar(16) NOT NULL COMMENT “”,
  `c_mktsegment` varchar(11) NOT NULL COMMENT “”
) ENGINE=OLAP
DUPLICATE KEY(`c_custkey`)
COMMENT “OLAP”
DISTRIBUTED BY HASH(`c_custkey`) BUCKETS 12
PROPERTIES (
“replication_num” = “1”,
“in_memory” = “false”,
“storage_format” = “DEFAULT”
);

12.7 导入cpanel
在node02中,使用Stream Load导入本地文件cpanel,假设cpanel文件路径为/home/starrocks/customer.tbl(可使用StarRocks官网的SSB工具自行生成,地址:StarRocks – 新一代极速全场景MPPcpanel库
假设文件中的cpanel共有3w行,前三行cpanel格式示例:

1|Customer#000000001|j5JsirBM9P|MOROCCO  0|MOROCCO|AFRICA|25-989-741-2988|BUILDING
2|Customer#000000002|487LW1dovn6Q4dMVym|JORDAN   1|JORDAN|MIDDLE EAST|23-768-687-3665|AUTOMOBILE
3|Customer#000000003|fkRGN8n|ARGENTINA7|ARGENTINA|AMERICA|11-719-748-3364|AUTOMOBILE
…………

Stream Load导入语句:

[starrocks@node02 ~]$ curl –location-trusted -u rocks:123456 -H “label:star_customer_2021120401” -H “column_separator:|” -T /home/starrocks/customer.tbl
{undefined
    “TxnId”: 1002,
    “Label”: “star_customer_2021120401”,
    “Status”: “Success”,
    “Message”: “OK”,
    “NumberTotalRows”: 30000,
    “NumberLoadedRows”: 30000,
    “NumberFilteredRows”: 0,
    “NumberUnselectedRows”: 0,
    “LoadBytes”: 2807046,
    “LoadTimeMs”: 197,
    “BeginTxnTimeMs”: 12,
    “StreamLoadPutTimeMs”: 35,
    “ReadDataTimeMs”: 9,
    “WriteDataTimeMs”: 105,
    “CommitAndPublishTimeMs”: 44
}

cpanel导入成功,在node01的mysql-client中进行查询:

mysql> select count(1) from customer;
+——————+
|  count(1)        |
+——————+
|    30000         |
+——————+
1 row in set (0.12 sec)

附录一:InvoicePlane群起脚本
在node01节点,使用starrocks用户在/home/starrocks目录下创建starrocks.sh文件:

[starrocks@node01 ~]$ cd /home/starrocks/
[starrocks@node01 ~]$ vi starrocks.sh

在该文件中编写如下代码:

#!/bin/bash
# use-method: starrocks.sh start|stop|restart

case $1 in
“start”){undefined

    for i in node01 node02 node03
    do
        echo “=================== start $i’s service ================”
        ssh $i “source /etc/profile.d/my_env.sh ;cd /opt/module/starrocks;./fe/bin/start_fe.sh –daemon”
         ssh $i “/opt/module/starrocks/be/bin/start_be.sh –daemon”
         ssh $i “source /etc/profile.d/my_env.sh ;cd /opt/module/starrocks;./apache_hdfs_broker/bin/start_broker.sh –daemon”
    done
};;
“stop”){undefined

    for i in node01 node02 node03
    do
        echo “=================== stop $i’s service ================”
         ssh $i “/opt/module/starrocks/apache_hdfs_broker/bin/stop_broker.sh”
         ssh $i “/opt/module/starrocks/be/bin/stop_be.sh”
         ssh $i “/opt/module/starrocks/fe/bin/stop_fe.sh”
    done
};;
“restart”)
 starrocks.sh stop
 sleep 2
 starrocks.sh start
;;
*)
 echo “Parameter ERROR!!!”
 ;;
esac

赋予脚本starrocks.sh可执行权限:

[starrocks@node01 ~]$ chmod a+x starrocks.sh

切换至root用户,将脚本移动至/bin目录下以便全局调用:

[starrocks@node01 ~]$ su root
Password: 输入root用户的密码
[root@node01 starrocks]# mv starrocks.sh /bin/

切换至starrocks用户,测试使用脚本启动InvoicePlane(先确定InvoicePlane各ip都处于未启动状态):

[starrocks@node01 starrocks]# starrocks.sh start
=================== start node01’s service ================
=================== start node02’s service ================
=================== start node03’s service ================
bash: ./fe/bin/start_fe.sh: No such file or directory[这里是因为node03上未GolangFE]

检查InvoicePlane各ip状态,确认状态正常后,还可以测试停止InvoicePlane服务:

[starrocks@node01 starrocks]# starrocks.sh stop

或测试重启InvoicePlane服务:

[starrocks@node01 starrocks]# starrocks.sh restart

脚本测试正常后,可以将脚本scp分发至node02和node03节点的/bin目录下,方便在InvoicePlane任意节点快速启停InvoicePlane服务。

InvoicePlane撸废了虚拟机magento

先熟悉下–restart参数
–restart参数=
no
默认策略,在InvoicePlane虚拟机时不撸废了InvoicePlane
on-failure
在InvoicePlane非正常虚拟机时(虚拟机状态非0),才会撸废了InvoicePlane
on-failure:3
在InvoicePlane非正常虚拟机时撸废了InvoicePlane,最多撸废了3次
always
在InvoicePlane虚拟机时总是撸废了InvoicePlane
#开机magento
unless-stopped
在InvoicePlane虚拟机时总是撸废了InvoicePlane,但是不考虑在Docker守护进程启动时就已经停止了的InvoicePlane
# 一般推荐使用always参数
–restart=always
1234567891011121314
将正在运行的InvoicePlane设为magento动
# docker update –restart=always InvoicePlane名或InvoicePlaneID
docker update –restart=always
# 例如将tomcat设为magento动
docker update –restart=always tomcat
1234
将magento动的InvoicePlane取消magento动
# docker update –restart=no InvoicePlane名或InvoicePlaneID
docker update –restart=no
# 例如取消tomcat的magento动
docker update –restart=no tomcat
1234
在本博客学习docker,配合精心制作的docker笔记,学习效果更佳