熱門搜索 Zabbix技術資料 Zabbix常見問、答討論 成功案例 Zabbix交流區 Prometheus交流區
前面尊龍時凱君有提到過使用docker來快速拉起一個zabbix監控系統(詳見:如何使用docker快速部署一個zabbix監控系統),但是要一個個執行docker啟動命令去將對應的容器啟動。如果要配置參數多,那敲啟動命令就是一件讓人心累的事情。而且敲完后若沒有保存啟動命令,后面的管理也是比較麻煩,并且如果容器數量較多,還要一個個手敲啟動命令,這就非常的不方便。
所以為了解決這個問題,并且更加高效的啟動一個zabbix監控系統。現在使用docker-compose這個容器編排工具來高效的啟動zabbix監控系統。
Docker-Compose項目是Docker官方的開源項目,負責實現對Docker容器集群的快速編排, 并且提供了 scale (服務擴容) 的功能。
Docker-Compose將所管理的容器分為三層,分別是工程(project),服務(service)以及容器(container)。Docker-Compose運行目錄下的所有文件(docker-compose.yml,extends文件或環境變量文件等)組成一個工程,若無特殊指定工程名即為當前目錄名。一個工程當中可包含多個服務,每個服務中定義了容器運行的鏡像,參數,依賴。一個服務當中可包括多個容器實例,Docker-Compose并沒有解決負載均衡的問題,因此需要借助其它工具實現服務發現及負載均衡。
Docker-Compose的工程配置文件默認為docker-compose.yml,可通過環境變量COMPOSE_FILE或-f參數自定義配置文件,其定義了多個有依賴關系的服務及每個服務運行的容器。
使用一個Dockerfile模板文件,可以讓用戶很方便的定義一個單獨的應用容器。在工作中,經常會碰到需要多個容器相互配合來完成某項任務的情況。例如要實現一個Web項目,除了Web服務容器本身,往往還需要再加上后端的數據庫服務容器,甚至還包括負載均衡容器等。
Compose允許用戶通過一個單獨的docker-compose.yml模板文件(YAML 格式)來定義一組相關聯的應用容器為一個項目(project)。
Docker-Compose項目由Python編寫,調用Docker服務提供的API來對容器進行管理。因此,只要所操作的平臺支持Docker API,就可以在其上利用Compose來進行編排管理。
Docker-compose就是通過docker-compose.yaml文件所定義的容器作為一個項目,從而進行docker容器的管理。下面就對docker-compose.yaml模板文件的常用基礎語法進行一個簡單的解釋
Compose 的容器默認名稱格式是:<項目名稱><服務名稱><序號>
雖然可以自定義項目名稱、服務名稱,但是如果你想完全控制容器的命名,可以使用這個標簽指定:
比如我要制定一個mysql容器的名為“mysql-test”,那么
version: ‘3’
services:
??mysql:
container_name: mysql-test
指定服務的鏡像名稱或鏡像 ID。如果鏡像在本地不存在,Compose 將會嘗試拉取這個鏡像。
比如我要制定一個mysql容器,使用的鏡像名為“mysql:8.0”,那么
version: ‘3’
services:
??mysql:
image: mysql:8.0
在使用 Compose 時,最大的好處就是少打啟動命令,但是一般項目容器啟動的順序是有要求的,如果直接從上到下啟動容器,必然會因為容器依賴問題而啟動失敗。
例如在沒啟動數據庫容器的時候啟動了應用容器,這時候應用容器會因為找不到數據庫而退出,為了避免這種情況我們需要加入一個標簽,就是 depends_on,這個標簽解決了容器的依賴、啟動先后的問題。
比如我要先啟動一個MySQL,后啟動nginx,那么
version: ‘3’
services:
??nginx:
????image: nginx:1.16.1
????depends_on:
??????– mysql
??mysql:
????image: mysql:8.0
這是設置鏡像的環境變量,直接將變量定義到鏡像里面,這樣啟動容器時會自動讀取該環境變量
如啟動一個MySQL容器,要設置它的root初始化密碼為“123456”,那
version: ‘3’
services:
??mysql:
????image: mysql:8.0
environment:
??MYSQL_ROOT_PASSWORD: 123456
該參數是將宿主機的端口映射到容器端口,從而在宿主機訪問對應的端口能訪問到容器內。
如要講MySQL容器的3306端口映射到宿主機的33060端口,那
version: ‘3’
services:
??mysql:
????image: mysql:8.0
ports:-“33060:3306”
掛載一個目錄或者一個已存在的數據卷容器,可以直接使用 [HOST:CONTAINER] 這樣的格式,或者使用 [HOST:CONTAINER:ro] 這樣的格式,后者對于容器來說,數據卷是只讀的,這樣可以有效保護宿主機的文件系統。 Compose的數據卷指定路徑可以是相對路徑,使用 . 或者 .. 來指定相對目錄。 version: ‘3’ services: mysql: image: mysql:8.0 volumes: -./data:/var/lib/mysql -/var/log/mysql:/var/log/mysql
選擇對應版本下載安裝包
http://github.com/docker/compose/releases?after=1.28.0
上傳到服務器修改名稱并授權
mv docker-compose-x86 docker-compose
chmod +x docker-compose
測試
./docker-compose –v
安裝
mv docker-compose /usr/bin
version: '3.7'
services:
mysql:
container_name: mysql
image: mysql:latest
restart: always
environment:
MYSQL_DATABASE: zabbix
MYSQL_ROOT_PASSWORD: zabbix@2022
ports:
- "3306:3306"
volumes:
- /data/mysql:/var/lib/mysql
zabbix-server:
container_name: zabbix_server
image: zabbix/zabbix-server-mysql:latest
restart: always
depends_on:
- mysql
environment:
MYSQL_DATABASE: zabbix
MYSQL_PASSWORD: zabbix@2022
MYSQL_USER: root
DB_SERVER_HOST: 192.168.75.31
DB_SERVER_PORT: 3306
ports:
- "10051:10051"
volumes:
- /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts
- /data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts
zabbix-web:
container_name: zabbix_web
image: zabbix/zabbix-web-nginx-mysql:latest
restart: always
depends_on:
- mysql
- zabbix_server
environment:
MYSQL_DATABASE: zabbix
MYSQL_PASSWORD: zabbix@2022
MYSQL_USER: root
DB_SERVER_HOST: 192.168.75.31
DB_SERVER_PORT: 3306
ZBX_SERVER_HOST: 192.168.75.31
ZBX_SERVER_PORT: 10051
ports:
- "8080:8080"
zabbix-agent:
container_name: zabbix_agent
image: zabbix/zabbix-agent:latest
restart: always
depends_on:
- mysql
- zabbix_server
environment:
ZBX_HOSTNAME: 192.168.75.31
ZBX_SERVER_HOST: 172.18.0.1
ports:
- "10050:10050"
別忘了安裝docker!
編寫好zabbix監控系統的docker-compose.yaml文件后,就可以啟動系統了
Docker-compose up –d
如圖所示,已成功啟動
我這邊web端口映射為宿主機的18080,所以訪問zabbix界面,那就是IP+18080
默認的賬號密碼:
Admin
zabbix
如圖,成功訪問。
這一期的zabbix技術內容到這就結束了。我是尊龍時凱IT君,專注運維技術分享,更多zabbix技術可以持續關注尊龍時凱官網zabbix技術分享,還可以查看我的往期內容,zabbix服務,zabbix配置,zabbix部署等zabbix服務解決方案。
尊龍時凱監控結合該銀行發展在的現狀及發展需求,幫助其構建一個安全、實用、可持續發展的智能監控管理平臺。
View details