OpsAny社区版部署¶
OpsAny默认使用Docker进行容器化单机部署,主要分为几大步骤:安装依赖软件包、部署PaaS服务、部署SaaS服务。推荐工程师可以通过阅读安装脚本,了解安装的所有细节,探索OpsAny的奥秘。
部署主机配置¶
OpsAny社区版部署,使用一台虚拟机即可完成部署,推荐使用8CPU和16G内存的主机,数据盘可根据纳管的服务器数量综合考虑,例如100台主机,一年可能需要500G左右的存储空间存放监控数据。
配置推荐 | 操作系统 | 主机配置 | 备注 |
---|---|---|---|
最低体验配置 | Ubuntu 22.04 | 4C、8G、20G数据盘 | 仅部署运维平台,可以纳管50台以内,干净主机。 |
生产建议配置 | Ubuntu 22.04 | 8C、16G、100G数据盘 | 增加研发平台,可以纳管50~1000台内,干净主机。 |
快速部署手册¶
Tip
在开始操作前,非常严肃的提醒,根据最近2020年到2024年的统计数据,严格按照官方文档操作100%成功率,文档和脚本均不可能出错。如果安装失败,请卸载,仔细阅读官方文档,重新安装,耐心一点,多尝试几次。当然也可以直接放弃,毕竟人生苦短,开心最重要了!如果觉得OpsAny复杂,我们还有更加轻量级的产品OpsAnt,https://www.opsant.com 欢迎使用。 总结了近几年的部署失败原因,提前送上:
- 不是干净的主机,主机上已经部署了MySQL、低版本的Docker等服务,造成端口冲突或初始化检测不通过。
- 没有关闭iptables防火墙,导致端口不通。
- 没有正确修改配置文件。
- 直接批量复制粘贴的命令,导致有一些命令没有执行完成。
- 安装完毕后,访问的域名和配置文件中设置的不一致。
- 域名无法解析(修改hosts文件无效,域名必须要解析,或者使用IP地址)
- 内存不满足要求,不到最低要求的8G内存。
- 企业内部网络限制,或者安全设备限制,导致网络不通。
- 浏览器使用了代理,或者在OpsAny前端有增加了代理。
- 做了一些很奇怪的操作,太个性了,反正就是不按文档操作。
部署OpsAny PaaS平台¶
1.安装Docker和初始化使用的软件包,推荐使用Ubuntu 22.04。
1.1 安装环境检查
- 检查主机是否可以正常访问互联网,主机内存不低于8G。
- 关闭防火墙,设置规范化主机名,保证主机名可以解析。
- 可以使用IP地址访问OpsAny,如果使用域名访问,请确保域名可以真实解析(修改hosts无效)
1.2 安装Docker和MySQL客户端
# 请注意,不要整体复制粘贴执行,会造成有些命令执行不成功,但是又没发现。
# step 1: 安装必要的一些系统工具
sudo apt-get -y update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce docker-compose jq uuid wget mysql-client git ntpdate
systemctl enable --now docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate time1.aliyun.com
pip3 install -U pip setuptools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip3 install requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 bcrypt==4.0.1 \
-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
如果是Ubuntu 16.04 需要额外安装Python3和pip sudo apt-get -y install python3 python3-pip
1.1 安装环境检查
- 检查主机是否可以正常访问互联网,主机内存不低于8G。
- 关闭SELinux和防火墙,设置规范化主机名,保证主机名可以解析。
- 可以使用IP地址访问OpsAny,如果使用域名访问,请确保域名可以真实解析(修改hosts无效)
1.2 安装Docker和MySQL
# 请注意,不要整体复制粘贴执行,会造成有些命令执行不成功,但是又没发现。
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y git uuid wget docker-ce docker-compose mariadb jq python3 python3-pip python3-devel ntpdate unzip
systemctl enable --now docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
ntpdate time1.aliyun.com
pip3 install -U pip setuptools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip3 install requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 bcrypt==4.0.1 \
-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
1.1 安装环境检查
- 检查主机是否可以正常访问互联网,主机内存不低于8G。
- 关闭SELinux和防火墙,设置规范化主机名,保证主机名可以解析。
- 可以使用IP地址访问OpsAny,如果使用域名访问,请确保域名可以真实解析(修改hosts无效)
1.2 安装Docker和MySQL
# 请注意,不要整体复制粘贴执行,会造成有些命令执行不成功,但是又没发现。
dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
dnf -y install docker-ce --nobest
dnf -y install mariadb jq git uuid unzip
systemctl enable --now docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
pip3 install -U pip setuptools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip3 install requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 bcrypt==4.0.1 \
-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
1.1 安装环境检查
- 检查主机是否可以正常访问互联网,主机内存不低于8G。
- 关闭SELinux和防火墙,设置规范化主机名,保证主机名可以解析。
- 可以使用IP地址访问OpsAny,如果使用域名访问,请确保域名可以真实解析(修改hosts无效)
1.2 安装Docker和MySQL
# 请注意,不要整体复制粘贴执行,会造成有些命令执行不成功,但是又没发现。
dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
dnf -y install docker-ce --nobest
dnf -y install mariadb jq git uuid python3 gcc gcc-c++ glibc rust cargo unzip
systemctl enable --now docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
pip3 install -U pip setuptools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip3 install setuptools-rust==1.1.2 requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 bcrypt==4.0.1 \
-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
1.1 安装环境检查
- 检查主机是否可以正常访问互联网,主机内存不低于8G。
- 关闭SELinux和防火墙,设置规范化主机名,保证主机名可以解析。
- 可以使用IP地址访问OpsAny,如果使用域名访问,请确保域名可以真实解析(修改hosts无效)
1.2 安装Docker和MySQL
# 请注意,不要整体复制粘贴执行,会造成有些命令执行不成功,但是又没发现。
dnf config-manager --add-repo=http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
dnf -y install docker-ce --nobest
dnf -y install mariadb jq git uuid python3 gcc gcc-c++ glibc rust cargo unzip
systemctl enable --now docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
pip3 install -U pip setuptools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip3 install setuptools-rust==1.1.2 requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 bcrypt==4.0.1 \
-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
1.1 安装环境检查
- 检查主机是否可以正常访问互联网,主机内存不低于8G。
- 关闭SELinux和防火墙,设置规范化主机名,保证主机名可以解析。
- 可以使用IP地址访问OpsAny,如果使用域名访问,请确保域名可以真实解析(修改hosts无效)
1.2 安装Docker和MySQL
# 请注意,不要整体复制粘贴执行,会造成有些命令执行不成功,但是又没发现。
yum -y install docker mariadb jq git uuid python3 gcc gcc-c++ glibc rust cargo unzip
systemctl enable --now docker
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
pip3 install -U pip setuptools -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
pip3 install setuptools-rust==1.1.2 requests==2.25.1 grafana-api==1.0.3 mysql-connector==2.2.9 SQLAlchemy==1.4.22 bcrypt==4.0.1 \
-i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
2.克隆PaaS代码
cd /opt && git clone --depth=1 https://gitee.com/unixhot/opsany-paas.git
cd /opt && git clone --depth=1 https://github.com/unixhot/opsany-paas.git
3.修改安装配置【必须修改】
Danger
注意!注意!注意!如果没有域名,或者域名不能解析,请设置为IP地址,修改hosts文件无法完成安装。 默认情况下OpsAny PaaS和OpsAny Proxy部署在一台机器上,PROXY_LOCAL_IP和LOCAL_IP是相同的,如果平台要管理外网主机,请将PROXY_PUBLIC_IP设置为公网IP地址,也可以设置为域名,但是要求域名可以真实解析,修改hosts无效。如果你是本地实验环境,那么请全部设置为本地IP地址即可。
- Step1: 从配置模板生成配置文件
# 从配置模版复制生成配置文件
cd /opt/opsany-paas/install && cp install.config.example install.config
- Step2: 修改配置文件
脚本执行过程中,脚本会自动生成随机字符串,替换配置文件中的INIT_PASSWORD。如果你想自定义密码,可以直接修改即可。
vim /opt/opsany-paas/install/install.config
# 请修改为访问OpsAny的域名,没有域名请设置为公网IP或者内网IP地址,修改hosts解析无用。一定要修改!不支持自定义端口。
DOMAIN_NAME=192.168.56.11
# 请修改为安装OpsAny的本机的内网IP地址。用于进程监听,连接数据库做初始化等等。一定要修改!
LOCAL_IP=192.168.56.11
# 如果是公网部署,需要设置公网IP地址,如果是内网部署,可以保持默认。
PROXY_PUBLIC_IP=192.168.56.11
4.执行安装脚本进行PaaS平台部署
安装之前请确定配置修改正确,不然会安装失败,如果失败可以执行./uninstall.sh 进行卸载,然后重新安装。
# 执行过程不能有任何异常报错,警告可以忽略。
cd /opt/opsany-paas/install/
./paas-install.sh install
镜像拉取可能较慢,请耐心等待。如果安装失败,可以执行uninstall.sh,然后重新执行安装,必须保证全程无报错,方可继续。
5.访问域名测试,默认用户名admin 密码admin,在未安装SaaS应用之前,请勿修改admin密码,请部署完毕再修改。
- 访问地址:https://DOMAIN_NAME/ 请注意,这里访问的是你设置的DOMAIN_NAME,必须一致。如果出现,输入账号和密码后,一直循环打开登录页面,就是访问的地址和配置的DOMAIN_NAME不相同导致的。
Tip
此时仅仅是部署了PaaS平台,还未部署任何的应用,需要部署应用之后才可以使用,当前打开是空的开发工作台。这个是一个开源的运维PaaS开发平台,如果你是一个运维开发工程师,欢迎加入我们的运维开发微信交流群,可以在下载邮件中获取入口。
部署OpsAny SaaS应用¶
如果确定PaaS平台访问没有问题,现在就可以开始部署SaaS应用了。OpsAny社区版提供了8个SaaS应用,分别是统一权限、工作台、资源平台、管控平台、作业平台、云管平台、基础监控、堡垒机。其中堡垒机已经完全开源,整体安装时间在25分钟左右,网络带宽足够,拉取Docker镜像速度较快情况下,可以在10分钟之内完成。
1.安装SaaS基础模块。
注意:基础模块不会安装DevOps相关的应用平台、流水线、制品仓库、持续部署。安装过程中所有的WARNINGS提示可以忽略,但是Error报错必须处理。
#执行SaaS部署,执行过程不能有任何异常报错,警告可以忽略。
cd /opt/opsany-paas/install/
./saas-ce-install.sh base
2.访问平台,进行基础设置。
安装完毕之后,在控制台会输出访问的地址和密码。请使用Chrome浏览器打开。
- 访问地址:https://$DOMAIN_NAME
- 用户名:admin
- 密码: 为了安全考虑,安装完毕之后自动修改并且输出。同时保存在$INSTALL_PATH/conf/.passwd_env文件中。
3.现在就可以正式使用OpsAny了,强烈建议你,先从快速入门开始,将资源进行纳管,然后再研究其它功能。
如果你遇到问题,建议先看下常见问题,看是否有收获。
如果你需要使用基础监控,还需要集成Zabbix,16G内存最佳。
如果你想使用DevOps相关功能,需要再单独准备一台8C 16G主机进行部署。
部署完毕后,想替换HTTPS证书,请按此操作。
在线部署完成后,方可进行离线部署。
生产环境部署规划¶
OpsAny是分布式的设计,社区版部署默认会将OpsAny Proxy和平台部署在相同主机上,如果你的网络环境复杂,可以根据官方文档部署独立Proxy服务。
内网部署,内网访问¶
部署场景介绍: 平台部署在内网,仅管理内网主机,无法上公网。
部署需求:
- 需要内网受管主机可以访问到OpsAny平台的80、443、4505、4506、8011、8012、10051端口。
- 可以使用内网IP访问,或者在有内网DNS的情况下,使用内网域名访问。
内网部署,公网访问¶
部署场景介绍:平台部署在内网,管理内网主机,同时也需要管理外网主机。
部署需求:
- 需要内网主机可以配置公网IP地址和域名,需要内网和公网均可以访问到OpsAny平台的80、443、4505、4506、8011、8012、10051。云主机请提前设置好安全组,再开始部署。
- 在【管控平台】-【采控中心】中需要设置外网和内网控制器地址。但是访问平台的地址只能三选一(域名、公网IP、内网IP),为了安全性,不支持内外网混合访问。建议使用域名。
公网部署,公网访问¶
部署场景介绍:平台部署在公网,可以管理内网主机(需要使用Proxy),也可以管理外网主机。
部署需求:
- 云主机请提前设置好安全组,再开始部署。需要内网和公网均可以访问到OpsAny平台的80、443、4505、4506、8011、8012、10051。
支持列表¶
测试通过系统:
- AlmaLinux 所有版本
- Rocky 所有版本
- CentOS 7.x所有版本
- CentOS 8.x所有版本
- Ubuntu 16.04、18.04、20.04、22.04
- UOS v20、v21、v22
- 麒麟 v10、v20、v30
- OpenEuler 20.03、22.03、23.03
- 包括其它还未测试,但是可以允许的系统
浏览器支持
- Google Chrome
- Microsoft Edge
- 360浏览器
- firefox
Agent/SSH支持系统列表:
- CentOS 6.0(仅SSH) 7.x 8.x版本
- Ubuntu 16.04、18.04、20.04 22.04
- Debian 12.0.0 11.1.0、10.0.0、9.0.0
- Windows 2010 Server以上版本
- AlmaLinux 8.3、8.4、9.0
- Rocky Linux 8.4、8.5、9.0
- EulerOS 2.5
- UOS v20
- 中标麒麟、银河麒麟
- 包括其它还未测试,但是可以允许的系统
部署服务明细¶
序号 | 服务名称 | 监听端口 | 备注 |
---|---|---|---|
基础服务 | OpenResty | 80、443、8011、8012 | 提供Web访问 |
MySQL | 3306 | 提供数据存储 | |
MongoDB | 27017 | 提供文档型数据存储 | |
RabbitMQ | 5672、15672 | 提供消息队列服务 | |
Redis | 6379 | 提供缓存服务 | |
Elasticsearch | 9200 | 提供日志存储和搜索 | |
平台服务 | appengine | 8000 | SAAS服务支持 |
paas | 8001 | 开发中心服务 | |
esb | 8002 | 企业服务总线 | |
login | 8003 | 统一登陆 | |
WebSocket | 8004 | 为堡垒机提供websocket | |
Proxy | 8010(8011、8012) | 用于多集群管理,8011对应https,8012对应http | |
应用服务 | StackStorm | 8005 | 提供执行编排服务 |
Zabbix | 8006 | 提供监控服务 | |
Grafana | 8007 | 提供可视化图表 | |
paasagent | 4245、8085 | SAAS服务部署 | |
RDP-websocket | 4822 | 连接Windows服务器 | |
备注 | 管理外网主机,平台需要独立地址并对外端口:80、443、4505、4506、8011、8012、10051 |