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集群


posted @ 2016-06-27 22:39  李庆喜  阅读(273)  评论(0编辑  收藏  举报