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

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

1. 安裝部署

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

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

(以下均為手工安裝部署流程,正在研發(fā)一鍵自動安裝通訊節(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 |
| 注冊節(jié)點(diǎn) | IBMS | 注冊中心 | ibms | 158.1.0.54:16001 |
| 通訊節(jié)點(diǎn) | ECIF | ECIF業(yè)務(wù)平臺 | ecif | 158.1.0.56:18001 |
| 通訊節(jié)點(diǎn) | ECIF | ECIF業(yè)務(wù)平臺 | ecif | 158.1.0.57:18001 |
| 通訊節(jié)點(diǎn) | ECIF | ECIF業(yè)務(wù)平臺 | 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 }
        ]
}

啟動日志歸集端

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

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

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

設(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. 部署注冊節(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)建目錄、自動生成缺省配置文件)

$ 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是注冊中心主配置文件,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 }
        ]
}

啟動日志采集端

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

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

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

設(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. 安裝注冊中心

修改注冊中心配置文件

{
    "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 , // 老密鑰失效時間(單位:秒)
            "new_key_enable_elapse" : 60 // 新密鑰生效時間(單位:秒)
        } ,

        "misc" : // 雜項(xiàng)配置
        {
            "auto_download_bin_enable" : 0 , // 是否啟用立即自動推導(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í)時日志收集
            "event_output" : "file::log/event.log" , // 事件日志文件名
            "main_output" : "file::log/ibms_main.log" , // 啟動初始化日志文件名
            "main_loglevel" : DEBUG , // 啟動初始化日志等級
            "monitor_output" : "file::log/ibms_monitor.log" , // 注冊中心父進(jìn)程日志文件名
            "monitor_loglevel" : INFO , // 注冊中心父進(jìn)程日志等級
            "worker_output" : "file::log/ibms_worker.log" , // 注冊中心子進(jìn)程日志文件名
            "worker_loglevel" : INFO // 注冊中心子進(jìn)程日志等級
        }
    }
}

啟動注冊中心

$ 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

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

想要停止注冊中心,只要向管理進(jìn)程發(fā)送TERM信號即可,也可用單實(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)建目錄、自動生成缺省配置文件)

$ 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是注冊中心主配置文件,配置文件格式為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 }
        ]
}

啟動日志采集端

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

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

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

設(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. 安裝注冊代理

修改注冊代理配置文件

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

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

                "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ù)端超時時間(單位:秒)
                "retry_connect_timeval" : 60 , // 當(dāng)連接失敗后暫禁時間段(單位:秒)
        } ,

        "ibms" :
        {
                "server" :
                {
                        "ip" : "158.1.0.54" , // 注冊中心IP
                        "port" : 16001 // 注冊中心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í)行。

在注冊中心注冊該節(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)啟動注冊代理

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

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

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

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

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

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

初始化通訊服務(wù)端平臺環(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ù)端平臺主配置文件,格式為JSON。

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

{
        "ibas" :
        {
                "server" : // 服務(wù)端偵聽地址
                {
                        "ip" : "158.1.0.56" , // 通訊服務(wù)端偵聽IP
                        "port" : 18001 // 通訊服務(wù)端偵聽PORT
                } ,
                "mpm" : // 多進(jìn)程控制
                {
                        "mode" : "STATIC_WORKERPOOL" , /* FORK,STATIC_WORKERPOOL,DYNAMIC_WORKERPOOL */ // 服務(wù)模式:分別是 即時創(chuàng)建短工作進(jìn)程、靜態(tài)工作進(jìn)程池、動態(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ù)量(動態(tài)進(jìn)程池時有效)
                                "max_idle_count" : 5 , // 最大空閑狀態(tài)工作進(jìn)程數(shù)量(動態(tài)進(jìn)程池時有效)
                                "create_interval" : 1 , // 每調(diào)整周期最大創(chuàng)建工作進(jìn)程數(shù)量(動態(tài)進(jìn)程池時有效)
                                "destroy_interval" : 10 , // 每調(diào)整周期最大銷毀工作進(jìn)程數(shù)量(動態(tài)進(jìn)程池時有效)
                                "max_process_count" : 10000 // 每個工作進(jìn)程處理多少交易后自動重啟,以釋放應(yīng)用泄露的系統(tǒng)資源,保持工作進(jìn)程健康
                        }
                } ,
                "security" : // 安全控制
                {
                        "sign_flag" : 1 , // 與客戶端握手時,建議雙方業(yè)務(wù)報文是否簽名
                        "compress_flag" : 1 , // 與客戶端握手時,建議雙方業(yè)務(wù)報文是否壓縮
                        "encrypt_flag" : 1 // 與客戶端握手時,建議雙方業(yè)務(wù)報文是否加密 
                } ,
                "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" // 本地注冊代理主配置文件,用于連接配置共享內(nèi)存
        }
}

啟動通訊服務(wù)端平臺

$ 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ù)端平臺由一個管理進(jìn)程(父)和一組工作進(jìn)程(子)組成,管理進(jìn)程日志文件是log/ibas_monitor.log,工作進(jìn)程日志文件是log/ibas_worker_(數(shù)字).log。

想要停止通訊服務(wù)端平臺,只要向管理進(jìn)程發(fā)送TERM信號即可,也可用單實(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是客戶端通訊超時(單位:秒),timeout2是服務(wù)端應(yīng)用超時(單位:秒),如果不設(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ǎo)出所有關(guān)聯(lián)節(jié)點(diǎn)并下發(fā)

$ ibms -a distribute_config

保存配置到配置文件

$ ibms -a save_config

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

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

上傳應(yīng)用包

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

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

1.2.3. 更新應(yī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ǎo)結(jié)果變動了哪些節(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ǎo)結(jié)果變動了哪些節(jié)點(diǎn)

$ ibms -s cnodes_changed

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

$ ibms -a distribute_config

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

1.3.1. 注冊中心

重啟注冊中心

$ ibms.sh restart

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

$ ibms -s nodes

列表所有交易碼配置

$ ibms -s apps

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

$ ibms -s projects

列表已連接注冊代理和通訊服務(wù)端平臺會話

$ ibms -s sessions

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

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

$ ibms -a download_config --node (node)

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

(正在研發(fā)中)

一鍵自動安裝通訊節(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)

重啟集群中所有注冊代理

$ ibma_cluster.sh ALL restart

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

$ ibma_cluster.sh (node) restart

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

$ ibas_cluster.sh ALL restart_graceful

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

$ ibas_cluster.sh (node) restart_graceful

1.4. 編譯配置文件

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

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

$ ibms -a build_config

1.5. 用戶自定義KV配置

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

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

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

$ ibms -s cnodes_changed

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

$ ibms -a distribute_config

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

2.1. 注冊中心主程序

不帶任何參數(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 啟動
  • -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 初始化注冊中心配置文件
  • kill TERM (pid) 退出
  • kill -USR1 (pid) 重載日志配置
  • kill -USR2 (pid) 重載所有配置(未實(shí)現(xiàn))

2.2. 注冊代理主程序

不帶任何參數(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 啟動
  • -a start_cleanly 干凈的啟動(啟動時清理所有存在的索引、配置共享內(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 初始化注冊代理配置文件
  • kill -TERM (pid) 退出
  • kill -USR1 (pid) 重載日志配置
  • kill -USR2 (pid) 干凈的退出(退出時清理所有索引、配置共享內(nèi)存;慎用)

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

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

USAGE : ibas -f ibas.conf -a start
                          -s status
                          -s bbstat
                          -s bbdetail
                          -a init
  • -f 指定主配置文件名
  • -a start 啟動
  • -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 啟動服務(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)前版本號
  • -f 指定配置文件
  • --no-daemon 不轉(zhuǎn)換為守護(hù)進(jìn)程
  • --start-once-for-env "(key) (value)" 設(shè)置為環(huán)境變量傳遞給插件,啟動后只傳遞一次,如插件自然重啟或崩潰后重啟初始化時不會收到該環(huán)境變量,特別用于logpipe-input-file插件啟動時全量采集一次。

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

不帶任何參數(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: 請求交易碼
  • req_msg_filename: 請求文件名(請求文件必須存在)
  • req_file_filename1:請求文件1(可選)
  • req_file_filename2:請求文件2(可選)
  • req_file_filename3:請求文件3(可選)
  • req_file_filename4:請求文件4(可選)

3. 腳本參考

3.1. 注冊中心管理腳本

不帶任何參數(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 啟動
  • stop 停止
  • kill 強(qiáng)制停止
  • restart 重啟
  • reload_log 重載日志配置
  • show_nodes顯示所有已配置通訊節(jié)點(diǎn)信息
  • show_apps顯示所有已配置交易碼信息
  • show_projects顯示所有已配置項(xiàng)目信息

3.2. 注冊代理管理腳本

不帶任何參數(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 啟動
  • start_cleanly 干凈的啟動,會清理殘存的索引共享內(nèi)存和配置共享內(nèi)存
  • stop 停止
  • stop_cleanly 干凈的停止,會清理殘存的索引共享內(nèi)存和配置共享內(nèi)存
  • kill 強(qiáng)制停止
  • restart 重啟
  • reload_log 重載日志配置
  • this_node顯示本通訊節(jié)點(diǎn)名

3.3. 注冊代理集群管理腳本

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

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

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

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

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

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

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

USAGE : ibas_cluster.do [ (node) | ALL ] [ start | stop | kill | status | cmd (cmd) ]
  • start 啟動集群
  • 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í)行文件會先刪除目標(biāo)文件再解包)。

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

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

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

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

3.10. 日志清理腳本

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

USAGE : rmlog

3.11. 日志歸檔腳本

移動打包$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)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容