这个是网站的大概架构
ps:dc监控用于监控容器状态,以及查看容器运行日志,快速启动容器
rancher用于快速升级以及快速部署服务,以及做了一个高可用防止容器宕机(容器需要写docker-compose)
zabbix用于监控linux底层,并且写了邮箱告警,之所以放在底层没用到docker是觉得监控放在被监控服务当中一旦出问题很难排查
当然还用到了nginx做了高可用
只是一个很简单的练笔,因为资源有限用的4g2h所以服务不多
这边只记录下底层架构,网页端就不记录了
安装docker
yum install -y docker
查看docker版本
[root@mwc yum.repos.d]# docker version
Client:
Version: 1.13.1
API version: 1.26
然后更新内核
yum install -y kernel
启动docker
systemctl start docker
部署rancher
docker run -d --restart=always -p 8081:8081 rancher/server
给rancher添加仓库节点
sudo docker run -e CATTLE_AGENT_IP="192.168.200.128" --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.11 http://192.168.200.128:8080/v1/scripts/2D26D925591E7F49BFBA:1546214400000:R1VFN39Ek5ZL09BIa9aP4KrGJ4
启动完成登陆查看
启动tomact服务
docker run --name tomcat -p 8080:8080 -v $ PWD / test :/ usr / local / tomcat / webapps / test - d tomcat
将tomact目录挂载到本目录的/test文档下
使用脚本安装容器监控软件
安装完成后输入ip+端口进入界面等待一会
然后安装nginx作为反向代理和负载均衡器
因为这块我们需要部署到客户电脑所以说采用的是dockerfile打包
其Dockerfile如下:
其weiphp.cluby.cn.conf如下
php环境代码如下
其docker-compose如下
接下来准备监控部署
部署Prometheus + Grafana
部署zabbix
安装mysql-server
安装zabbix-server-mysql
安装zabbix-web-nginx-mysql
#!/bin/bash
# zabbix env
# 定义zabbix数据库的库名
export Z_database_name=zabbix
# 新增数据库的用户
export Z_database_user=zabbix
# 上述用户的密码
export Z_database_user_password=zabbix_pwd
# root用户的密码,建议建立好后改掉密码
export Z_database_root_password=root_pwd
# zabbix 网页的端口
export Z_port=80
export Z_name=MyZabbix
export Z_tz=Asia/Shanghai
# cat docker-compose.yml
version: "3"
services:
mysql-server-for-z:
image: mysql:5.7
container_name: mysql-server-for-z
environment:
- MYSQL_DATABASE=${Z_database_name}
- MYSQL_USER=${Z_database_user}
- MYSQL_PASSWORD=${Z_database_user_password}
- MYSQL_ROOT_PASSWORD=${Z_database_root_password}
volumes:
- "${PWD}/mysql:/var/lib/mysql"
zabbix-server-mysql:
image: zabbix/zabbix-server-mysql:latest
container_name: zabbix-server-mysql
environment:
- DB_SERVER_HOST=mysql-server-for-z
- MYSQL_DATABASE=${Z_database_name}
- MYSQL_USER=${Z_database_user}
- MYSQL_PASSWORD=${Z_database_user_password}
- MYSQL_ROOT_PASSWORD=${Z_database_root_password}
ports:
- "10051:10051"
links:
- mysql-server-for-z:mysql
depends_on:
- mysql-server-for-z
zabbix-web-nginx-mysql:
image: zabbix/zabbix-web-nginx-mysql:latest
container_name: zabbix-web-nginx-mysql
environment:
- DB_SERVER_HOST=mysql-server-for-z
- MYSQL_DATABASE=${Z_database_name}
- MYSQL_USER=${Z_database_user}
- MYSQL_PASSWORD=${Z_database_user_password}
- MYSQL_ROOT_PASSWORD=${Z_database_root_password}
- ZBX_SERVER_NAME=${Z_name}
- TZ=${Z_tz}
ports:
- "${Z_port}:80"
links:
- mysql-server-for-z:mysql
- zabbix-server-mysql:zabbix-server
depends_on:
docker日志清理脚本
docker全自动安装脚本