Storm On Docker

1. 安裝Docker
 
(1)確認系統版本
 
sudo lsb_release -a
 
 
注:若是提示找不到命令「lsb_release」,使用「yum install redhat-lsb」進行安裝。
 
(2)安裝Docker
 
sudo yum install docker.x86_64(Docker Version: 1.9.1)
 
Docker的默唸存儲位置:/var/lib/docker,磁盤空間一般比較小,建議將其更換至磁盤空間比較充足的目錄,如:
 
sudo mkdir -p /data0/docker-lib
 
sudo cp -R /var/lib/docker/* /data0/docker-lib/
 
sudo rm -rf /var/lib/docker
 
sudo ln -s /data0/docker-lib/ /var/lib/docker
 
爲了不每次運行Docker實例時打印警告信息:
 
 
執行以下操做:
 
vim /etc/sysconfig/docker-storage
 
DOCKER_STORAGE_OPTIONS=--storage-opt dm.no_warn_on_loop_devices=true
 
(3)啓動Docker
 
sudo service docker start
 
(4)查看Docker運行狀態
 
 
(5)中止Docker
 
sudo service docker stop
 
2. 安裝Docker Insecure Registry
 
Docker Registry的做用是一個Docker Image的私有倉庫,它的安裝過程實際就是運行一個Docker Registry實例,
 
docker run -d -p 80:5000 --restart=always --name registry -v /data0/docker-registry:/var/lib/registry registry:2.4.1
 
這裏有三個地方須要注意:
 
(1)映射端口:5000 --> 80,其中80爲宿主機端口;
(2)掛載目錄:/var/lib/registry --> /data0/docker-registry,其中「/data0/docker-registry」爲宿主機目錄;
(3)使用這種方式搭建的「倉庫」是沒有認證和受權的;
 
Docker Client(相對於Docker Insecure Registry而言)與Docker Insecure Registry交互時須要如下配置:
 
vim /etc/sysconfig/docker
 
OPTIONS='--selinux-enabled'
 
-->
 
OPTIONS='--selinux-enabled --insecure-registry=mydomain'
 
其中,mydomain能夠爲域名,也能夠HostIP:Port。
 
配置完成以後,須要重啓Docker Client Service:
 
sudo service docker restart
 
3. 構建本身的Docker CentOS Image
 
這裏的構建實際是一個「拉取官方鏡像——修改鏡像名稱——推送鏡像至私有倉庫」的過程。
 
(1)從Docker Hub拉取官方鏡像
 
docker pull centos:centos7.1.1503
 
(2)修改鏡像名稱
 
docker tag docker.io/centos:centos7.1.1503 mydomain/centos:centos7.1.1503
 
(3)推送鏡像
 
docker push mydomain/centos:centos7.1.1503
 
4. 構建Docker Storm Image
 
(1)建立目錄
 
mkdir -p /usr/home/yurun/storm-docker
 
(2)下載依賴文件
 
jdk-8u45-linux-x64.rpm(官方推薦使用Java 6,但實測須要使用Java 7,考慮到平臺實際狀況,使用Java 8)
 
Python-2.6.6.tgz
 
apache-storm-1.0.1.tar.gz
 
將上述文件拷貝至目錄:/usr/home/yurun/storm-docker。
 
(3)編寫Dockerfile
 
vim /usr/home/yurun/storm-docker/Dockerfile
 
FROM mydomain/centos:centos7.1.1503
 
RUN echo "nameserver 8.8.8.8" > /etc/resolv.conf(DNS設置)
 
COPY jdk-8u45-linux-x64.rpm /tmp/jdk-8u45-linux-x64.rpm
 
RUN rpm -ivh /tmp/jdk-8u45-linux-x64.rpm(Java安裝路徑: /usr/java/jdk1.8.0_45)
 
RUN yum -y install gcc gcc-c++(編譯安裝Python使用)
 
RUN yum -y install make(編譯安裝Python使用)
 
COPY Python-2.6.6.tgz /tmp/Python-2.6.6.tgz
 
RUN yum -y install tar(解壓Python安裝包使用)
 
RUN tar zxvf /tmp/Python-2.6.6.tgz -C /tmp/
 
WORKDIR /tmp/Python-2.6.6
 
RUN ./configure --prefix=/usr/lib/python2.6.6
 
RUN make
 
RUN make install
 
RUN ln -s /usr/lib/python2.6.6/bin/python /usr/bin/python2.6
 
COPY apache-storm-1.0.1.tar.gz /tmp/apache-storm-1.0.1.tar.gz
 
RUN tar zxvf /tmp/apache-storm-1.0.1.tar.gz -C /tmp/
 
RUN mv /tmp/apache-storm-1.0.1 /usr/lib/apache-storm-1.0.1
 
RUN rm -rf /tmp/*
 
WORKDIR /
 
(4)構建鏡像
 
docker build -t mydomain/storm:1.0.1 /usr/home/yurun/strom-docker/
 
(5)推送境像
 
docker push mydomain/storm:1.0.1
 
5. 使用Docker Storm Image
 
(1)建立Storm配置目錄及文件
 
建立Storm配置目錄:
 
mkdir -p /etc/storm/conf
 
從Storm原始安裝目錄中拷貝如下文件至配置目錄:
 
storm_env.ini
storm-env.sh
storm.yaml
 
 
vim /etc/storm/conf/storm-env.sh
 
export JAVA_HOME=/usr/java/jdk1.8.0_45
 
 
vim /etc/storm/conf/storm.yaml
 
storm.zookeeper.servers:
    - "ZooKeeperHost"
 
storm.zookeeper.port: 2181
 
storm.zookeeper.root: "/storm_docker"
 
storm.local.dir: "/data0/storm"
 
storm.log.dir: "/var/log/storm"
 
nimbus.seeds: ["NimbusHost"]
 
supervisor.slots.ports:
    - 6700
    - 6701
    - 6702
    - 6703
    - 6704
    - 6705
    - 6706
    - 6707
    - 6708
    - 6709
    - 6710
    - 6711
    - 6712
    - 6713
    - 6714
    - 6715
    - 6716
    - 6717
    - 6718
    - 6719
    - 6720
    - 6721
 
worker.childopts: "-Xmx6144m -XX:MaxPermSize=64m -XX:+UseConcMarkSweepGC -Xmn2300m -XX:SurvivorRatio=2 -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=65 -XX:+UseCMSCompactAtFullCollection -XX:+PrintClassHistogram -verbose:gc -XX:+PrintGCDateStamps -Xloggc:/var/log/storm/worker_%ID%_gc.log"
 
nimbus.task.timeout.secs: 40
 
(2)運行Storm nimbus
 
docker run -d --net=host -v /etc/storm/conf/:/usr/lib/apache-storm-1.0.1/conf/ -v /data0/storm/:/data0/storm/ -v /var/log/storm/:/var/log/storm/ mydomain/storm:1.0.1 /usr/lib/apache-storm-1.0.1/bin/storm nimbus
 
(3)運行Storm Supervisor
 
docker run -d --net=host -v /etc/storm/conf/:/usr/lib/apache-storm-1.0.1/conf/ -v /data0/storm/:/data0/storm/ -v /var/log/storm/:/var/log/storm/ mydomain/storm:1.0.1 /usr/lib/apache-storm-1.0.1/bin/storm supervisor
 
(4)運行Run Storm UI
 
docker run -d --net=host -v /etc/storm/conf/:/usr/lib/apache-storm-1.0.1/conf/ -v /data0/storm/:/data0/storm/ -v /var/log/storm/:/var/log/storm/ mydomain/storm:1.0.1 /usr/lib/apache-storm-1.0.1/bin/storm ui
 
注意:上述三步操做中網絡模式一概使用宿主機模式:--net=host。
 
(5)查看Storm運行狀態
 
http://NimbusHost:8080 
相關文章
相關標籤/搜索