【原创】运维基础之Docker(2)通过docker部署zookeeper nginx tomcat redis kibana/elasticsearch/logstash mysql kafka mesos/marathon
通过docker可以从头开始构建集群,也可以将现有集群(配置以及数据)平滑的迁移到docker部署;
1 docker部署zookeeper
# usermod -G docker zookeeper
# mkdir /data
# chown zookeeper.zookeeper /data
# echo 1 > /data/myid
# su - zookeeper
$ docker run --name zookeeper --restart always -p 2181:2181 -p 2888:2888 -p 3888:3888 -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" -v /var/log/zookeeper:/logs -v /conf/zoo.cfg:/conf/zoo.cfg -v /data:/data -v /etc/hosts:/etc/hosts:ro -d zookeeper
其中zoo.cfg使用正常的集群配置即可,需要挂载配置文件、日志目录、数据目录、host文件等,
注意:
1)zoo.cfg中的server.*配置可以通过 -e ZOO_SERVERS=server.1=0.0.0.0:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 代替,其中本机的ip要配置为0.0.0.0,否则启动的时候会绑定端口失败
2)/data/myid文件也可以通过 -e ZOO_MY_ID=1 代替
参考:https://docs.docker.com/samples/library/zookeeper/
2 docker部署nginx
# docker run --name nginx --restart always -p 80:80 -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -v /etc/nginx/passwd:/etc/nginx/passwd:ro -v /var/log/nginx:/var/log/nginx -d nginx
其中nginx.conf使用正常的配置即可,需要挂载配置文件、日志目录、密码文件等,有需要还可以挂载html目录 -v /some/content:/usr/share/nginx/html:ro;
参考:https://docs.docker.com/samples/library/nginx/
3 docker部署tomcat
$ docker run -d --name tomcat -p 8080:8080 tomcat:8.0
参考:https://docs.docker.com/samples/library/tomcat/
4 docker部署redis
$ docker run -d --name redis -p 6379:6379 -v /redis/data/dir:/data redis redis-server --appendonly yes
参考:https://docs.docker.com/samples/library/redis/
5 docker部署elk
由于kibana、elasticsearch、logstash3个image内部分别使用各自的用户启动,并且uid和gid均为1000,为了避免冲突,使用一个新的elk组,gid为1000,将3个用户都添加到组中,保证对目录的写权限
# groupadd -g 1000 elk
# usermod -G elk elasticsearch
# usermod -G elk logstash
# usermod -G elk kibana
# chgrp elk $dir
kibana
# usermod -G docker kibana
# su - kibana
$ docker run --name kibana -p 5601:5601 -v /var/log/kibana:/usr/share/kibana/log -v /etc/kibana/kibana.yml:/usr/share/kibana/config/kibana.yml -d kibana:6.6.0
其中kibana.yml使用正常配置即可,需要挂载配置文件等;
如果分配的内存太少,kibana可能进程直接消失,而且查不到任何logs,至少512m以上;
参考:
https://docs.docker.com/samples/library/kibana/
https://www.elastic.co/guide/en/kibana/current/docker.html
elasticsearch
# usermod -G docker elasticsearch
# chgrp -R elk /opt/lmm/es_data/
# su - elasticsearch
$ docker run -d --name logstash -p 9600:9600 -v /var/log/nginx:/var/log/nginx:ro -v /var/log/logstash:/usr/share/logstash/logs -v /etc/logstash/GeoLite2-City.mmdb:/usr/share/logstash/config/GeoLite2-City.mmdb -v /etc/logstash/nginx_access.conf:/usr/share/logstash/pipeline/logstash.conf docker.elastic.co/logstash/logstash:6.6.0
其中elasticsearch.yml使用正常配置即可,需要设置宿主机ip,挂载配置文件、数据目录、日志目录等;
注意:
1)一定要保证索引目录的owner或者group的id为1000(此处设置group为1000),否则会报failed to obtain node locks或者AccessDeniedException
2)一定要设置network.publish_host为宿主机ip
The container runs Elasticsearch as user elasticsearch using uid:gid 1000:1000. Bind mounted host directories and files, such as custom_elasticsearch.yml above, need to be accessible by this user. For the data and log dirs, such as /usr/share/elasticsearch/data, write access is required as well.
参考:
https://docs.docker.com/samples/library/elasticsearch/
https://www.elastic.co/guide/en/elasticsearch/reference/6.6/docker.html
logstash
# usermod -G docker logstash
# chgrp -R elk /var/log/logstash
# su - logstash
$ docker run -d --name logstash -p 9600:9600 -v /var/log/nginx:/var/log/nginx:ro -v /var/log/logstash:/usr/share/logstash/logs -v /etc/logstash/GeoLite2-City.mmdb:/usr/share/logstash/config/GeoLite2-City.mmdb -v /etc/logstash/nginx_access.conf:/usr/share/logstash/pipeline/logstash.conf docker.elastic.co/logstash/logstash:6.6.0
其中logstash.conf使用正常的配置即可;要保证对日志目录可写;
Bind-mounted configuration files will retain the same permissions and ownership within the container that they have on the host system. Be sure to set permissions such that the files will be readable and, ideally, not writeable by the container’s logstash user (UID 1000).
参考:
https://docs.docker.com/samples/library/logstash/
https://www.elastic.co/guide/en/logstash/current/docker-config.html
6 docker部署mysql
$ docker run -d --name mysql -p 3306:3306 -v /var/lib/mysql:/var/lib/mysql -v /etc/my.cnf:/etc/mysql/my.cnf -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql:5.7.25
其中my.cnf使用正常配置即可,需要挂载数据目录;
参考:https://docs.docker.com/samples/library/mysql/
7 docker部署kafka
$ docker run -d --name kafka -p 9092:9092 -e KAFKA_BROKER_ID=1 -e KAFKA_LOG_DIRS=/kafka/kafka-logs -e KAFKA_ZOOKEEPER_CONNECT=$zk_server:2181 -e KAFKA_ADVERTISED_HOST_NAME=$host_ip -e KAFKA_AUTO_CREATE_TOPICS_ENABLE=true -v /data/kafka-logs:/kafka/kafka-logs wurstmeister/kafka
不使用配置文件,配置通过参数传递,需要挂载数据目录;
参考:https://hub.docker.com/r/wurstmeister/kafka
8 docker部署mesos
mesos-master
$ docker run -d --name mesos-master1 --net=host --restart=always -p 5050:5050 -e MESOS_HOSTNAME=192.168.0.1 -e MESOS_IP=192.168.0.1 -e MESOS_ZK=zk://192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181/mesos -e MESOS_PORT=5050 -e MESOS_LOG_DIR=/var/log/mesos -e MESOS_QUORUM=1 -e MESOS_REGISTRY=in_memory -e MESOS_WORK_DIR=/var/lib/mesos mesoscloud/mesos-master
逐台修改MESOS_HOSTNAME、MESOS_IP
参考:https://hub.docker.com/r/mesosphere/mesos-master
mesos-slave
$ docker run -d --name=mesos-slave1 --net=host --restart=always --pid=host --privileged=true -e MESOS_HOSTNAME=192.168.0.1 -e MESOS_IP=192.168.0.1 -e MESOS_MASTER=zk://192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181/mesos -e MESOS_CONTAINERIZERS=docker,mesos -v /usr/bin/docker:/usr/bin/docker -v /dev:/dev -v /var/run/docker.sock:/var/run/docker.sock -v /var/log/mesos:/var/log/mesos -v /tmp/mesos:/tmp/mesos mesoscloud/mesos-slave
逐台修改MESOS_HOSTNAME、MESOS_IP
参考:https://hub.docker.com/r/mesosphere/mesos-slave
marathon
$ docker run -d --name marathon --net host --restart=always -e MARATHON_HOSTNAME=192.168.0.1 -e MARATHON_HTTPS_ADDRESS=192.168.0.1 -e MARATHON_HTTP_ADDRESS=192.168.0.1 -e MARATHON_MASTER=zk://192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181/mesos -e MARATHON_ZK=zk://192.168.0.1:2181,192.168.0.2:2181,192.168.0.3:2181/marathon mesoscloud/marathon
逐台修改MARATHON_HOSTNAME、MARATHON_HTTPS_ADDRESS、MARATHON_HTTP_ADDRESS
参考:https://hub.docker.com/r/mesosphere/marathon
9 其他
https://docs.docker.com/samples/library/cassandra/
https://docs.docker.com/samples/library/flink/
https://docs.docker.com/samples/library/influxdb/
https://docs.docker.com/samples/library/alpine/
【原创】运维基础之Docker(2)通过docker部署zookeeper nginx tomcat redis kibana/elasticsearch/logstash mysql kafka mesos/marathon的更多相关文章
- Linux运维基础
一.服务器硬件 二.Linux的发展史 三.Linux的系统安装和配置 四.Xshell的安装和优化 五.远程连接排错 六.Linux命令初识 七.Linux系统初识与优化 八.Linux目录结构 九 ...
- 第一阶段·Linux运维基础-第1章·Linux基础及入门介绍
01-课程介绍-学习流程 02-服务器硬件-详解 03-服务器核心硬件-服务器型号-电源-CPU 01-课程介绍-学习流程 1.1. 光看不练,等于白干: 1.2 不看光练,思想怠慢: 1.3 即看又 ...
- linux运维基础知识
linux运维基础知识大全 一,序言 每一个微不足道的知识,也是未来的铺垫.每一份工作的薪资职位,也是曾经努力的结果. 二,服务器 1,运维人员工作职责: 1)保证数据不丢失:2)保证服务器24小时运 ...
- Linux系统运维基础测试题
1 Linux运维基础测试题(第一关) 通过这段时间学习Linux基础命令,为了检测自己对Linux基础命令掌握的情况,从网上整理13到测试题,并将其整理出来供大家参考学习. 1.1 习题 ...
- HBase运维基础--元数据逆向修复原理
背景 鉴于上次一篇文章——“云HBase小组成功抢救某公司自建HBase集群,挽救30+T数据”的读者反馈,对HBase的逆向工程比较感兴趣,并咨询如何使用相应工具进行运维等等.总的来说,就是想更深层 ...
- Linux运维基础采集项
1. Linux运维基础采集项 做运维,不怕出问题,怕的是出了问题,抓不到现场,两眼摸黑.所以,依靠强大的监控系统,收集尽可能多的指标,意义重大.但哪些指标才是有意义的呢,本着从实践中来的思想,各位工 ...
- 【原创】运维基础之Docker(1)简介、安装、使用
docker 18.09 官方:https://docs.docker.com/ 一 简介 Docker is a platform for developers and sysadmins to d ...
- 【原创】运维基础之Docker(3)搭建私有仓库
下载并启动registry $ docker pull registry$ docker run --name my_registry -d -p 5000:5000 -v /var/lib/regi ...
- 【原创】运维基础之Docker(7)关于docker latest tag
Docker images have a tag named latest which doesn’t work as you expect.Latest is just a tag with a s ...
随机推荐
- Windows 支持 OpenSSH 了!
从 Win10 1809 和 Windows Server 2019 开始 Windows 开始支持 OpenSSH Server.本文介绍一下其基本的概念和配置方法,本文演示用的环境为 Win10 ...
- 程序员如何开始做一个自己的 Side Project?
此系列文章我们开始聊一些软件开发人员如何开始动手写一些自己项目(Side Project)的思路与方法,以及过程中可能需要准备的知识,并分享一些相关的资源给大家. 1. 什么是 Side Projec ...
- 对于for循环中使用let或var时,i的作用域范围的记录
在for循环中使用let时,结果如下 for内部定义的i在循环结束后不会覆盖外部的i 在for循环中使用var,且不控制i的作用域时,结果如下 第一个for循环内部定义的i并不会创建,而是直接使用外部 ...
- [Alpha阶段]第四次Scrum Meeting
Scrum Meeting博客目录 [Alpha阶段]第四次Scrum Meeting 基本信息 名称 时间 地点 时长 第四次Scrum Meeting 19/04/08 大运村寝室6楼 50min ...
- springboot的热部署
SpringBoot 4.SpringBoot 整合 devtools 实现热部署 一.添加 devtools 依赖 <!-- Spring boot 热部署 : 此热部署会遇到 java. ...
- Shell命令-文件及内容处理之iconv、dos2unix
文件及内容处理 - iconv.dos2unix 1. iconv:转换文件的编码格式 iconv命令的功能说明 iconv 命令是 linux 下用于文件转编码的常用命令,对于同时使用 window ...
- Docker批量打标签,批量推送
docker tag awmts- registry.gfstack.geo:/awmts- docker tag cts- registry.gfstack.geo:/cts- docker tag ...
- mongoDB 文档操作_查
基本查询命令 find 查找复合条件的所有文档 命令 db.collection.find(query,field) 参数 query 查找条件 格式: {ssss:"xxx"}是 ...
- Win10激活工具
W10数字许可激活C#版v2.8.0百度网盘下载地址:https://pan.baidu.com/s/1TD0PVxIfB2NTarAuP9NJbQ直接下载地址:FTP://A@OS.X6X8.COM ...
- JMeter 的调式工具
任何的编程工具都会相应的调式工具,JMeter的调式 工具主要有五种: 1.查看结果树:含请求信息.响应信息等 2.HTTP 镜像服务器:HTTP Mirror Server用于查看请求信息 3.De ...