分布式聯(lián)機(jī)服務(wù)技術(shù)框架(IBP)設(shè)計(jì)與實(shí)戰(zhàn)(五学密、安裝部署與集群伸縮)

版本號(hào) 修訂日期 修訂人 內(nèi)容
0.0.1.0 2018-01-28 厲華 創(chuàng)建

1. 安裝部署

IBP集群配置對(duì)象實(shí)例層次如下:

  • 多個(gè)通訊節(jié)點(diǎn)主機(jī)組成一個(gè)通訊節(jié)點(diǎn),多個(gè)通訊節(jié)點(diǎn)組成IBP節(jié)點(diǎn)集群凑队。通訊節(jié)點(diǎn)主機(jī)是最小運(yùn)行實(shí)例则果,通訊節(jié)點(diǎn)是自動(dòng)推導(dǎo)下發(fā)配置和應(yīng)用包、交易負(fù)載均衡的最小單位漩氨。通訊節(jié)點(diǎn)是集群管理的最小啟停單位西壮。
  • 交易碼信息包含了交易中文描述、交易應(yīng)用包(動(dòng)態(tài)庫(kù))文件名叫惊、客戶端通訊超時(shí)款青、服務(wù)端應(yīng)用處理超時(shí)(可選)、默認(rèn)通訊節(jié)點(diǎn)名霍狰。
  • 項(xiàng)目信息其實(shí)是客戶端通訊節(jié)點(diǎn)集抡草、服務(wù)端通訊節(jié)點(diǎn)集饰及、交易碼集的關(guān)系信息。
  • 用戶自定義KV配置下掛在通訊節(jié)點(diǎn)下康震。

(以下均為手工安裝部署流程燎含,正在研發(fā)一鍵自動(dòng)安裝通訊節(jié)點(diǎn)伸縮集群,但基本流程不變)

1.1. 初次部署

規(guī)劃示例:

| 節(jié)點(diǎn)類型 | 節(jié)點(diǎn)名 | 節(jié)點(diǎn)說明 | 用戶名 | 地址 |
| --- | --- | --- |
| 日志節(jié)點(diǎn) | IBLOG | 日志歸集 | iblog | 158.1.0.55:10101 |
| 注冊(cè)節(jié)點(diǎn) | IBMS | 注冊(cè)中心 | ibms | 158.1.0.54:16001 |
| 通訊節(jié)點(diǎn) | ECIF | ECIF業(yè)務(wù)平臺(tái) | ecif | 158.1.0.56:18001 |
| 通訊節(jié)點(diǎn) | ECIF | ECIF業(yè)務(wù)平臺(tái) | ecif | 158.1.0.57:18001 |
| 通訊節(jié)點(diǎn) | ECIF | ECIF業(yè)務(wù)平臺(tái) | ecif | 158.1.0.58:18001 |
| 通訊節(jié)點(diǎn) | CORE | 核心系統(tǒng) | herons | 66.88.1.10:10601 |

1.1.1. 部署日志歸集節(jié)點(diǎn)

1.1.1.1. 初始化環(huán)境

創(chuàng)建用戶(需要root權(quán)限)

# useradd iblog
# passwd iblog

進(jìn)入用戶

# su - iblog
$

上傳logpipe安裝包后解開

$ tar xvzf ibp-Linux-0.0.24.1-bin.tar.gz
$ tar xvzf logpipe-0.16.1-bin.tar.gz

改名腿短、引用屏箍、重載用戶登錄配置

$ mv .bash_profile .profile
$ echo ". ~/shbin/ibp_profile.add" >>.profile
$ . ~/.profile

1.1.1.2. 安裝日志歸集端

編寫日志歸集端配置文件

$ cat $HOME/etc/logpipe.conf
{
        "log" : 
        {
                "log_file" : "/tmp/iblog_logpipe_log.log" ,
                "log_level" : "WARN"
        } ,

        "inputs" : 
        [
                { "plugin":"so/logpipe-input-tcp.so" , "ip":"158.1.0.55" , "port":10101 }
        ] ,

        "outputs" : 
        [
                { "plugin":"so/logpipe-output-file.so" , "path":"/home/iblog/log" , "rotate_size":10000000 }
        ]
}

啟動(dòng)日志歸集端

$ logpipe -f $HOME/etc/logpipe.conf

其它節(jié)點(diǎn)采集端發(fā)來的日志都會(huì)以相同文件名落到/home/iblog/log/

logpipe由一個(gè)管理進(jìn)程和一個(gè)工作進(jìn)程組成,想要停止時(shí)只要向管理進(jìn)程發(fā)送TERM信號(hào)即可橘忱。

設(shè)置定時(shí)清理任務(wù)

周期性日志文件轉(zhuǎn)檔任務(wù)赴魁,每天23點(diǎn)55分執(zhí)行一次:

55 23 * * * . $HOME/shbin/baklog >/tmp/iblog_baklog.stdout 2>&1

周期性清理日志轉(zhuǎn)檔包任務(wù),每天3點(diǎn)0分執(zhí)行一次:

0 3 * * * . $HOME/shbin/rmlogbak 30 >/tmp/iblog_rmlogbak.stdout 2>&1

1.1.2. 部署注冊(cè)節(jié)點(diǎn)

1.1.2.1. 初始化環(huán)境

創(chuàng)建用戶(需要root權(quán)限)

# useradd ibms
# passwd ibms

進(jìn)入用戶

# su - ibms
$

上傳安裝包后解開

$ tar xvzf ibp-Linux-0.0.24.1-bin.tar.gz
$ tar xvzf logpipe-0.16.1-bin.tar.gz

改名钝诚、引用颖御、重載用戶登錄配置

$ mv .bash_profile .profile
$ echo ". ~/shbin/ibp_profile.add" >>.profile
$ . ~/.profile

初始化ibms環(huán)境(檢查創(chuàng)建目錄、自動(dòng)生成缺省配置文件)

$ ibms -a init
mkdir /home/ibms/etc ok
/home/ibms/etc/ibms.conf created
/home/ibms/etc/ibp_nodes.conf created
/home/ibms/etc/ibp_apps.conf created
/home/ibms/etc/ibp_projects.conf created
mkdir /home/ibms/log ok
mkdir /home/ibms/file ok
mkdir /home/ibms/so ok , don't forget copy .so files in it
mkdir /home/ibms/keys ok , don't forget generate keys
$ l
drwxrwxr-x 2 ibms ibms    4096 04-05 15:56 bin
drwxr-xr-x 2 ibms ibms    4096 04-05 15:54 etc
drwxrwxr-x 2 ibms ibms    4096 04-05 15:56 exsh
drwxr-xr-x 2 ibms ibms    4096 04-05 15:32 file
-rw-rw-r-- 1 ibms ibms 1001633 04-05 15:56 ibp-Linux-0.0.24.1-bin.tar.gz
drwxr-xr-x 2 ibms ibms    4096 04-05 15:32 keys
drwxrwxr-x 2 ibms ibms    4096 04-05 15:56 lib
drwxr-xr-x 2 ibms ibms    4096 04-05 16:00 log
drwxrwxr-x 2 ibms ibms    4096 04-05 15:56 shbin
drwxr-xr-x 2 ibms ibms    4096 04-05 15:32 so
$ l etc/
-rw-rw-r-- 1 ibms ibms 605 04-05 15:32 ibms.conf
-rw-rw-r-- 1 ibms ibms 167 04-05 15:32 ibp_apps.conf
-rw-rw-r-- 1 ibms ibms 129 04-05 15:32 ibp_nodes.conf
-rw-rw-r-- 1 ibms ibms 146 04-05 15:32 ibp_projects.conf

ibms.conf是注冊(cè)中心主配置文件凝颇,ibp_nods.conf是集群配置通訊節(jié)點(diǎn)配置文件潘拱,ibp_apps.conf是集群配置交易碼配置文件,ibp_projects.conf是集群配置項(xiàng)目信息配置文件祈噪,以上配置文件格式均為JSON泽铛。

1.1.2.2. 安裝日志采集端

編寫日志采集端配置文件

$ cat $HOME/etc/logpipe.conf
{
        "log" : 
        {
                "log_file" : "/tmp/ibms_logpipe_log.log" ,
                "log_level" : "WARN"
        } ,

        "inputs" : 
        [
                { "plugin":"so/logpipe-input-file.so" , "path":"/home/ecif/log" , "rotate_size":10000000 , "exec_after_rotating":"rm -f ${LOGPIPE_ROTATING_NEW_FILENAME}" }
        ] ,

        "outputs" : 
        [
                { "plugin":"so/logpipe-output-tcp.so" , "ip":"158.1.0.55","port":10101 }
        ]
}

啟動(dòng)日志采集端

$ logpipe -f $HOME/etc/logpipe.conf

/home/iblog/log/里新增日志或現(xiàn)存日志追加內(nèi)容會(huì)被異步實(shí)時(shí)采集傳輸?shù)饺罩練w集端,日志文件到達(dá)10MB會(huì)被清除辑鲤。

logpipe由一個(gè)管理進(jìn)程和一個(gè)工作進(jìn)程組成,想要停止時(shí)只要向管理進(jìn)程發(fā)送TERM信號(hào)即可杠茬。

設(shè)置定時(shí)清理任務(wù)

周期性日志文件轉(zhuǎn)檔任務(wù)月褥,每天23點(diǎn)55分執(zhí)行一次:

55 23 * * * . $HOME/shbin/baklog >/tmp/ibms_baklog.stdout 2>&1

周期性清理日志轉(zhuǎn)檔包任務(wù),每天3點(diǎn)0分執(zhí)行一次:

0 3 * * * . $HOME/shbin/rmlogbak 30 >/tmp/ibms_rmlogbak.stdout 2>&1

1.1.2.3. 安裝注冊(cè)中心

修改注冊(cè)中心配置文件

{
    "ibms" :
    {
        "server" : // 服務(wù)器配置
        {
            "ip" : "158.1.0.54" ,
            "port" : 16001
        } ,
        
        "config" : // IBP集群配置文件名
        {
            "nodes_conf" : "ibp_nodes.conf" , // 通訊節(jié)點(diǎn)信息配置文件名
            "apps_conf" : "ibp_apps.conf" , // 交易碼信息配置文件名
            "projects_conf" : "ibp_projects.conf" // 項(xiàng)目信息配置文件名
        } ,
        
        "security" : // 安全機(jī)制配置
        {
            "old_key_disable_elapse" : 120 , // 老密鑰失效時(shí)間(單位:秒)
            "new_key_enable_elapse" : 60 // 新密鑰生效時(shí)間(單位:秒)
        } ,

        "misc" : // 雜項(xiàng)配置
        {
            "auto_download_bin_enable" : 0 , // 是否啟用立即自動(dòng)推導(dǎo)下發(fā)應(yīng)用包
            "second_config_dump" : "158.1.0.55:26001" // 冗余落地配置副本的ibcmd地址
        } ,

        "log" : // ibms日志配置
        {
            "iblog_server" : "" , // 該選項(xiàng)已棄用瓢喉,改用logpipe實(shí)現(xiàn)大小轉(zhuǎn)檔和異步實(shí)時(shí)日志收集
            "event_output" : "file::log/event.log" , // 事件日志文件名
            "main_output" : "file::log/ibms_main.log" , // 啟動(dòng)初始化日志文件名
            "main_loglevel" : DEBUG , // 啟動(dòng)初始化日志等級(jí)
            "monitor_output" : "file::log/ibms_monitor.log" , // 注冊(cè)中心父進(jìn)程日志文件名
            "monitor_loglevel" : INFO , // 注冊(cè)中心父進(jìn)程日志等級(jí)
            "worker_output" : "file::log/ibms_worker.log" , // 注冊(cè)中心子進(jìn)程日志文件名
            "worker_loglevel" : INFO // 注冊(cè)中心子進(jìn)程日志等級(jí)
        }
    }
}

啟動(dòng)注冊(cè)中心

$ ibms.sh start
ibms start ok
ibms      6745     1  0 15:58 pts/15   00:00:00 ibms -f ibms.conf -a start
ibms      6746  6745  0 15:58 pts/15   00:00:00 ibms -f ibms.conf -a start

注冊(cè)中心由一個(gè)管理(父)進(jìn)程和一個(gè)工作進(jìn)程(子)組成宁赤,管理進(jìn)程日志文件是log/ibms_monitor.log,工作進(jìn)程日志文件是log/ibms_worker.log栓票。

想要停止注冊(cè)中心决左,只要向管理進(jìn)程發(fā)送TERM信號(hào)即可,也可用單實(shí)例管理腳本ibms.sh stop走贪。

1.1.3. 部署通訊節(jié)點(diǎn)

(以ecif@158.1.0.56:18001為例)

1.1.3.1. 初始化環(huán)境

創(chuàng)建用戶(需要root權(quán)限)

# useradd ecif
# passwd ecif

進(jìn)入用戶

# su - ecif
$

上傳安裝包后解開

$ tar xvzf ibp-Linux-0.0.24.1-bin.tar.gz
$ tar xvzf logpipe-0.16.1-bin.tar.gz

改名佛猛、引用、重載用戶登錄配置

$ mv .bash_profile .profile
$ echo ". ~/shbin/ibp_profile.add" >>.profile
$ . ~/.profile

初始化ibma環(huán)境(檢查創(chuàng)建目錄坠狡、自動(dòng)生成缺省配置文件)

$ ibma -a init
mkdir /home/ecif/etc ok
/home/ecif/etc/ibma.conf created
mkdir /home/ecif/log ok
mkdir /home/ecif/file ok
mkdir /home/ecif/so ok , don't forget copy .so files in it
mkdir /home/ecif/keys ok , don't forget generate keys
$ l
drwxrwxr-x 2 ecif ecif    4096 04-05 16:06 bin
drwxr-xr-x 2 ecif ecif    4096 04-05 16:08 etc
drwxrwxr-x 2 ecif ecif    4096 04-05 16:06 exsh
drwxr-xr-x 2 ecif ecif    4096 04-05 16:08 file
-rw-rw-r-- 1 ecif ecif 1001633 04-05 16:06 ibp-Linux-0.0.24.1-bin.tar.gz
drwxr-xr-x 2 ecif ecif    4096 04-05 16:08 keys
drwxrwxr-x 2 ecif ecif    4096 04-05 16:06 lib
drwxr-xr-x 2 ecif ecif    4096 04-05 16:08 log
drwxrwxr-x 2 ecif ecif    4096 04-05 16:06 shbin
drwxr-xr-x 2 ecif ecif    4096 04-05 16:08 so
$ l etc/
-rw-rw-r-- 1 ecif ecif 476 04-05 16:08 ibma.conf

ibma.conf是注冊(cè)中心主配置文件继找,配置文件格式為JSON。

1.1.3.2. 安裝日志采集端

編寫日志采集端配置文件

$ cat $HOME/etc/logpipe.conf
{
        "log" : 
        {
                "log_file" : "/tmp/ibms_logpipe_log.log" ,
                "log_level" : "WARN"
        } ,

        "inputs" : 
        [
                { "plugin":"so/logpipe-input-file.so" , "path":"/home/ecif/log" , "rotate_size":10000000 , "exec_after_rotating":"rm -f ${LOGPIPE_ROTATING_NEW_FILENAME}" }
        ] ,

        "outputs" : 
        [
                { "plugin":"so/logpipe-output-tcp.so" , "ip":"158.1.0.55","port":10101 }
        ]
}

啟動(dòng)日志采集端

$ logpipe -f $HOME/etc/logpipe.conf

/home/iblog/log/里新增日志或現(xiàn)存日志追加內(nèi)容會(huì)被異步實(shí)時(shí)采集傳輸?shù)饺罩練w集端逃沿,日志文件到達(dá)10MB會(huì)被清除婴渡。

logpipe由一個(gè)管理進(jìn)程和一個(gè)工作進(jìn)程組成幻锁,想要停止時(shí)只要向管理進(jìn)程發(fā)送TERM信號(hào)即可。

設(shè)置定時(shí)清理任務(wù)

周期性日志文件轉(zhuǎn)檔任務(wù)边臼,每天23點(diǎn)55分執(zhí)行一次:

55 23 * * * . $HOME/shbin/baklog >/tmp/ibms_baklog.stdout 2>&1

周期性清理日志轉(zhuǎn)檔包任務(wù)哄尔,每天3點(diǎn)0分執(zhí)行一次:

0 3 * * * . $HOME/shbin/rmlogbak 30 >/tmp/ibms_rmlogbak.stdout 2>&1

1.1.3.3. 安裝注冊(cè)代理

修改注冊(cè)代理配置文件

{
        "ibma" :
        {
                "this_node" : "ECIF" , // 本節(jié)點(diǎn)名

                "comm" :
                {
                        "min_compress_size" : 16 // 當(dāng)HTTP體大于該大小時(shí)自動(dòng)啟用壓縮
                } ,

                "log" :
                {
                        "iblog_server" : "" ,
                        "event_output" : "file::log/event.log" ,
                        "main_output" : "file::log/ibma_ECIF_127.0.0.1:18111_main.log" ,
                        "main_loglevel" : INFO ,
                        "worker_output" : "file::log/ibma_ECIF_127.0.0.1:18111_worker.log" ,
                        "worker_loglevel" : INFO
                }
        } ,

        "ibac" :
        {
                "connecting_timeout" : 10 // 客戶端連接(connect)服務(wù)端超時(shí)時(shí)間(單位:秒)
                "retry_connect_timeval" : 60 , // 當(dāng)連接失敗后暫禁時(shí)間段(單位:秒)
        } ,

        "ibms" :
        {
                "server" :
                {
                        "ip" : "158.1.0.54" , // 注冊(cè)中心IP
                        "port" : 16001 // 注冊(cè)中心PORT
                }
        }
}

生成通訊密鑰

$ cd ~/keys
$ ibpgenrsakeys ECIF
$ l
-rw-rw-r-- 1 ecif ECIF 1191 04-05 16:44 ECIF.prikey
-rw-rw-r-- 1 ECIF ECIF 270 04-05 16:44 ECIF.pubkey

注意:ibpgenrsakeys必須在$HOME/keys/目錄里執(zhí)行。

在注冊(cè)中心注冊(cè)該節(jié)點(diǎn)主機(jī)

$ ibms -a add_node --node ECIF
OK
$ ibms -a add_node_host --node ECIF --ip 158.1.0.56 --port 18001
OK

注意:如果該節(jié)點(diǎn)主機(jī)只做通訊客戶端柠并,port設(shè)為-18001究飞。

在通訊節(jié)點(diǎn)啟動(dòng)注冊(cè)代理

$ ibma.sh start
ibma start ok
ecif   9554     1  0 16:51 pts/16   00:00:00 ibma -f ibma.conf -a start

注冊(cè)代理由一個(gè)工作進(jìn)程組成,進(jìn)程日志文件是log/ibma_worker.log堂鲤。

想要停止注冊(cè)代理亿傅,只要向工作進(jìn)程發(fā)送TERM信號(hào)即可,也可用單實(shí)例管理腳本ibma.sh stop瘟栖。

在注冊(cè)中心自動(dòng)推導(dǎo)下發(fā)配置變動(dòng)通知(主要通知關(guān)聯(lián)節(jié)點(diǎn))

$ ibms -s changed_nodes
ECIF
$ ibms -a distribute_config
OK

1.1.3.4. 安裝通訊服務(wù)端平臺(tái)(如果需要的話)

初始化通訊服務(wù)端平臺(tái)環(huán)境

$ ibas -a init
WARN : /home/ecif/etc exist !
/home/ecif/etc/ibas.conf created
WARN : /home/ecif/log exist !
WARN : /home/ecif/file exist !
WARN : /home/ecif/so exist !
WARN : /home/ecif/keys exist !
$ l etc/
-rw-rw-r-- 1 ecif ecif 476 04-05 16:08 ibma.conf
-rw-rw-r-- 1 ecif ecif 864 04-05 17:34 ibas.conf

ibas.conf是通訊服務(wù)端平臺(tái)主配置文件葵擎,格式為JSON。

修改通訊服務(wù)端平臺(tái)主配置文件

{
        "ibas" :
        {
                "server" : // 服務(wù)端偵聽地址
                {
                        "ip" : "158.1.0.56" , // 通訊服務(wù)端偵聽I(yíng)P
                        "port" : 18001 // 通訊服務(wù)端偵聽PORT
                } ,
                "mpm" : // 多進(jìn)程控制
                {
                        "mode" : "STATIC_WORKERPOOL" , /* FORK,STATIC_WORKERPOOL,DYNAMIC_WORKERPOOL */ // 服務(wù)模式:分別是 即時(shí)創(chuàng)建短工作進(jìn)程半哟、靜態(tài)工作進(jìn)程池酬滤、動(dòng)態(tài)工作進(jìn)程池
                        "max_count" : 10 , // 最大工作進(jìn)程數(shù)量 或 靜態(tài)保持工作進(jìn)程數(shù)量
                        "DYNAMIC_WORKERPOOL" :
                        {
                                "min_idle_count" : 1 , // 最小空閑狀態(tài)工作進(jìn)程數(shù)量(動(dòng)態(tài)進(jìn)程池時(shí)有效)
                                "max_idle_count" : 5 , // 最大空閑狀態(tài)工作進(jìn)程數(shù)量(動(dòng)態(tài)進(jìn)程池時(shí)有效)
                                "create_interval" : 1 , // 每調(diào)整周期最大創(chuàng)建工作進(jìn)程數(shù)量(動(dòng)態(tài)進(jìn)程池時(shí)有效)
                                "destroy_interval" : 10 , // 每調(diào)整周期最大銷毀工作進(jìn)程數(shù)量(動(dòng)態(tài)進(jìn)程池時(shí)有效)
                                "max_process_count" : 10000 // 每個(gè)工作進(jìn)程處理多少交易后自動(dòng)重啟,以釋放應(yīng)用泄露的系統(tǒng)資源寓涨,保持工作進(jìn)程健康
                        }
                } ,
                "security" : // 安全控制
                {
                        "sign_flag" : 1 , // 與客戶端握手時(shí)盯串,建議雙方業(yè)務(wù)報(bào)文是否簽名
                        "compress_flag" : 1 , // 與客戶端握手時(shí),建議雙方業(yè)務(wù)報(bào)文是否壓縮
                        "encrypt_flag" : 1 // 與客戶端握手時(shí),建議雙方業(yè)務(wù)報(bào)文是否加密 
                } ,
                "app" : // 應(yīng)用包選項(xiàng)
                {
                        "max_so_cache_count" : 1000 // 應(yīng)用包打開句柄緩存池最大緩存數(shù)量,采用LRU踢出使用最少的應(yīng)用包打開句柄緩存
                } ,
                "log" : // 日志配置
                {
                        "iblog_server" : "" ,
                        "event_output" : "file::log/event.log" ,
                        "main_output" : "file::log/ibas_158.1.0.56-18001_main.log" ,
                        "main_loglevel" : DEBUG ,
                        "monitor_output" : "file::log/ibas_158.1.0.56-18001_monitor.log" ,
                        "monitor_loglevel" : INFO ,
                        "worker_output" : "file::log/ibas_158.1.0.56-18001_worker_%d.log" ,
                        "worker_loglevel" : INFO ,
                        "app_output" : "file::log/app_%s.log" ,
                        "app_loglevel" : INFO
                }
        } ,

        "ibma" :
        {
                "config_filename" : "ibma.conf" // 本地注冊(cè)代理主配置文件沃饶,用于連接配置共享內(nèi)存
        }
}

啟動(dòng)通訊服務(wù)端平臺(tái)

$ ibas.sh start
ibas start ok
ecif   9554     1  0 16:51 pts/16   00:00:00 ibas -f ibas.conf -a start
ecif   9869 9554  0 16:51 pts/16   00:00:00 ibas -f ibas.conf -a start
ecif   9871 9554  0 16:51 pts/16   00:00:00 ibas -f ibas.conf -a start
ecif   9886 9554  0 16:51 pts/16   00:00:00 ibas -f ibas.conf -a start
...

通訊服務(wù)端平臺(tái)由一個(gè)管理進(jìn)程(父)和一組工作進(jìn)程(子)組成沙热,管理進(jìn)程日志文件是log/ibas_monitor.log,工作進(jìn)程日志文件是log/ibas_worker_(數(shù)字).log

想要停止通訊服務(wù)端平臺(tái),只要向管理進(jìn)程發(fā)送TERM信號(hào)即可,也可用單實(shí)例管理腳本ibas.sh stop年栓。

1.2. 部署應(yīng)用

(以ecif@158.1.0.56:18001為例)

1.2.1. 新增應(yīng)用

上傳應(yīng)用包

$ scp ABCD0001.so ibms@158.1.0.54:~/so

新增交易碼配置

$ ibms -a add_app --app ABCD0001 --desc "交易中文描述" --bin ABCD0001.so --timeout 60
OK

timeout是客戶端通訊超時(shí)(單位:秒),timeout2是服務(wù)端應(yīng)用超時(shí)(單位:秒)薄霜,如果不設(shè)置的話則由timeout乘以1.5默認(rèn)計(jì)算某抓。--server-node (server_node)是缺省服務(wù)端節(jié)點(diǎn)名用于配置代替代碼指定。

新增或更新項(xiàng)目信息

如果新增項(xiàng)目

$ ibms -a add_project --project "(項(xiàng)目英文名)" --server-nodes "ECIF" --client-nodes "CORE" --apps "ABCD0001"

如果項(xiàng)目已存在

$ ibms -a set_project --project "(項(xiàng)目英文名)" --server-nodes "ECIF" --client-nodes "CORE" --apps "(已有交易碼集) ABCD0001"

提交改動(dòng)惰瓜,自動(dòng)推導(dǎo)出所有關(guān)聯(lián)節(jié)點(diǎn)并下發(fā)

$ ibms -a distribute_config

保存配置到配置文件

$ ibms -a save_config

1.2.2. 更新應(yīng)用(立即自動(dòng)推導(dǎo)下發(fā)模式)

如果注冊(cè)中心啟用了立即自動(dòng)推導(dǎo)下發(fā)模式否副,即配置misc/auto_download_bin_enable 1

上傳應(yīng)用包

$ scp ABCD0002.so ibms@158.1.0.54:~/so

注冊(cè)中心監(jiān)控$HOME/so/目錄鸵熟,一旦有應(yīng)用包新增或發(fā)生變動(dòng)則立即推導(dǎo)出關(guān)聯(lián)節(jié)點(diǎn)并下發(fā)副编。如果找不到交易碼配置則忽略。

1.2.3. 更新應(yīng)用(批量自動(dòng)推導(dǎo)下發(fā)模式)

上傳應(yīng)用包

$ scp ABCD0002.so ibms@158.1.0.54:~/so

設(shè)置交易碼更新標(biāo)志

$ ibms -a update_app --app "ABCD0002"

確認(rèn)自動(dòng)推導(dǎo)結(jié)果變動(dòng)了哪些節(jié)點(diǎn)

$ ibms -s cnodes_changed

批量下發(fā)配置和應(yīng)用包

$ ibms -a distribute_config

1.2.4. 刪除應(yīng)用

刪除交易碼信息

$ ibms -a remove_app --app ABCD0003

確認(rèn)自動(dòng)推導(dǎo)結(jié)果變動(dòng)了哪些節(jié)點(diǎn)

$ ibms -s cnodes_changed

批量下發(fā)配置和應(yīng)用包

$ ibms -a distribute_config

1.3. 注冊(cè)節(jié)點(diǎn)其它管理

1.3.1. 注冊(cè)中心

重啟注冊(cè)中心

$ ibms.sh restart

列表所有通訊節(jié)點(diǎn)配置

$ ibms -s nodes

列表所有交易碼配置

$ ibms -s apps

列表所有項(xiàng)目配置

$ ibms -s projects

列表已連接注冊(cè)代理和通訊服務(wù)端平臺(tái)會(huì)話

$ ibms -s sessions

強(qiáng)制下發(fā)配置和應(yīng)用包某一通訊節(jié)點(diǎn)主機(jī)集群

當(dāng)自動(dòng)推導(dǎo)有問題時(shí),可使用指定節(jié)點(diǎn)名的強(qiáng)制下發(fā)痹届。

$ ibms -a download_config --node (node)

一鍵自動(dòng)安裝通訊節(jié)點(diǎn)擴(kuò)大集群

(正在研發(fā)中)

一鍵自動(dòng)安裝通訊節(jié)點(diǎn)縮小集群

(正在研發(fā)中)

1.3.2. 通訊節(jié)點(diǎn)集群管理

集群管理配置文件在$HOME/etc/ibp_cluster.conf呻待,每行格式為(節(jié)點(diǎn)名) (IP) (系統(tǒng)用戶名)

下發(fā)最新版安裝包到集群

$ ibp_distribute.sh (ibp-Linux-x.x.x.x-bin.tar.gz)

集群解開最新版安裝包

$ ibma_cluster.sh ALL execmd ibp_unpack.sh (ibp-Linux-x.x.x.x-bin.tar.gz)

重啟集群中所有注冊(cè)代理

$ ibma_cluster.sh ALL restart

重啟集群中指定通訊節(jié)點(diǎn)的注冊(cè)代理

$ ibma_cluster.sh (node) restart

優(yōu)雅重啟集群中所有通訊服務(wù)端平臺(tái)

$ ibas_cluster.sh ALL restart_graceful

優(yōu)雅重啟集群中指定通訊節(jié)點(diǎn)的服務(wù)端平臺(tái)

$ ibas_cluster.sh (node) restart_graceful

1.4. 編譯配置文件

當(dāng)注冊(cè)中心的通訊節(jié)點(diǎn)等配置文件很大時(shí)队腐,啟動(dòng)加載將耗費(fèi)很多解析時(shí)間蚕捉,IBP引入編譯配置文件機(jī)制,預(yù)先讀入解析配置柴淘,吐出內(nèi)存映像到二進(jìn)制文件迫淹,再啟動(dòng)裝載配置時(shí)發(fā)現(xiàn)有預(yù)編譯二進(jìn)制配置文件則從其裝載,大大加快裝載性能为严,縮短啟動(dòng)時(shí)間敛熬。

以下命令預(yù)先讀入解析配置,吐出內(nèi)存映像到二進(jìn)制文件

$ ibms -a build_config

1.5. 用戶自定義KV配置

每個(gè)通訊節(jié)點(diǎn)里的應(yīng)用可能需要自己的配置第股,比如連接硬件加密機(jī)型號(hào)应民、IP、PORT夕吻,IBP在集群配置中加入了通訊節(jié)點(diǎn)KV配置機(jī)制诲锹,替代應(yīng)用自己管理篇日志的一大套麻煩事兒(如重載),只需在注冊(cè)中心配置通訊節(jié)點(diǎn)下的KV配置涉馅,隨著集群配置一起下發(fā)給通訊節(jié)點(diǎn)归园,通訊節(jié)點(diǎn)里的應(yīng)用通過注冊(cè)代理API即可直接訪問這些配置。

$ ibms -a set_node_kv --node (node) --key (key) --value (value)

確認(rèn)自動(dòng)推導(dǎo)結(jié)果變動(dòng)了哪些節(jié)點(diǎn)

$ ibms -s cnodes_changed

批量下發(fā)配置和應(yīng)用包

$ ibms -a distribute_config

2. 可執(zhí)行程序參考

2.1. 注冊(cè)中心主程序

不帶任何參數(shù)執(zhí)行ibms可得到所有參數(shù)列表

SAGE : ibms -f ibms.conf -a start
                          -s sessions
                          -s nodes
                          -a add_node --node (node) [ --invalid (invalid) ] [ --key-exp (key_exp) ]
                          -a set_node --node (node) [ --invalid (invalid) ] [ --key-exp (key_exp) ]
                          -a remove_node --node (node)
                          -a add_node_host --node (node) --ip (ip) --port (port)
                          -a remove_node_host --node (node) --ip (ip) --port (port)
                          -s apps
                          -a add_app --app (app) --desc (desc) --bin (bin) --timeout (timeout) [ --timeout2 (timeout2) ] [ --invalid (invalid) ] [ --server-node (server_node) ]
                          -a set_app --app (app) --desc (desc) --bin (bin) --timeout (timeout) [ --timeout2 (timeout2) ] [ --invalid (invalid) ] [ --server-node (server_node) ]
                          -a update_app --app (app)
                          -a remove_app --app (app)
                          -s projects
                          -a add_project --project (project) --server-nodes (server_nodes) --client-nodes (client_nodes) --apps (apps)
                          -a set_project --project (project) --server-nodes (server_nodes) --client-nodes (client_nodes) --apps (apps)
                          -a remove_project --project (project)
                          -a save_config
                          -s nodes_kv
                          -a add_node_kv --node (node) --key (key) --value (value)
                          -a remove_node_kv --node (node) --key (key) --value (value)
                          -a set_node_kv --node (node) --key (key) --value (value)
                          -a distribute_config
                          -a download_config --node (node)
                          -s nodes_changed
                          -a build_config
                          -a init
kill -USR1 (pid) : reload log output
kill -USR2 (pid) : reload nodes,apps,projects config
  • -f 指定主配置文件名
  • -a start 啟動(dòng)
  • -s sessions 顯示所有已建立連接(包含ibms client稚矿、ibma)
  • -s nodes 顯示所有已配置通訊節(jié)點(diǎn)信息
  • -a add_node 新增通訊節(jié)點(diǎn)信息
  • -a set_node 修改通訊節(jié)點(diǎn)信息
  • -a remove_node 刪除通訊節(jié)點(diǎn)信息
  • -a add_node_host 新增通訊節(jié)點(diǎn)主機(jī)信息
  • -a remove_node_host 刪除通訊節(jié)點(diǎn)主機(jī)信息
  • -s apps 顯示所有已配置交易碼信息
  • -a add_app 新增交易碼信息
  • -a set_app 修改交易碼信息
  • -a remove_app 刪除交易碼信息
  • -s projects 顯示所有已配置項(xiàng)目信息
  • -a add_project 新增項(xiàng)目信息
  • -a set_project 修改項(xiàng)目信息
  • -a remove_project 刪除項(xiàng)目信息
  • -a save_config 保存配置信息到文件
  • -s nodes_kv 顯示節(jié)點(diǎn)KV信息
  • -a add_node_kv增加節(jié)點(diǎn)KV信息
  • -a remove_node_kv 刪除節(jié)點(diǎn)KV信息
  • -a set_node_kv 修改節(jié)點(diǎn)KV信息
  • -a distribute_config 全部下發(fā)配置
  • -a build_config 生成.bin
  • -s nodes_changed 顯示所有已修改配置涉及通訊節(jié)點(diǎn)列表
  • -a commit_config 下發(fā)所有已修改配置
  • -a download_config 強(qiáng)制下發(fā)指定通訊節(jié)點(diǎn)所有配置
  • -a init 初始化注冊(cè)中心配置文件
  • kill TERM (pid) 退出
  • kill -USR1 (pid) 重載日志配置
  • kill -USR2 (pid) 重載所有配置(未實(shí)現(xiàn))

2.2. 注冊(cè)代理主程序

不帶任何參數(shù)執(zhí)行ibma可得到所有參數(shù)列表

USAGE : ibma -f ibma.conf -a [ start | start_cleanly ]
                          -s this_node
                          -s [ nodes | apps | nodes_kv ]
                          -a init
kill -USR1 : reload log
kill -USR2 : stop with removing config space
  • -f 指定主配置文件名
  • -a start 啟動(dòng)
  • -a start_cleanly 干凈的啟動(dòng)(啟動(dòng)時(shí)清理所有存在的索引庸诱、配置共享內(nèi)存;慎用)
  • -s this_node顯示本通訊節(jié)點(diǎn)名
  • -s nodes 顯示本地配置共享內(nèi)的所有通訊節(jié)點(diǎn)信息
  • -s apps顯示本地配置共享內(nèi)的所有交易碼信息
  • -s nodes_kv顯示本地配置共享內(nèi)的所有key-value信息
  • -a init 初始化注冊(cè)代理配置文件
  • kill -TERM (pid) 退出
  • kill -USR1 (pid) 重載日志配置
  • kill -USR2 (pid) 干凈的退出(退出時(shí)清理所有索引盐捷、配置共享內(nèi)存偶翅;慎用)

2.3. 通訊服務(wù)端平臺(tái)主程序

不帶任何參數(shù)執(zhí)行ibas可得到所有參數(shù)列表

USAGE : ibas -f ibas.conf -a start
                          -s status
                          -s bbstat
                          -s bbdetail
                          -a init
  • -f 指定主配置文件名
  • -a start 啟動(dòng)
  • -s status 顯示服務(wù)端狀態(tài)
  • -s bbstat 顯示進(jìn)程池統(tǒng)計(jì)信息
  • -s bbdetail 顯示進(jìn)程池明細(xì)信息
  • -a init 初始化通訊服務(wù)端配置文件
  • kill TERM (pid) 退出
  • kill -USR1 (pid) 重載日志配置

2.4. 遠(yuǎn)程命令代理主程序

USAGE : ibcmd -a start
              --ip (ip) --port (port) -a execmd --cmd (cmd)
              --ip (ip) --port (port) -a putfile --file (file)
              --ip (ip) --port (port) -a getfile --file (file)
  • -a start 啟動(dòng)服務(wù)端
  • --ip (ip) --port (port) -a execmd --cmd (cmd) 作為客戶端連接服務(wù)端遠(yuǎn)程執(zhí)行命令,捕獲輸出
  • --ip (ip) --port (port) -a putfile --file (file) 作為客戶端連接服務(wù)端遠(yuǎn)程執(zhí)行命令碉渡,推送文件
  • --ip (ip) --port (port) -a getfile --file (file) 作為客戶端連接服務(wù)端遠(yuǎn)程執(zhí)行命令,拉取文件

2.5. 日志收集器

不帶任何參數(shù)執(zhí)行l(wèi)ogpipe可得到所有參數(shù)列表

USAGE : logpipe -v
        logpipe -f (config_file) [ --no-daemon ] [ --start-once-for-env "(key) (value)" ]
  • -v 顯示當(dāng)前版本號(hào)
  • -f 指定配置文件
  • --no-daemon 不轉(zhuǎn)換為守護(hù)進(jìn)程
  • --start-once-for-env "(key) (value)" 設(shè)置為環(huán)境變量傳遞給插件母剥,啟動(dòng)后只傳遞一次滞诺,如插件自然重啟或崩潰后重啟初始化時(shí)不會(huì)收到該環(huán)境變量,特別用于logpipe-input-file插件啟動(dòng)時(shí)全量采集一次环疼。

2.6. 模擬發(fā)起IBP交易測(cè)試程序

不帶任何參數(shù)執(zhí)行ibpsend可得到所有參數(shù)列表

USAGE : ibpsend node app req_msg_filename [ req_file_filename1 [ req_file_filename2 [ req_file_filename3 [ req_file_filename4 ] ] ] ]

NOTE : req_file_filename format "(file_id)_(filename).(ext)"
  • node: 目標(biāo)節(jié)點(diǎn)
  • app: 請(qǐng)求交易碼
  • req_msg_filename: 請(qǐng)求文件名(請(qǐng)求文件必須存在)
  • req_file_filename1:請(qǐng)求文件1(可選)
  • req_file_filename2:請(qǐng)求文件2(可選)
  • req_file_filename3:請(qǐng)求文件3(可選)
  • req_file_filename4:請(qǐng)求文件4(可選)

3. 腳本參考

3.1. 注冊(cè)中心管理腳本

不帶任何參數(shù)執(zhí)行ibms.sh可得到所有參數(shù)列表

USAGE : ibms.sh [ status | start | stop | kill | restart | reload_log | show_nodes | show_apps | show_projects ]
  • status 查詢狀態(tài)
  • start 啟動(dòng)
  • stop 停止
  • kill 強(qiáng)制停止
  • restart 重啟
  • reload_log 重載日志配置
  • show_nodes顯示所有已配置通訊節(jié)點(diǎn)信息
  • show_apps顯示所有已配置交易碼信息
  • show_projects顯示所有已配置項(xiàng)目信息

3.2. 注冊(cè)代理管理腳本

不帶任何參數(shù)執(zhí)行可得到所有參數(shù)列表

USAGE : ibma.sh [ status | start | start_cleanly | stop | stop_cleanly | kill | restart | reload_log | this_node | nodes | apps ]
  • status 查詢狀態(tài)
  • start 啟動(dòng)
  • start_cleanly 干凈的啟動(dòng)习霹,會(huì)清理殘存的索引共享內(nèi)存和配置共享內(nèi)存
  • stop 停止
  • stop_cleanly 干凈的停止,會(huì)清理殘存的索引共享內(nèi)存和配置共享內(nèi)存
  • kill 強(qiáng)制停止
  • restart 重啟
  • reload_log 重載日志配置
  • this_node顯示本通訊節(jié)點(diǎn)名

3.3. 注冊(cè)代理集群管理腳本

不帶任何參數(shù)執(zhí)行可得到所有參數(shù)列表

USAGE : ibma_cluster.do [ (node) | ALL ] [ start | start_cleanly | stop | stop_cleanly | kill | status | cmd (cmd) ]
  • start 啟動(dòng)集群
  • start_cleanly 干凈的啟動(dòng)集群炫隶,會(huì)清理殘存的索引共享內(nèi)存和配置共享內(nèi)存
  • stop 停止集群
  • stop_cleanly 干凈的停止集群淋叶,會(huì)清理殘存的索引共享內(nèi)存和配置共享內(nèi)存
  • kill 強(qiáng)制停止集群
  • status 查詢集群狀態(tài)
  • cmd (cmd) 執(zhí)行其它自定義命令

3.4. 通訊服務(wù)端平臺(tái)管理腳本

不帶任何參數(shù)執(zhí)行可得到所有參數(shù)列表

USAGE : ibas.sh [ status | start | stop | kill | restart | restart_graceful | reload_log ]
  • status 查詢狀態(tài)
  • start 啟動(dòng)
  • stop 停止
  • kill 強(qiáng)制停止
  • restart 重啟
  • restart_graceful 優(yōu)雅重啟
  • reload_log 重載日志配置

3.5. 通訊服務(wù)端平臺(tái)集群管理腳本

不帶任何參數(shù)執(zhí)行可得到所有參數(shù)列表

USAGE : ibas_cluster.do [ (node) | ALL ] [ start | stop | kill | status | cmd (cmd) ]
  • start 啟動(dòng)集群
  • stop 停止集群
  • kill 強(qiáng)制停止集群
  • status 查詢集群狀態(tài)
  • cmd (cmd) 執(zhí)行其它自定義命令

3.6. 版本打包腳本

必須在$HOME/執(zhí)行

打執(zhí)行包

$ ibp_pack_bin.sh

打開發(fā)包

$ ibp_pack_dev.sh

3.7. 集群分發(fā)腳本

$ ibp_distribute.sh (當(dāng)前目錄里的文件名)

3.8. 版本解包腳本

解包本機(jī)當(dāng)前目錄里的壓縮包(可執(zhí)行文件會(huì)先刪除目標(biāo)文件再解包)。

$ ibp_unpack.sh (當(dāng)前目錄里的文件名)

一般與集群管理腳本配合使用伪阶。

3.9. TM函數(shù)耗時(shí)日志解釋腳本

USAGE : ibp_perfmstat.sh [ @FILENAME | (string) ]

3.10. 日志清理腳本

刪除$HOME/log/里的所有日志文件*.log*煞檩。

USAGE : rmlog

3.11. 日志歸檔腳本

移動(dòng)打包$HOME/log/*.log*$HOME/logbak/里处嫌。

USAGE : baklog

3.12. 刪除日志歸檔腳本

按保留天數(shù)清理$HOME/logbak/里的日志備份包。

USAGE : rmlogbak [ days ]
  • days 保留天數(shù)

一般與crontab配合使用斟湃。

3.13. 日志解包腳本

USAGE : gunziplogbak [ .gz.tar patten ]
  • .gz.tar 日志備份包
  • patten 文件名匹配字符串
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末熏迹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凝赛,更是在濱河造成了極大的恐慌注暗,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墓猎,死亡現(xiàn)場(chǎng)離奇詭異捆昏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)毙沾,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門骗卜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人搀军,你說我怎么就攤上這事膨俐。” “怎么了罩句?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵焚刺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我门烂,道長(zhǎng)乳愉,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任屯远,我火速辦了婚禮蔓姚,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘慨丐。我一直安慰自己坡脐,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布房揭。 她就那樣靜靜地躺著备闲,像睡著了一般。 火紅的嫁衣襯著肌膚如雪捅暴。 梳的紋絲不亂的頭發(fā)上恬砂,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音蓬痒,去河邊找鬼泻骤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狱掂。 我是一名探鬼主播演痒,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼符欠!你這毒婦竟也來了嫡霞?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤希柿,失蹤者是張志新(化名)和其女友劉穎诊沪,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體曾撤,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡端姚,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挤悉。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片渐裸。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖装悲,靈堂內(nèi)的尸體忽然破棺而出昏鹃,到底是詐尸還是另有隱情,我是刑警寧澤诀诊,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布洞渤,位于F島的核電站,受9級(jí)特大地震影響属瓣,放射性物質(zhì)發(fā)生泄漏载迄。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一抡蛙、第九天 我趴在偏房一處隱蔽的房頂上張望护昧。 院中可真熱鬧,春花似錦粗截、人聲如沸惋耙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怠晴。三九已至,卻和暖如春浴捆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稿械。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工选泻, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓页眯,卻偏偏與公主長(zhǎng)得像梯捕,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子窝撵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容