• 如何使用dockercompose搭建zabbix


    相信不少的读者朋友,应该都有过zabbix搭建的经验。

    随着互联网的普及,相比于过去,搭建一个的zabbix平台,需要进行多个组件的安装,需要购买昂贵的硬件资源与相关网络资源的投入,成本可见一斑,笔者所在的公司是一家云计算公司,致力于为传统企业或个人提供便捷的云服务,本文谈到的几种高可用方案,均使用自家的云主机,实践出真知,下面就来谈谈如何使用docker-compose进行zabbix的安装。

     

    为什么要使用docker-compose的方式安装zabbix

    docker相信有很多的读者朋友都有使用过,其中也应该使用过docker-compose,首先Docker-Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。

    如此的话,就可以很迅速地在一台新设备上面,快速进行zabbix的安装,后续如果进行迁移的话,只需要进行数据库的迁移即可。

     

    安装docker

    #卸载旧版本的docker
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-selinux \
                      docker-engine-selinux \
                      docker-engine
    
    #安装软件
    sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
    
    #安装源
     sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
    sudo yum-config-manager --enable docker-ce-edge
    
    sudo yum-config-manager --enable docker-ce-test
    
    
    #安装docker-ce
    sudo yum install docker-ce
    
    
    #查看安装版本
    docker version
    
    #启动docker
    systemctl start docker
    
    #查看docker程序是否运行正常
    docker info
    
     

     

    安装docker-compose

    #下载docker-compass工具,也可以直接下载github的连接的文件然后赋予权限。
    sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
    
    上面这个是旧的版本,下面的是新的版本页面
    https://github.com/docker/compose/releases
    下载完之后进行文件的改名
    
    #查看docker-compass的工具的版本
    cp release /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
     

     

    自定义一个docker网络

     docker network create --subnet 172.88.88.0/24 devops
    
     

     

    使用下面的yaml文件进行打开

    [root@docker_zabbix-server zabbix]# cat zabbix.yml
    version: "3"
    services:
      mysql-server:
        image: mysql:5.7
        hostname: mysql-server
        container_name: mysql-server
        expose:
          - 3306
        command: --character-set-server=utf8
        restart: always
        environment:
          - MYSQL_DATABASE=zabbix
          - MYSQL_USER=zabbix
          - MYSQL_PASSWORD=zbxpasswd
          - MYSQL_ROOT_PASSWORD=zbxpasswd
        volumes:
          - /etc/localtime:/etc/localtime -t
          - /home/docker/data/mysql:/var/lib/mysql
        networks:
          default:
            ipv4_address: 172.88.88.9
    
      zabbix-java-gateway:
        image: zabbix/zabbix-java-gateway:latest
        container_name: zabbix-java-gateway
        restart: always
        volumes:
          - /etc/localtime:/etc/localtime -t
        networks:
          default:
            ipv4_address: 172.88.88.10
    
    
      zabbix-server-mysql:
        image: zabbix/zabbix-server-mysql:latest
        container_name: zabbix-server-mysql
        restart: always
        volumes:
          - /etc/localtime:/etc/localtime -t
          - /home/docker/data/zabbix:/usr/lib/zabbix
          - /home/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
          - /home/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
        environment:
          - DB_SERVER_HOST=mysql-server
          - MYSQL_DATABASE=zabbix
          - MYSQL_USER=zabbix
          - MYSQL_PASSWORD=zbxpasswd
          - MYSQL_ROOT_PASSWORD=zbxpasswd
          - ZBX_JAVAGATEWAY=zabbix-java-gateway
        depends_on:
          - mysql-server
          - zabbix-java-gateway
        networks:
          default:
            ipv4_address: 172.88.88.11
    
      zabbix-web-nginx-mysql:
        image: zabbix/zabbix-web-nginx-mysql:latest
        container_name: zabbix-web-nginx-mysql
        restart: always
        volumes:
          - /etc/localtime:/etc/localtime -t
        environment:
          - PHP_TZ="Asia/Shanghai"
          - DB_SERVER_HOST=mysql-server
          - MYSQL_DATABASE=zabbix
          - MYSQL_USER=zabbix
          - MYSQL_PASSWORD=zbxpasswd
          - MYSQL_ROOT_PASSWORD=zbxpasswd
        expose:
          - 8080
          - 8443
        depends_on:
         - mysql-server
         - zabbix-java-gateway
        networks:
          default:
            ipv4_address: 172.88.88.12
    
      zabbix-agent:
        image: zabbix/zabbix-agent:latest
        environment:
          - ZBX_HOSTNAME=zabbix-agent
          - ZBX_SERVER_HOST=172.88.88.11
          - ZBX_SERVER_PORT=10051
        volumes:
          - /opt/zabbix/zabbix_agentd.d/:/etc/zabbix/zabbix_agentd.d/
          - /opt/zabbix/scripts/:/etc/zabbix/scripts/
        expose:
          - 10050
        networks:
          default:
            ipv4_address: 172.88.88.13
    networks:
      default:
        external:
           name: devops
    
     

     

    设置一个haproxy反向代理

    设置反向代理的作用是,可以进行白名单的设置,不至于直接对外进行访问端口的暴露

    listen 9999

    bind 公网地址:9999

    mode http

    server zabbix 172.88.88.12:8080

    使用以下的方式进行访问即可

    http://公网地址:9999

     

    本篇简单的分享了一个使用容器进行zabbix快速搭建的案例,感兴趣的朋友们可以按照以上的步骤进行尝试,笔者在centos7系列的环境中搭建过多次,都是成功的。

    以上都是笔者在实际过程中用到的一些解决方案,只有适合业务本身的方案才是好方案。许多时候并不一定追寻最新的前沿技术,只有在充分了解自身业务的本质需求的前提下,才能挑选出最适合的解决方案,其次在稳定性的基础下适当向功能性方面拓展。另外本系列也会后续跟读者朋友分享其他的常见的容器应用的搭建,敬请关注。

    睿江云官网链接:www.eflycloud.com

  • 相关阅读:
    JS 寻路算法
    Fireworks基本使用
    html基础知识汇总(二)之Emmet语法
    JS函数式编程
    Web前端导航
    CSS样式一
    选择器的分类
    框架集
    表单标签元素
    图像热点&图像映射
  • 原文地址:https://www.cnblogs.com/eflypro/p/13852372.html
Copyright © 2020-2023  润新知