-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzookeeper_install.tpl
90 lines (75 loc) · 2.43 KB
/
zookeeper_install.tpl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/bin/bash
set -e
# dump parameters to a tmp file
echo ${hosted_zone_id} >> /tmp/app.txt
echo ${hosted_zone_name} >> /tmp/app.txt
# get availability zone: eg. ap-southeast-2a
az=$(curl http://169.254.169.254/latest/meta-data/placement/availability-zone)
# get number from az tail value. ap-southeast-2a => a => 1
private_ip=$(curl "http://169.254.169.254/latest/meta-data/local-ipv4")
function install_confluent() {
yum update -y
rpm --import http://packages.confluent.io/rpm/3.2/archive.key
echo '
[Confluent.dist]
name=Confluent repository (dist)
baseurl=http://packages.confluent.io/rpm/3.2/6
gpgcheck=1
gpgkey=http://packages.confluent.io/rpm/3.2/archive.key
enabled=1
[Confluent]
name=Confluent repository
baseurl=http://packages.confluent.io/rpm/3.2
gpgcheck=1
gpgkey=http://packages.confluent.io/rpm/3.2/archive.key
enabled=1
' > /etc/yum.repos.d/confluent.repo
yum clean all -y
yum install -y confluent-platform-oss-2.11
}
function update_zookeeper_dns() {
tmp_file_name=tmp-record.json
echo '{
"Comment": "DNS updated by zookeeper'${node_id}' autoscaling group",
"Changes": [
{
"Action": "UPSERT",
"ResourceRecordSet": {
"Name": "'zk${node_id}'.${hosted_zone_name}",
"Type": "A",
"TTL": 30,
"ResourceRecords": [
{
"Value": "'$private_ip'"
}
]
}
}
]
}' > $tmp_file_name
aws route53 change-resource-record-sets --hosted-zone-id ${hosted_zone_id} --change-batch file://$tmp_file_name
}
function update_zookeeper_configuration() {
echo 'autopurge.snapRetainCount=3
autopurge.purgeInterval=24
tickTime=2000
initLimit=10
syncLimit=2' >> /etc/kafka/zookeeper.properties
for i in {1..${cluster_size}}; do
if [ "$i" == "${node_id}" ]; then
echo "server.$i=0.0.0.0:2888:3888" >> /etc/kafka/zookeeper.properties
else
echo 'server.'$i'=zk'$i.${hosted_zone_name}':2888:3888' >> /etc/kafka/zookeeper.properties
fi
done
mkdir -p /var/lib/zookeeper
echo ${node_id} >> /var/lib/zookeeper/myid
}
echo "Starting zookeeper."
install_confluent
update_zookeeper_dns
update_zookeeper_configuration
cmd="zookeeper-server-start /etc/kafka/zookeeper.properties 2>&1 > /var/log/zookeeper.log &"
action=reboot # restart zookeeper on failure
# put cmd to /etc/rc.local so it can start when system reboot
echo "$cmd" >> /etc/rc.local