Datasophon1.2.1集成Zookeeper3.9.3
Zookeeper 下载地址: https://archive.apache.org/dist/zookeeper/zookeeper-3.9.3/
下载Zookeeper
wget -P /opt/datasophon/DDP/packages https://archive.apache.org/dist/zookeeper/zookeeper-3.9.3/apache-zookeeper-3.9.3-bin.tar.gz
构建压缩包
解压缩
cd /opt/datasophon/DDP/packages
tar -zxvf apache-zookeeper-3.9.3-bin.tar.gz
创建logs文件夹
# 创建logs文件夹
mkdir -p /opt/datasophon/DDP/packages/apache-zookeeper-3.9.3-bin/logs
创建jmx文件夹
# 创建jmx文件夹
# mkdir -p /opt/datasophon/DDP/packages/apache-zookeeper-3.9.3-bin/jmx
tar -zxvf /opt/datasophon/DDP/packages/zookeeper-3.5.10.tar.gz
# 拷贝监听jar包-这里可以选择将原Zookeeper3.5.10版本的压缩包进行解压得到
# jxm文件夹下包含jmx_prometheus_javaagent-0.16.1.jar和zookeeper.yaml
cp -r /opt/datasophon/DDP/packages/zookeeper-3.5.10/jmx /opt/datasophon/DDP/packages/apache-zookeeper-3.9.3-bin/
# zookeeper.yaml文件内容如下:
vi /opt/datasophon/DDP/packages/apache-zookeeper-3.9.3-bin/jmx/zookeeper.yaml
rules:
# replicated Zookeeper
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+)><>(\\w+)"
name: "zookeeper_$2"
type: GAUGE
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+)><>(\\w+)"
name: "zookeeper_$3"
type: GAUGE
labels:
replicaId: "$2"
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+)><>(Packets\\w+)"
name: "zookeeper_$4"
type: COUNTER
labels:
replicaId: "$2"
memberType: "$3"
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+)><>(\\w+)"
name: "zookeeper_$4"
type: GAUGE
labels:
replicaId: "$2"
memberType: "$3"
- pattern: "org.apache.ZooKeeperService<name0=ReplicatedServer_id(\\d+), name1=replica.(\\d+), name2=(\\w+), name3=(\\w+)><>(\\w+)"
name: "zookeeper_$4_$5"
type: GAUGE
labels:
replicaId: "$2"
memberType: "$3"
# standalone Zookeeper
- pattern: "org.apache.ZooKeeperService<name0=StandaloneServer_port(\\d+)><>(\\w+)"
type: GAUGE
name: "zookeeper_$2"
- pattern: "org.apache.ZooKeeperService<name0=StandaloneServer_port(\\d+), name1=InMemoryDataTree><>(\\w+)"
type: GAUGE
name: "zookeeper_$2"
准备zkStatus.sh状态文件
vi /opt/datasophon/DDP/packages/apache-zookeeper-3.9.3-bin/bin/zkStatus.sh
#!/bin/bash
usage="Usage: start.sh (start|stop|restart) <command> "
# if no args specified, show usage
if [ $# -le 1 ]; then
echo $usage
exit 1
fi
startStop=$1
shift
command=$1
SH_DIR=`dirname $0`
status(){
echo "start check $command status"
pid=`jps | grep -iw QuorumPeerMain | grep -v grep | awk '{print $1}'`
echo "pid is : $pid"
kill -0 $pid
if [ $? -eq 0 ]
then
echo "$command is running "
else
echo "$command is not running"
exit 1
fi
}
case $startStop in
(status)
status
;;
(*)
echo $usage
exit 1
;;
esac
echo "End $startStop $command."
# 授权-给可执行权限
chmod 755 /opt/datasophon/DDP/packages/apache-zookeeper-3.9.3-bin/bin/zkStatus.sh
修改zkServer.sh脚本文件
# 大约在164行
nohup "$JAVA" $ZOO_DATADIR_AUTOCREATE "-javaagent:$ZOOBINDIR/../jmx/jmx_prometheus_javaagent-0.16.1.jar=2191:$ZOOBINDIR/../jmx/zookeeper.yaml" "-Dzookeeper.log.dir=${ZOO_LOG_DIR}" \
重新构建压缩包
cd /opt/datasophon/DDP/packages
# 这里注意一定要将文件包重命名成zookeeper-{version},否则后面安装会报错。
# 不进行重命名也可以,需要在service_ddl.json中指定decompressPackageName的包名
mv apache-zookeeper-3.9.3-bin zookeeper-3.9.3
tar czf zookeeper-3.9.3.tar.gz zookeeper-3.9.3
md5sum zookeeper-3.9.3.tar.gz | awk '{print $1}' > zookeeper-3.9.3.tar.gz.md5
修改配置文件service_ddl.json
进入datasophon-manager-1.2.1中
vi /opt/datasophon/datasophon-manager-1.2.1/conf/meta/DDP-1.2.1/ZOOKEEPER/service_ddl.json
{
"name": "ZOOKEEPER",
"label": "ZooKeeper",
"description": "分布式协调系统",
"version": "3.9.3",
"sortNum": 3,
"dependencies":[],
"packageName": "zookeeper-3.9.3.tar.gz",
"decompressPackageName": "zookeeper-3.9.3",
"roles": [
{
"name": "ZkServer",
"label": "ZkServer",
"roleType": "master",
"cardinality": "1+",
"logFile": "logs/zookeeper-root-server-${host}.out",
"jmxPort": 2191,
"startRunner": {
"timeout": "60",
"program": "bin/zkServer.sh",
"args": [
"start"
]
},
"stopRunner": {
"timeout": "600",
"program": "bin/zkServer.sh",
"args": [
"stop"
]
},
"statusRunner": {
"timeout": "60",
"program": "bin/zkStatus.sh",
"args": [
"status",
"zookeeper"
]
},
"restartRunner": {
"timeout": "60",
"program": "bin/zkServer.sh",
"args": [
"restart"
]
}
}
],
"configWriter": {
"generators": [
{
"filename": "zoo.cfg",
"configFormat": "properties",
"outputDirectory": "conf",
"includeParams": [
"clientPort",
"dataDir",
"dataLogDir",
"tickTime",
"initLimit",
"syncLimit",
"server.1",
"server.2",
"server.3",
"server.4",
"server.5",
"authProvider.1",
"jaasLoginRenew",
"skipACL",
"custom.zoo.cfg"
]
},
{
"filename": "java.env",
"configFormat": "custom",
"outputDirectory": "conf",
"templateName": "zk-env.ftl",
"includeParams": [
"zkHeapSize",
"zkSecurity"
]
},
{
"filename": "jaas.conf",
"configFormat": "custom",
"outputDirectory": "conf",
"templateName": "jaas.ftl",
"includeParams": [
"hostname",
"zkRealm"
]
}
]
},
"parameters": [
{
"name": "clientPort",
"label": "客户端连接的端口号",
"description": "Zk提供服务的端口号",
"required": true,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": false,
"defaultValue": "2181"
},
{
"name": "dataDir",
"label": "数据存储目录",
"description": "Zookeeper数据持久化存储目录",
"configType": "path",
"required": true,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": false,
"defaultValue": "/data/zookeeper"
},
{
"name": "dataLogDir",
"label": "事务日志存储目录",
"description": "指定事务日志的存放目录",
"configType": "path",
"required": true,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": false,
"defaultValue": "/data/log"
},
{
"name": "tickTime",
"label": "心跳时间(毫秒)",
"description": "Zookeeper服务器与客户端心跳时间,单位毫秒",
"required": true,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": false,
"defaultValue": "2000"
},
{
"name": "initLimit",
"label": "LF初始通信时限(tickTime的数量(次))",
"description": "followers启动时需要连接leader,并从leader处获取它所缺失的那部分数据,以便它能和leader的数据保持同步。这个配置项限定从follower启动到恢复完成的超时时间。",
"required": true,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": false,
"defaultValue": "10"
},
{
"name": "syncLimit",
"label": "LF同步通信时限(tickTime的数量(次))",
"description": "follower和leader之间数据延迟的最大时间长度。",
"required": true,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": false,
"defaultValue": "5"
},
{
"name": "zkHeapSize",
"label": "ZK最大堆内存(GB)",
"description": "ZK最大堆内存",
"configType": "map",
"required": true,
"minValue": 0,
"maxValue": 8,
"type": "slider",
"value": "",
"unit": "GB",
"configurableInWizard": true,
"hidden": false,
"defaultValue": "1"
},
{
"name": "skipACL",
"label": "skipACL",
"description": "",
"required": true,
"type": "input",
"value": "yes",
"configurableInWizard": true,
"hidden": false,
"defaultValue": "yes"
},
{
"name": "enableKerberos",
"label": "启用Kerberos认证",
"description": "启用Kerberos认证",
"required": true,
"type": "switch",
"value": false,
"configurableInWizard": true,
"hidden": false,
"defaultValue": false
},
{
"name": "authProvider.1",
"label": "authProvider.1",
"description": "",
"configType": "kb",
"configWithKerberos": true,
"required": false,
"type": "input",
"value": "org.apache.zookeeper.server.auth.SASLAuthenticationProvider",
"configurableInWizard": true,
"hidden": true,
"defaultValue": "org.apache.zookeeper.server.auth.SASLAuthenticationProvider"
},
{
"name": "jaasLoginRenew",
"label": "jaasLoginRenew",
"description": "",
"configType": "kb",
"configWithKerberos": true,
"required": false,
"type": "input",
"value": "3600000",
"configurableInWizard": true,
"hidden": true,
"defaultValue": "3600000"
},
{
"name": "hostname",
"label": "hostname",
"description": "",
"configType": "map",
"configWithKerberos": true,
"required": false,
"type": "input",
"value": "${host}",
"configurableInWizard": true,
"hidden": true,
"defaultValue": "${host}"
},
{
"name": "zkRealm",
"label": "zkRealm",
"description": "默认为HADOOP.COM,需要与Kerberos的realm保持一致",
"configType": "map",
"configWithKerberos": true,
"required": false,
"type": "input",
"value": "${realm}",
"configurableInWizard": true,
"hidden": true,
"defaultValue": "${realm}"
},
{
"name": "zkSecurity",
"label": "zkSecurity",
"description": "",
"configType": "map",
"configWithKerberos": true,
"required": false,
"type": "input",
"value": "-Djava.security.auth.login.config=${ZOOKEEPER_HOME}/conf/jaas.conf",
"configurableInWizard": true,
"hidden": true,
"defaultValue": "-Djava.security.auth.login.config=${ZOOKEEPER_HOME}/conf/jaas.conf"
},
{
"name": "server.1",
"label": "server.1",
"description": "",
"configType": "",
"required": false,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": true,
"defaultValue": ""
},
{
"name": "server.2",
"label": "server.2",
"description": "",
"configType": "",
"required": false,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": true,
"defaultValue": ""
},
{
"name": "server.3",
"label": "server.3",
"description": "",
"configType": "",
"required": false,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": true,
"defaultValue": ""
},
{
"name": "server.4",
"label": "server.4",
"description": "",
"configType": "",
"required": false,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": true,
"defaultValue": ""
},
{
"name": "server.5",
"label": "server.5",
"description": "",
"configType": "",
"required": false,
"type": "input",
"value": "",
"configurableInWizard": true,
"hidden": true,
"defaultValue": ""
},
{
"name": "custom.zoo.cfg",
"label": "自定义配置zoo.cfg",
"description": "自定义配置",
"configType": "custom",
"required": false,
"type": "multipleWithKey",
"value": [],
"configurableInWizard": true,
"hidden": false,
"defaultValue": ""
}
]
}
重启datasophon-manager的api
sh /opt/datasophon/datasophon-manager-1.2.1/bin/datasophon-api.sh restart api
安装Zookeeper
添加Zookeeper服务。
分配Zookeeper角色。根据实际选择安装Zookeeper在哪个节点机器
直接下一步。
根据实际情况修改相关配置。
到此。DataSophon升级Zookeeper3.9.3版本成功!