想了下仍是把kafka集羣和storm集羣分開比較好html
Nimbus | Supervisor | |
---|---|---|
storm01 | √ | √ |
storm02 | √(備份) | √ |
storm03 | √ |
老樣子複製三臺虛擬機, 修改網絡配置, host名及host文件, 關閉防火牆web
# storm01 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.180.170 # 你的虛擬網卡VMNet8, 若是是橋接的改爲橋接網卡VMNet1 PREFIX=24 GATEWAY=192.168.180.2 DNS1=114.114.114.114 IPV6_PRIVACY=no
# storm02 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.180.171 # 你的虛擬網卡VMNet8, 若是是橋接的改爲橋接網卡VMNet1 PREFIX=24 GATEWAY=192.168.180.2 DNS1=114.114.114.114 IPV6_PRIVACY=no
# storm03 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 DEVICE=ens33 ONBOOT=yes IPADDR=192.168.180.172 # 你的虛擬網卡VMNet8, 若是是橋接的改爲橋接網卡VMNet1 PREFIX=24 GATEWAY=192.168.180.2 DNS1=114.114.114.114 IPV6_PRIVACY=no
vim /etc/hostname 將hostname分別修改成storm01, storm02, storm03shell
vim /etc/hosts 修改host文件express
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.180.170 storm01 192.168.180.171 storm02 192.168.180.172 storm03
關閉防火牆: service firewalld stopapache
免密登陸: ssh-keygen 生成RSA公鑰私鑰vim
ssh-keygen # 而後enter, enter, enter 直到生成RSA, 默認會在當前用戶的家目錄下生成.ssh [root@storm01 ~]# ls -ah . anaconda-ks.cfg .bash_logout .bashrc .config .dbus .pki .tcshrc .xauthEJoei0 .. .bash_history .bash_profile .cache .cshrc initial-setup-ks.cfg .ssh .viminfo .Xauthority
.ssh隱藏目錄中有id_rsa(私鑰) 和 id_rsa.pub(公鑰)bash
cd ~/.ssh 建立authorized_keys,將三臺虛擬機的公鑰都存入其中:服務器
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDdS1NsbxsccW/6YMkUKZ4BUNYXnFw9Iapwl/xM/THaILWi3VyAVIOY1cT1BgfS01NxpcUI/aqBIwZvWgKEdJe8XL4fJgAHgkJklbP5LRd1eI6CprLTn0RJNaZuRDX2GqPkmsz+1pRZo6TBuzx1q1sPrUEeH6GYR/oQWm8JTLFs8ppXeu0prsNAehl1MvT0xEpegdc7CVGTHyZUuOV8/nxBHux0motRJpy0UpQCY/abazhy+CQ/TS8/VQu3mAsdK/5KIHwyR92NPnUP7w89f1BsEgywFMgOhbLmsqfaDXVvCB38AfzQOKqdXL2CExyKTAEDwU6+AIX6Clm/UCrn1hPN root@storm01 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ05EemLXkNiWXuM6WSHWhs9uGI5PVacNgI7KctAK1UgOZwcBOu2UZqk1nTvboIz0yYfFKBjvY2Ea4eBh5VzOqqJh7JmHm+58px34h+qmpdYvlnnmi2Bhu9vr9DO9EeqlmKxVDc9kqfjTWbLpLsrg+0K9KGVZwOXXvRtVRT2k88NbMegGRwsG03/H8uaBpOOUYyAe3vNqqgpg/5rnt824ZUWUaHKHGyQegIxejFrC5nhhejTPQ5PIDdxWIckhnvRASUXMEsoj7k7CKRD9HA4+o5XuzTyJ/tVYIheyK8k82LOoHKocXsbb5wJ7sLBuDaS2y63ZOc2AjoEtttkxvgjUB root@storm02 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDN3QLZWNzQRp/4G0vTIGWtD2vS11B7g0rGyaBYobR/JYMddJV7jeuu7lbb3wWxpJo/AdwrLJNBRG9uFmFBpHdbX6JUz5anz+tb4hWVUAzDN1oNt+ZL7F0SCeQGx1EBHCYeAT12S0U8wfOpeS8/92m4Bm2ngKxbPKO9r6cAfzI2xngJKQ1jEbejzOulE9BiIvdAkFza8e3voqb1QQaLUHfUbW/VGXe+f/LAzpeAk7oFMwvealnyckpwYbxFaTjMrKwyvx3Gpe0iXoFeiYdBJOQZmmpntQRrymyvWg9iqG69ynQlCaA6OU6PV324hzy77vxL+c3yQFn3IVXf7rNTnspR root@storm03
免密登陸測試:網絡
[root@storm01 ~]# ssh root@192.168.180.171 Last login: Sat Oct 19 22:35:56 2019 from storm01 [root@storm02 ~]#
ps: 第一次會提示是否將該祕鑰保存, 保存後.ssh文件目錄下會生成一個known_hosts,裏面存有已知的主機sha(Security HashCode Algorithum)信息app
本機上已經安裝好了jdk, jdk安裝和配置請參考:
https://www.cnblogs.com/ronnieyuan/p/11622315.html
上傳tar包
解壓tar包到指定目錄並修更名稱
tar -zxvf apache-storm-2.0.0.tar.gz -C /opt/ronnie/ mv apache-storm-2.0.0/ storm-2.0.0
修改配置文件
vim /opt/ronnie/storm-2.0.0/conf/storm.yaml
# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. ########### These MUST be filled in for a storm configuration # 指定Zookeeper服務器 storm.zookeeper.servers: - "storm01" - "storm02" - "storm03" # 指定storm集羣中的nimbus節點所在的服務器 nimbus.seeds: ["storm01", "storm02", "storm03"] # 指定文件存放目錄 storm.local.dir: "/var/storm" # # 指定supervisor節點上, 啓動worker時對應的端口號, 每一個端口對應槽, 每一個槽對應一個worker supervisor.slots.ports: - 6700 - 6701 - 6702 - 6703 # 指定web ui 的端口爲9099 ui.port: 9099 # # ##### These may optionally be filled in: # ## List of custom serializations # topology.kryo.register: # - org.mycompany.MyType # - org.mycompany.MyType2: org.mycompany.MyType2Serializer # ## List of custom kryo decorators # topology.kryo.decorators: # - org.mycompany.MyDecorator # ## Locations of the drpc servers # drpc.servers: # - "server1" # - "server2" ## Metrics Consumers ## max.retain.metric.tuples ## - task queue will be unbounded when max.retain.metric.tuples is equal or less than 0. ## whitelist / blacklist ## - when none of configuration for metric filter are specified, it'll be treated as 'pass all'. ## - you need to specify either whitelist or blacklist, or none of them. You can't specify both of them. ## - you can specify multiple whitelist / blacklist with regular expression ## expandMapType: expand metric with map type as value to multiple metrics ## - set to true when you would like to apply filter to expanded metrics ## - default value is false which is backward compatible value ## metricNameSeparator: separator between origin metric name and key of entry from map ## - only effective when expandMapType is set to true ## - default value is "." # topology.metrics.consumer.register: # - class: "org.apache.storm.metric.LoggingMetricsConsumer" # max.retain.metric.tuples: 100 # parallelism.hint: 1 # - class: "org.mycompany.MyMetricsConsumer" # max.retain.metric.tuples: 100 # whitelist: # - "execute.*" # - "^__complete-latency$" # parallelism.hint: 1 # argument: # - endpoint: "metrics-collector.mycompany.org" # expandMapType: true # metricNameSeparator: "." ## Cluster Metrics Consumers # storm.cluster.metrics.consumer.register: # - class: "org.apache.storm.metric.LoggingClusterMetricsConsumer" # - class: "org.mycompany.MyMetricsConsumer" # argument: # - endpoint: "metrics-collector.mycompany.org" # # storm.cluster.metrics.consumer.publish.interval.secs: 60 # Event Logger # topology.event.logger.register: # - class: "org.apache.storm.metric.FileBasedEventLogger" # - class: "org.mycompany.MyEventLogger" # arguments: # endpoint: "event-logger.mycompany.org" # Metrics v2 configuration (optional) #storm.metrics.reporters: # # Graphite Reporter # - class: "org.apache.storm.metrics2.reporters.GraphiteStormReporter" # daemons: # - "supervisor" # - "nimbus" # - "worker" # report.period: 60 # report.period.units: "SECONDS" # graphite.host: "localhost" # graphite.port: 2003 # # # Console Reporter # - class: "org.apache.storm.metrics2.reporters.ConsoleStormReporter" # daemons: # - "worker" # report.period: 10 # report.period.units: "SECONDS" # filter: # class: "org.apache.storm.metrics2.filters.RegexFilter" # expression: ".*my_component.*emitted.*"
將storm目錄 遞歸發送給 其餘虛擬機
scp -r /opt/ronnie/storm-2.0.0/ root@192.168.180.171:/opt/ronnie/ scp -r /opt/ronnie/storm-2.0.0/ root@192.168.180.172:/opt/ronnie/
建立storm啓動和中止shell腳本
cd /opt/ronnie/storm-2.0.0/bin/ 進入bin目錄
vim start-storm-all.sh
#!/bin/bash #nimbus節點 nimbusServers='storm01 storm02' #supervisor節點 supervisorServers='storm01 storm02 storm03' #啓動全部的nimbus for nim in $nimbusServers do ssh -T $nim <<EOF nohup /opt/ronnie/storm-2.0.0/bin/storm nimbus >/dev/null 2>&1 & EOF echo 從節點 $nim 啓動nimbus...[ done ] sleep 1 done #啓動全部的ui for u in $nimbusServers do ssh -T $u <<EOF nohup /opt/ronnie/storm-2.0.0/bin/storm ui >/dev/null 2>&1 & EOF echo 從節點 $u 啓動ui...[ done ] sleep 1 done #啓動全部的supervisor for visor in $supervisorServers do ssh -T $visor <<EOF nohup /opt/ronnie/storm-2.0.0/bin/storm supervisor >/dev/null 2>&1 & EOF echo 從節點 $visor 啓動supervisor...[ done ] sleep 1 done ~
vim stop-storm-all.sh
!/bin/bash #nimbus節點 nimbusServers='storm01 storm02' #supervisor節點 supervisorServers='storm01 storm02 storm03' #中止全部的nimbus和ui for nim in $nimbusServers do echo 從節點 $nim 中止nimbus和ui...[ done ] ssh $nim "kill -9 `ssh $nim ps -ef | grep nimbus | awk '{print $2}'| head -n 1`" >/dev/null 2>&1 ssh $nim "kill -9 `ssh $nim ps -ef | grep core | awk '{print $2}'| head -n 1`" >/dev/null 2>&1 done #中止全部的supervisor for visor in $supervisorServers do echo 從節點 $visor 中止supervisor...[ done ] ssh $visor "kill -9 `ssh $visor ps -ef | grep supervisor | awk '{print $2}'| head -n 1`" >/dev/null 2>&1 done
給予 建立的sh文件 執行權限
chmod u+x start-storm-all.sh chmod u+x stop-storm-all.sh
vim /etc/profile 修改環境變量, 添加Storm路徑
export STORM_HOME=/opt/ronnie/storm-2.0.0 export PATH=$STORM_HOME/bin:$PATH
將 啓動 和中止配置文件轉發給其餘虛擬機(其實主要是主節點, 剛忘記了, 改的備用節點)
scp start-storm-all.sh root@192.168.180.170:/opt/ronnie/storm-2.0.0/bin/ scp start-storm-all.sh root@192.168.180.172:/opt/ronnie/storm-2.0.0/bin/ scp stop-storm-all.sh root@192.168.180.170:/opt/ronnie/storm-2.0.0/bin/ scp stop-storm-all.sh root@192.168.180.172:/opt/ronnie/storm-2.0.0/bin/
啓動Zookeeper: zkServer.sh start
啓動Storm:
start-storm-all.sh # 關閉 stop-storm-all.sh