zoukankan      html  css  js  c++  java
  • Docker部署MetaQ集群

    Docker部署MetaQ集群


    官方网站:Docker部署MetaQ集群


    环境:
    CentOS 7.0
    metaq-1.4.6.2
    jdk1.8
    docker-engine-1.11.2

    说明:虚拟机节点安装配置MetaQ,请参看MetaQ集群,docker安装请参看CentOS6/7 docker安装
    本实验采用3节点集群,与zookeeper采用相同主机
    metaq01: 192.168.8.101
    metaq02: 192.168.8.102
    metaq03: 192.168.8.103


    一.zookeeper集群
    192.168.8.101
    192.168.8.102
    192.168.8.103


    二.MetaQ镜像(Dockerfile)
    方式一:将己安装好的应用ADD到基础镜像
    假定环境如MetaQ集群所述,jdk,metaq都安装在/opt/{jdk,metaq}目录下
    以ubuntu14.04为基础镜像
    cat >/opt/Dockerfile <<'HERE'

    FROM ubuntu:14.04

    MAINTAINER Jlive Liu "iliujun_live@163.com"


    # Description

    LABEL Description="This image is used to start metaq" Vendor="Arvato System" Version="1.6.2"


    # Define ENV

    ENV JAVA_HOME=/opt/jdk

    ENV METAQ_HOME=/opt/metaq

    ENV PATH=$METAQ_HOME/bin:$PATH


    # Exporse ports

    EXPOSE 8080 8123 8120


    # Volume

    VOLUME ["$METAQ_HOME/conf","$METAQ_HOME/logs","$METAQ_HOME/data","$METAQ_HOME/datalog"]


    ADD . /opt


    # Define entrypoint

    ENTRYPOINT ["metaServer.sh", "start"]

    HERE
    cd /opt
    docker build -t metaq .

    [root@metaq01 ~]# docker images

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

    metaq               latest              e55f3ebd94e0        10 minutes ago      596.2 MB


    方式二:从基础镜像直接安装jdk,metaq

    cat >Dockerfile <<'HERE'

    FROM ubuntu:14.04

    MAINTAINER Jlive Liu "iliujun_live@163.com"


    # Description

    LABEL Description="This image is used to start metaq" Vendor="Arvato System" Version="1.6.2"


    # Install curl

    RUN echo "deb http://mirrors.sohu.com/ubuntu trusty main restricted universe multiverse" > /etc/apt/sources.list

     

    RUN apt-get update

    RUN apt-get install -y curl

    RUN apt-get autoclean


    # Define ENV

    ENV JAVA_HOME=/opt/jdk

    ENV METAQ_HOME=/opt/metaq

    ENV PATH=$METAQ_HOME/bin:$PATH


    # Install jdk

    #RUN curl http://download.oracle.com/otn-pub/java/jdk/8u92-b14/jdk-8u92-linux-x64.tar.gz|tar -zxvf - -C /opt

    RUN curl http://192.168.8.254/soft/jdk-8u92-linux-x64.tar.gz|tar -zxvf - -C /opt

    RUN mv /opt/jdk1.8.0_92 /opt/jdk


    # Install metaq

    #RUN curl http://fnil.net/downloads/metaq-server-1.4.6.2.tar.gz|tar -zxvf - -C /opt

    RUN curl http://192.168.8.254/soft/metaq-server-1.4.6.2.tar.gz|tar -zxvf - -C /opt

    RUN mv /opt/taobao/metamorphosis-server-wrapper /opt/metaq

    RUN rm -rf /opt/taobao

    RUN sed -i -e '/^#JAVA_HOME/s/^#//' -e "/^JAVA_HOME=/a BASE_DIR=$METAQ_HOME" /opt/metaq/bin/env.sh

    RUN sed -i '/enableHttp/s/false/true/'  /opt/metaq/bin/env.sh


    # Exporse ports

    EXPOSE 8080 8123 8120


    # Volume

    VOLUME ["$METAQ_HOME/conf","$METAQ_HOME/logs","$METAQ_HOME/data","$METAQ_HOME/datalog"]


    # Define entrypoint

    ENTRYPOINT ["metaServer.sh", "start"]

    HERE

    docker build -t metaq .


    [root@metaq01 ~]# docker images

    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

    metaq               latest               4892f7af175d        10 seconds ago      1.202 GB

    提示:两种比较而言,方式一占用空间要小一半,部署上更快捷,推荐方式一



    三.配置metaq集群

    metaq01(192.168.8.101)

    1.配置文件

    mkdir /opt/metaq

    docker run -tid --name=test metaq

    docker cp test:/opt/metaq/conf /opt/metaq

    docker rm -f test


    mv /opt/metaq/conf/server.ini{,.default}
    cat >/opt/metaq/conf/server.ini <<HERE

    [system]

    brokerId=0

    numPartitions=1

    dataPath=/opt/metaq/data

    dataLogPath=/opt/metaq/datalog

    hostName=192.168.8.101

    serverPort=8123

    dashboardHttpPort=8120

    unflushThreshold=0

    unflushInterval=10000

    maxSegmentSize=1073741824

    maxTransferSize=1048576

    deletePolicy=delete,168

    deleteWhen=0 0 6,18 * * ?

    flushTxLogAtCommit=1

    stat=true

    updateConsumerOffsets=false

    [zookeeper]

    zk.zkConnect=192.168.8.101:2181,192.168.8.102:2181,192.168.8.103:2181

    zk.zkSessionTimeoutMs=30000

    zk.zkConnectionTimeoutMs=30000

    zk.zkSyncTimeMs=5000

    [topic=test]

    stat=true

    [topic=meta-test]

    stat=true

    HERE
    注意:brokerId是服务器集群中唯一的id,必须为整型0-1024之间,本实验分别取brokerId=0,brokerId=1,brokerId=2
    hostName默认取主机名,如果主机名无法解析则会报如下错误,主机名需要被正确解析,也是对外集群通信的监听地址
    Error: Exception thrown by the agent : java.net.MalformedURLException: Local host name unknown: java.net.UnknownHostException: ct7.example.com: ct7.example.com: unknown error
    更多配置请参看配置管理
    2.运行容器节点

    docker run -tid --restart=always

        -p 8080:8080

        -p 8123:8123

        -p 8120:8120

        --oom-kill-disable=true

        --memory-swappiness=1

        -v /opt/metaq/conf:/opt/metaq/conf

        -v /opt/metaq/logs:/opt/metaq/logs

        -v /opt/metaq/data:/opt/metaq/data

        -v /opt/metaq/datalog:/opt/metaq/datalog

        --name=metaq01

        metaq


    [INFO] [main] 06-27 12:12:30,957 [MetaMorphosisBroker] - Starting metamorphosis server...

    [INFO] [main] 06-27 12:12:30,958 [MetaMorphosisBroker] - Start metamorphosis server successfully

    [WARN] [main] 06-27 12:12:30,958 [AbstractBrokerPlugin] - Starting plugin:jettyBroker

    [INFO] [main] 06-27 12:12:30,959 [Server] - jetty-7.6.1.v20120215

    [INFO] [main] 06-27 12:12:30,989 [AbstractConnector] - Started SelectChannelConnector@0.0.0.0:8080

    [INFO] [main] 06-27 12:12:30,990 [AbstractBrokerPlugin] - Started broker plugin:[jettyBroker:com.taobao.metamorphosis.http.MetamorphosisOnJettyBroker]

    [WARN] [main] 06-27 12:12:30,990 [AbstractBrokerPlugin] - Start plugin:jettyBroker successfully.

    [INFO] [main] 06-27 12:12:33,088 [Server] - Starting dashboard http server at port  8120

    [INFO] [main] 06-27 12:12:33,093 [Server] - jetty-7.6.1.v20120215

    [INFO] [main] 06-27 12:12:33,098 [AbstractConnector] - Started SelectChannelConnector@0.0.0.0:8120

     

    [INFO] [main] 06-27 12:12:33,098 [Server] - Started dashboard http server successfully.



    metaq02(192.168.8.102)

    metaq03(192.168.8.103)

    只需修改配置文件中的hostName,brokerId及容器名(本实验叫metaq02,metaq03)



    四.确认集群


    Docker部署MetaQ集群


  • 相关阅读:
    Vue条件判断
    揭秘webpack plugin
    vue实现网络图片瀑布流 + 下拉刷新 + 上拉加载更多
    npx 是什么?
    PAT 1100 Mars Numbers[难]
    PAT 1075 PAT Judge[比较]
    PAT 1083 List Grades[简单]
    PAT 1082 Read Number in Chinese[难]
    PAT 1135 Is It A Red-Black Tree[难]
    PAT 1127 ZigZagging on a Tree[难]
  • 原文地址:https://www.cnblogs.com/lixuebin/p/10814043.html
Copyright © 2011-2022 走看看