魔镜日常运维命令总结

魔镜问题汇总 yangchenhui 1303℃ 0评论

docker知识

名词解释

  1. docker引擎:运行docker的基础平台,启动命令:service docker start/stop/restart
  2. docker镜像:相当于虚拟机打包文件。
  3. docker容器:通过docker镜像启动的一个服务。
  4. dockerfile:一种打包镜像的脚本。
  5. docker-compose:服务编排工具,可以将配置信息写到文件里。
  6. 镜像仓库:一个存储镜像的仓库,类似github这种,国内一般可以使用阿里云的镜像仓库。
  7. 宿主机:运行docker服务的物理机或服务器。

docker常用命令

  1. 通过docker命令启动一个tomcat容器。

    docker run -d -p80:8080 -e jdbc.password=123qweasd -v /moojnn/logs:/tomcat/logs registry.cn-hangzhou.aliyuncs.com/moojnn/tomcat:8.0

    • -d :以守护进程方式启动,还可以-it --rm 可以自己了解。
    • -p :端口映射,上面是将宿主机的80端口转发到容器中的8080端口,一般镜像打包好之后,服务暴露的端口就已经确定,所以改变的一般只是冒号前面的端口号,也就是对外提供服务的端口号为80
    • -e :设置容器内部的环境变量,由于java程序目前流行的做法是任何配置项都是优先读取环境变量,然后再读取配置文件,所以这里通过-e可以改变程序的配置文件。
    • -v :将宿主机的文件系统映射到容器内部,一般有2种作用
      • 将容器内部需要持久化的文件映射到宿主机,防止重启之后丢失,如mysql镜像一般将容器内部的/var/lib/mysql 数据文件目录映射到宿主机保存。/moojnn/data/mysqldata:/var/lib/mysql
      • 将个性化或定制化文件覆盖容器内部的文件,如tomcat开启jmx端口的时候,将catalina.sh覆盖掉容器内部的/tomcat/bin/catalina.sh。./catalina.sh:/tomcat/bin/catalina.sh
  2. 通过docker-compose.yml编排启动魔镜。

    version: '2'
    services:
    mysql:
        restart: always
        image: registry.cn-hangzhou.aliyuncs.com/moojnn/mysql:latest
        ports:
        - "3307:3306"
        volumes:
        - /moojnn/data/mysqldata:/var/lib/mysql
    
    mojing:
        restart: always
        image: registry.cn-hangzhou.aliyuncs.com/moojnn/mojing:v7.3.3.3
        depends_on:
        - mysql
        ports:
        - "8002:8080"
        - "10001:10001"
        - "4040:4040"
        environment:
        - db.url=jdbc:mysql://mysql:3306/mojing?useUnicode=true&characterEncoding=UTF-8
        - db.username=root
        - db.password=root@guoyun
        - local.javax.jdo.option.ConnectionURL=jdbc:mysql://mysql:3306/hive_local?createDatabaseIfNotExist=true
        - local.javax.jdo.option.ConnectionUserName=root
        - local.javax.jdo.option.ConnectionPassword=root@guoyun
        - map.host=mysql
        - map.port=3306
        - logDB.url=jdbc:mysql://mysql:3306/logDB?useUnicode=true&characterEncoding=UTF-8
        command: ["/wait-for-it.sh", "mysql:3306","-t","600", "--", "/run.sh", ""]
        volumes:
        - /moojnn/data/warehouse:/apps/hive/warehouse
        - /moojnn/data/picture:/tomcat/webapps/picture
    • 上面run命令中的任何参数都可以通过这个文件配置,如-p 对应ports节点,-e 对应environment节点,-v 对应volumes节点
    • docker-compose 命令默认只会寻找当前目录下名为docker-compose.yml的配置文件进行启动,如果目录不同或者文件名不同,则需要使用-f参数。
    • docker-compose up -d 和 docker-compose restart区别
      • docker-compose up -d :检查配置文件是否发生改变,如果发生改变,则使用新的配置文件重新创建容器,否则提示 ** is update to latest,什么都不做。
      • docker-compose restart 重启,不检查配置文件变化,使用之前启动时候的配置文件进行重启。
      • 所以一般升级的时候,修改版本号,修改配置文件,然后使用docker-compose up -d启动。如果是服务不正常需要重启,则使用docker-compose restart即可。
      • docker-compose restart不会删除一些临时文件,所以一般重启的时候也会先使用docker-compose stop 、docker-compose rm -f 、docker-compose up -d 彻底启动*

安装目录:

魔镜所有的docker服务都安装在 /moojnn/**目录,如魔镜在/moojnn/mojing,mysql在/moojnn/mysql

日志目录:

  • hadoop/kafka等日志都在/opt/data/hadoop或/opt/data/kafka-logs目录
  • 魔镜日志在/moojnn/logs目录.

    注意有两台。当前正在写的日志一般是 mojing-all.log ,带后缀日期的都是历史数据,磁盘空间不足时可以删除。

日常运维命令:

  1. 查看服务是否正常。

    docker ps

  2. 查看服务日志

    docker-compose logs -f --tail=100

  3. 升级魔镜

    1. 修改/moojnn/mojing/docker-compose.yml 版本号或配置项
    2. docker-compose up -d启动
      如果服务器不能联网,则需要先下载tar包,然后使用docker load <mojing.tar,然后再执行docker-compose up -d命令
  4. 重启魔镜

    docker-compose restart

  5. 临时替换一个文件,如js或**.jar,如替换/tomcat/webapps/ROOT/js/common.js

    1. 修改docker-compose.yml文件,在volumes节点下增加映射 ./common.js:/tomcat/webapps/ROOT/js/common.js
    2. docker-compose up -d

    如果是js文件,又不想重启魔镜服务,则可以使用docker cp common.js mojing_mojing_1:/tomcat/webapps/ROOT/js命令直接拷贝过去,但是这样做下次docker-compose up -d的时候这个修改会被还原,restart不会还原

  6. 拷贝容器里面的某个文件出来,如tomcat配置文件

    docker cp mojing_mojing_1:/tomcat/conf/server.xml ./

  7. 查看hadoop集群是否正常

    浏览器访问:http://bigdata1:8080 默认用户名密码 admin/admin

  8. 备份魔镜数据库

    1. 由于魔镜mysql安装的时候将数据文件映射到了宿主机,所以只要备份这个文件夹就可以了 /moojnn/data/mysqldata目录
    2. 或者使用dump 命令 docker exec -it mysql_mysql_1 mysqldump -uroot -p** mojing>mojing20190919.sql 。这样会将密码暴露在命令行里,不是很安全。
    3. 使用mysql工具进行备份或者安装mysql客户端,通过-h命令连到数据上使用mysqldump备份。
      建议设置个cron定时任务每天晚上备份下mojing库

服务异常排查办法

整个魔镜服务访问

  1. 首先检查磁盘等硬件,df -h 、 free -m 、 top等,硬件中磁盘满的概率比较大,清理相关日志即可。
  2. docker ps查看服务是否正常。
  3. tail -f --tail mojing-all.log日志,查看是否有明显异常信息,一般mysql连不上、redis连不上会直接影响服务。
  4. 查看单点相关服务是否正常,直接访问登录页地址,看看服务是否正常。

涉及到查询的功能全部报错,如仪表盘、分析台、脚本运行等。

  1. 首先登录ambari集群管理页面,看看是否有服务挂掉,主要是hdfs/hive/yarn/zookeeper等基础服务。

    http://192.168.2.51:8080

  2. 有服务停止状态的话,尝试启动(一般挂都是有原因的,所以启动大概率不成功)
  3. 如果启动不成功,先从界面上查看启动日志是否有明显错误,有的话直接百度、谷歌。
  4. 没有的话查看异常服务在哪台机器上,则去相关机器上排查,同样,首先硬件 df -h ,free -m等。然后去相关日志目录查看启动日志。如hdfs namenode异常:/opt/data/hadoop/logs/hadoop-hdfs/namenode等。根据异常百度、谷歌。

魔镜服务启动失败

  1. docker-compose logs -f --tail=100 看看是不是启动过程直接卡死了,如果卡死了,则有两种情况:。
    1. 端口异常主要检查50001、60001、4040这三个和yarn通讯的端口。(一般突然出现的无法启动不会是这个原因,除非动过网络配置
    2. yarn资源不足,可以去ambari界面上依次点击"yarn"->"resource manager ui" 查看yarn资源的使用情况,不足的情况下可以点击“applicatins” 查看是什么程序占用资源,其中“SparkEngine-YARN”是魔镜服务,accept状态是等待分配资源,running是正常运行中。
  2. 有异常信息,但是都是无用信息,这时可以去/moojnn/logs/mojing-all.log中查看详细报错,根据报错及时排查,一般情况下都是mysql,redis,mq等连接不上,或者有魔镜本身的bug.
    1. 如果某个服务连不上,则重点排查相关服务即可。
    2. 如果是魔镜本身bug,需要将mojing-all.log打包发给研发人员进行定位处理。

增量更新异常,接收不到新数据

  1. ambari检查服务是否正常,尤其是kafka和zookeeper
  2. 使用kafka-tool查看kafka是否能接收到信息,并且查看消费端消费情况。
  3. 如果消费端一直卡着不消费,则需要联系研发。
  4. 如果kafka接收和消费都正常,则需要定位redis或hdfs情况。
    1. redis中的key为:kafkaCache:table_name
    2. hdfs中文件路径为:/guoyundata1/kafka/table_name/***.txt
  5. 如果都正常,则需要联系研发进行进一步排查。

使用过程中部分功能报错

  1. 在错误界面点击反馈->复制,然后粘贴到记事本里,发给研发人员定位问题。

自定义上传的图片都不见了,并且是偶发的

  1. 检查两台机器的/moojnn/data/picture目录,看看里面的数据是否一致,一般是nfs服务异常,重新挂载即可。

本文固定链接:杨晨辉的个人博客 » 魔镜日常运维命令总结
本站内容除特别标注外均为原创,欢迎转载,但请保留出处!

喜欢 (1)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址