package ipc
|
|
import (
|
"encoding/json"
|
"errors"
|
"os"
|
"strconv"
|
|
"serfNode/config"
|
"serfNode/logger"
|
)
|
|
const (
|
configRequestUrl = "http://127.0.0.1:1880/config"
|
)
|
|
type ConfigResponse struct {
|
NodeName string `json:"nodename"`
|
VirtualIp string `json:"virtualip"`
|
NsqServerIp string `json:"nsqserverip"`
|
NsqServerPort string `json:"nsqserverport"`
|
EthDevice string `json:"ethdevice"`
|
}
|
|
// 响应的数据格式
|
/*
|
[
|
{
|
"nodename": "7876",
|
"virtualip": "7686",
|
"nsqserverip": "6786",
|
"nsqserverport": "67867",
|
"ethdevice": ""
|
}
|
]
|
*/
|
func GetConfigFromNodeRed() error {
|
config.SerfConf = &config.SerfConfig{
|
ClusterName: "aps-client-cluster",
|
NodeName: strconv.Itoa(os.Getpid()),
|
BindAddr: "0.0.0.0:5000",
|
RPCAddr: "0.0.0.0:7373",
|
RPCPort: 7373,
|
AuthKey: "cqmyg,ysdss",
|
}
|
|
body, err := HttpPost(configRequestUrl, nil)
|
|
var response []ConfigResponse
|
|
err = json.Unmarshal(body, &response)
|
if err != nil {
|
logger.Warn(err.Error())
|
} else {
|
if len(response) > 0 {
|
if response[0].NodeName == "" {
|
err = errors.New("node-red 返回节点名称为空")
|
return err
|
}
|
|
// 修改节点id
|
config.SerfConf.NodeName = response[0].NodeName
|
|
config.VRRPConf.VirtualIp = response[0].VirtualIp
|
|
config.NsqConf.ServerAddr = response[0].NsqServerIp + ":" + response[0].NsqServerPort
|
} else {
|
err = errors.New("node-red 响应内容为空")
|
}
|
}
|
|
return err
|
}
|