自建开源IT资产管理系统itop并实现高可用架构
简介
iTop 是一款 开源的IT服务管理 (ITSM) 软件,基于ITIL(信息技术基础设施库)框架构建。
上一句是官网的定义,实在难以理解,通俗解释就是方便企业运维岗位随着管理的各类设备资产(服务器、网络设备、存储等)越来越多,在EXCEL表格管理不过来的时候,开发也不会理会我们的需求。
有一个现成的开源系统,只需要我们自己部署,就能用起来,提高运维的工作效率,还降低运营的成本,这就是运维的价值啊。
准备工作
Ubuntu全新安装Docker及Docker-Compose
Docker安装参看如下链接:
https://docs.docker.com/engine/install/ubuntu/
Docker-Compose安装最新版(取代x符号)如下链接:
https://github.com/docker/compose/releases
sudo curl -L "https://github.com/docker/compose/releases/download/vx.x.x/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 查看docker版本
docker --version
# 查看docker-compose版本
docker-compose --version
免密SSH密钥配置
# 主生成公钥
ssh-keygen -t rsa
cat /root/.ssh/id_rsa.pub >>/root/.ssh/authorized_keys
ssh 127.0.0.1
exit
cat /root/.ssh/id_rsa.pub
# 备配置主生成的公钥
ssh-keygen -t rsa #新机器需要执行
vi /root/.ssh/authorized_keys
# 主进行登录测试
ssh root@备IP地址
部署应用
# 创建目录
mkdir -p /home/itop/conf
mkdir -p /home/itop/mysql
# Docker运行iTop
docker run -d -p 80:80 \
--name=itop \
-v /home/itop/conf:/var/www/html/conf \
-v /home/itop/mysql:/var/lib/mysql \
vbkunin/itop:3.0.3
# 修复文件夹的权限
docker exec itop chown www-data:www-data /var/www/html/conf
# 命令获取 MySQL 用户凭据
docker logs itop | grep -A7 -B1 "Your MySQL user 'admin' has password:"
强烈建议设置一个内部使用的域名,为后面的高可用打下坚实的基础。
现在就可以在浏览器输入内部已经做好解析的域名进行网页端的安装了。
我相信看这篇文章的人都能够搞定,我就不一张张的截图去展示了。
高可用部署
需要再新增一台虚拟机,如以上内容做好准备工作,使用Docker安装好itop,并获取好MySQL密码。
主:
# 主导出镜像
docker save -o itop.tar itop:lastest
scp itop.tar root@备IP地址:/root/
# 进入运行中容器进行MySQL数据库备份
docker exec -it itop /bin/bash
cd conf/
/usr/bin/mysqldump -uadmin -ppassword itop >/var/lib/mysql/itop$(date +%F).sql
cd ..
\cp -r html /var/lib/mysql/
exit
# 查看数据库备份
ll -h /home/itop/conf/
# 拷贝数据库备份及系统文件数据
scp /home/itop/conf/itop$(date +%F).sql root@备ip地址:/home/itop/mysql/
scp -r /home/itop/mysql/html root@备ip地址:/home/itop/mysql/
备:
# 备导入镜像
docker load -i itop.tar
# 进入运行中容器进行MySQL数据库密码修改和主一致的密码
docker exec -it itop /bin/bash
mysql -uadmin -p刚生成的password
MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
MariaDB [mysql]> SET password=PASSWORD('password');
Query OK, 0 rows affected (0.001 sec)
MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec)
MariaDB [mysql]> \q
# 还原从主备份的数据库
\cp -r /var/lib/mysql/html/* /var/www/html/
mysql -uadmin -ppassword itop < /var/lib/mysql/itop$(date +%F).sql
exit
docker restart itop
配置同步脚本
# 主计划任务
crontab -l
*/30 * * * * /usr/bin/sh /root/itopbak.sh >/dev/null 2>&1
*/36 * * * * /usr/bin/sh /root/itopbaksync.sh >/dev/null 2>&1
cat /root/itopbak.sh
#!/bin/bash
docker exec -i itop /bin/bash -c '/usr/bin/mysqldump -uadmin -ppassword itop >/var/lib/mysql/itop.sql && \cp -r /var/www/html /var/lib/mysql/'
cat /root/itopbaksync.sh
#!/bin/bash
scp /home/itop/mysql/itop.sql root@备IP地址:/home/itop/mysql/ && scp -r /home/itop/mysql/html root@备IP地址:/home/itop/mysql/ >/dev/null 2>&1
# 备计划任务
crontab -l
*/39 * * * * /usr/bin/sh /root/itopres.sh >/dev/null 2>&1
cat /root/itopres.sh
#!/bin/bash
docker exec -i itop /bin/bash -c '\cp -r /var/lib/mysql/html/* /var/www/html/ && mysql -uadmin -ppassword itop < /var/lib/mysql/itop.sql'