常见问题¶
0.什么是PaaS平台和SaaS平台?¶
OpsAny是PaaS平台+SaaS应用的架构模式,PaaS平台提供了基础的服务,例如统一登录验证(login)、API网关(esb)、应用的管理平台(appengine)、开发中心(paas)。基于PaaS提供的统一的开发框架进行SaaS平台的开发,所有SaaS平台可以统一登录验证,通过ESB进行相互调用。如果你可以自己开发SaaS。你甚至不用部署任何OpsAny的SaaS平台,直接开始造轮子即可。也可以基于OpsAny SaaS提供的接口进行二次开发或者独立的SaaS平台开发。
1.平台无法登录,不停跳转回登录页面。¶
由于安装时设置的DOAMIN_NAME和访问的地址不同导致的,验证会使用Cookie,而且设置了Cookie的作用域,因为配置的和访问的地址不同,导致验证失败。请使用install.config中的DOAMIN_NAME进行登录。
2. 安装完毕后,想修改DOMAIN_NAME如何进行设置。¶
cd /opt/opsany-paas/install
./paas-change-domain.sh old_domain_name new_domain_name
3.端口冲突之类的问题¶
需要一个干净的系统进行部署,可以参考安装手册中,OpsAny需要使用的端口号,保证端口号不能冲突。
4.PaaS安装失败如何继续?¶
执行uninstall.sh(卸载的时候会删除所有Docker容器,镜像会保留),然后重新执行paas-install.sh
5.如何替换HTTPS证书?¶
将证书替换到/opt/opsany/conf/nginx-conf.d/ssl/路径下,以$DOMAIN_NAME进行命名的,并重启容器。 docker restart opsany-openresty
例如演示环境的证书,安装完毕之后,会申请HTTPS证书,然后下面这样进行替换。
[root@demo ~]# /bin/cp 7310312_demo.opsany.com.pem /opt/opsany/conf/nginx-conf.d/ssl/demo.opsany.com.pem
[root@demo ~]# /bin/cp 7310312_demo.opsany.com.key /opt/opsany/conf/nginx-conf.d/ssl/demo.opsany.com.key
[root@demo ~]# docker restart opsany-openresty
6.堡垒机上传文件提示Request Entity Too Large。¶
- 修改Openresty的Nginx配置
[root@demo ~]# docker exec -it opsany-openresty /bin/sh
/ # vi /etc/nginx/nginx.conf
client_max_body_size 2G;
[root@demo ~]# docker restart opsany-openresty
- 修改PaasAgent中Nginx配置
[root@demo ~]# docker exec -it opsany-paas-paasagent /bin/sh
sh-4.2# vi /etc/nginx/conf.d/paasagent.conf
client_max_body_size 512m;
[root@demo ~]# docker restart opsany-paas-paasagent
7.如何开机自动启动?¶
OpsAny社区版使用容器部署,Docker会开机自动启动,然后v1.1.9之后版本已经添加重启应用脚本在/etc/rc.local中。v1.1.9之前版本可以根据下面操作:
cd /opt/opsany-paas/install/
cp saas-restart.sh /opt/opsany/
chmod +x /etc/rc.d/rc.local
echo "sleep 60 && /bin/bash /opt/opsany/saas-restart.sh" >> /etc/rc.d/rc.local
8.部署完成之后,如何修改对应的配置,例如数据库配置等?¶
所有平台的配置信息都是通过环境变量进行管理的,当SAAS启动的时候,PaaSAgent会从数据库获取环境变量配置为SAAS的运行配置。 使用管理员admin用户登录平台,访问 https://{domain}/admin/app_env/appenvvar/ 修改对应的配置后,需要重新点击【部署】按钮,进行重新部署即可。
9.为什么部署OpsAny的主机安装Zabbix Agent显示Zabbix监控不正常¶
因为Zabbix Agent只接受Zabbix Server的IP地址过来的请求,本机比较特殊,使用容器部署了Zabbix Server。Zabbix Agent识别出来的Server IP 地址为容器的IP地址,于是被拒绝了。需要手工修改Zabbix Agent的配置,在Server= 增加容器的IP地址。
10.为什么在CMDB录入的数据,在资产视图中无法展示?¶
在CMDB录入的数据可以在资产仓库进行查询。如果需要在资产试图中展示,需要将录入的工作完成才可。视图是一个树,从根开始展示。例如数据中心→区域→机柜→物理机这样的方式进行展示,你需要编辑物理机的管理,关联机柜,机柜关联区域,区域关联机房,才能在资产视图中进行展示。
11. 工作台部署失败,MongoDB无法启动¶
因为你的主机不支持MongoDB 5.0版本,你应该是本地测试虚拟机环境。可以通过手工修改脚本中的MongoDB版本,然后卸载,重新安装解决。
- 修改MongoDB版本
vim +144 /opt/opsany-paas/install/paas-install.sh
修改 ${PAAS_DOCKER_REG}/mongo:5.0.3 为
${PAAS_DOCKER_REG}/mongo:4.4.1-bionic
- 执行uninstall.sh uninstall卸载,重新进行安装。
12. OpsAny的权限体系是怎么设计的?我应该如何给用户授权。¶
- 用户的角色和权限
用户角色有:管理员、普通用户、开发者三种角色。
- 管理员角色:可以看到所有数据(参考下面的数据权限),但并不能看到所有页面,需要创建权限策略进行授权(参考下面的页面权限)。
- 普通用户角色:只能看到授权的页面和授权的数据。
-
开发者角色:类似普通用户角色,但是可以打开开发中心。
-
OpsAny的权限分为两种:
- 页面权限:设置用户可以看到哪个平台的哪个页面和哪个按钮。页面权限通过【统一权限】平台进行设置,依据RBAC(Role-Based Access Control)的设计模式,通过创建“权限策略”进行授权。
-
数据权限:设置用户可以看到的具体实例。例如哪些主机、哪些脚本、哪些应用等等。实例权限是通过【资源平台】创建授权策略进行授权。例外:【堡垒机】是独立的通过自身权限策略进行授权。
-
总结:管理员角色默认可以看到所有的数据,不需要进行数据授权,但是能访问的页面需要进行页面授权。普通用户角色需要页面授权和数据授权。这个设计和公有云是有区别的,目前大多数公有云是没有CMDB概念的,所以授权的时候,是页面权限和数据权限一起授权。但是在OpsAny中,数据权限由【资源平台】CMDB进行统一管理。
13. 忘记admin密码怎么办?¶
首先,新安装的平台,在安装完成后,会自动修改密码,并且输出出来,同时会将自动修改的密码写入到【$INSTALL_PATH/conf/.passwd_env】文件中。(这个是为了防止,用户安装完毕后忘记修改初始化密码,导致默认密码admin造成的弱口令安全风险。)
如果你自行修改了密码,而且忘记了密码怎么办呢?我们提供了重新初始化admin用户密码的脚本,在opsany-paas-login的容器中。
# 登录进容器里面
docker exec -it opsany-paas-login /bin/sh
# 设置环境变量,并执行初始化脚本,密码会被初始化为: 123456
cd /opt/opsany/paas/login
export BK_ENV="production"
python init_admin.py
#退出容器
exit
14.平台是如何启动的?¶
OpsAny所有服务均是使用Docker容器启动的,可以使用docker ps -a查看所有容器。所有服务的代理均在opsany-openresty容器中,大部分容器的配置都使用了Volume进行了挂载。 安装脚本在安装的过程中,会替换相关配置文件中的IP地址、用户名和密码。
[root@demo ~]# ls -l /opt/opsany/conf/
total 120
-rw-r--r-- 1 root root 242 Jul 12 13:13 daemon.json
drwxr-xr-x 2 root root 4096 Jul 12 13:13 grafana
-rw-r--r-- 1 root root 7284 Jul 12 13:13 heartbeat.yml
-rw-r--r-- 1 root root 191 Jul 12 13:13 mongodb-org.repo
-rw-r--r-- 1 root root 1673 Jul 12 13:13 mysqld.cnf
drwxr-xr-x 3 root root 4096 Jul 12 15:26 nginx-conf.d
-rw-r--r-- 1 root root 2583 Jul 12 13:13 nginx.conf
-rw-r--r-- 1 root root 1005 Jul 12 13:13 openssl.cnf
-rw-r--r-- 1 root root 552 Jul 12 13:14 paas_agent_config.yaml
-rw-r--r-- 1 root root 980 Jul 12 13:13 paasagent.conf
-rw-r--r-- 1 systemd-coredump root 46729 Jul 12 13:13 redis.conf
drwxr-xr-x 5 root root 4096 Jul 12 13:13 salt
-rw-r--r-- 1 root root 1130 Jul 12 13:13 settings_production.py.appengine
-rw-r--r-- 1 root root 1540 Jul 12 13:13 settings_production.py.esb
-rw-r--r-- 1 root root 1616 Jul 12 13:13 settings_production.py.login
-rw-r--r-- 1 root root 1767 Jul 12 13:13 settings_production.py.paas
-rw-r--r-- 1 root root 2385 Jul 12 13:13 settings_production.py.websocket
-rw-r--r-- 1 root root 1068 Jul 12 13:13 settings_production.py.websocket.init
15.如何查看日志?¶
1.查看PaaS日志
[root@demo ~]# ls -l /opt/opsany/logs/
total 36240
-rw-r--r-- 1 root root 545 Jul 12 13:14 appengine.log
-rw-r--r-- 1 root root 0 Jul 12 13:14 appengine_mysql.log
drwxr-xr-x 2 root root 4096 Jul 12 13:14 control
-rw-r--r-- 1 root root 68209 Jul 13 19:32 esb.log
-rw-r--r-- 1 root root 16363268 Jul 13 19:32 esb_api.log
-rw------- 1 root root 2796017 Jul 13 19:33 heartbeat
-rw-r--r-- 1 root root 8052 Jul 12 13:21 login.log
-rw-r--r-- 1 root root 0 Jul 12 13:14 login_mysql.log
-rw-r--r-- 1 root root 3385 Jul 12 17:10 nginx_paasagent_error.log
-rw-r--r-- 1 root root 2074644 Jul 13 19:32 nginx_paasagnet_access.log
-rw-r--r-- 1 root root 0 Jul 12 13:17 opsany-salt-api.log
-rw-r--r-- 1 root root 355005 Jul 13 19:33 opsany-salt-master.log
-rw-r--r-- 1 root root 592 Jul 12 13:18 opsany-salt-minion.log
-rw-r--r-- 1 root root 170153 Jul 13 16:11 paas-agent.log
-rw-r--r-- 1 root root 1086376 Jul 13 16:11 paas.log
-rw-r--r-- 1 root root 0 Jul 12 13:14 paas_agent-nginx.log
-rw-r--r-- 1 root root 0 Jul 12 13:14 paas_agent-supervisord.log
-rw-r--r-- 1 root root 288479 Jul 13 16:11 paas_appengine.log
-rw-r--r-- 1 root root 1622275 Jul 13 19:32 paas_esb.log
-rw-r--r-- 1 root root 4160086 Jul 13 19:32 paas_login.log
-rw-r--r-- 1 root root 0 Jul 12 13:13 paas_mysql.log
-rw-r--r-- 1 root root 7813059 Jul 13 19:32 paas_nginx_access.log
-rw-r--r-- 1 root root 2444 Jul 12 19:56 paas_nginx_error.log
-rw-r--r-- 1 root root 180758 Jul 13 19:32 paas_paas.log
-rw-r--r-- 1 root root 344 Jul 12 13:14 paas_websocket.log
2.查看SaaS日志
[root@demo ~]# ls -l /opt/opsany/saas/apps/logs/
total 28
drwxr-xr-x 2 root root 4096 Jul 12 13:22 cmdb
drwxr-xr-x 2 root root 4096 Jul 12 13:27 cmp
drwxr-xr-x 2 root root 4096 Jul 12 13:24 control
drwxr-xr-x 2 root root 4096 Jul 12 13:25 job
drwxr-xr-x 2 root root 4096 Jul 12 13:25 monitor
drwxr-xr-x 2 root root 4096 Jul 12 13:20 rbac
drwxr-xr-x 2 root root 4096 Jul 12 13:21 workbench
16.部署OpsAny的主机重启后,如何启动SaaS¶
[root@demo ~]# cd /opt/opsany-paas/install/
[root@demo install]# ./saas-restart.sh
也可以将该操作放到rc.local中自动开启
[root@demo ~]# chmod +x /etc/rc.d/rc.local
[root@demo ~]# vim /etc/rc.local
cd /opt/opsany-paas/install/ && sleep 60 && /bin/bash saas-restart.sh
为什么这块不直接处理好,还需要手工?因为SaaS的运行未来是在Kubernetes中,不存在重启的问题,这个是临时解决方案。
17.当内存足够的时候,如何进行性能调优,增加进程数量。¶
- 更新PaaS代码,获取最新的官方案例配置
cd /opt/opsany-paas && git pull
- 修改相关uwsgi参数
vim /opt/opsany-paas/paas-ce/paasagent/etc/templates/uwsgi.ini
参考调优参数 https://www.bookstack.cn/read/uwsgi-docs-2.0-zh/10968bff8b1ff094.md
- 将配置复制到容器中。
docker cp /opt/opsany-paas/paas-ce/paasagent/etc/templates/uwsgi.ini opsany-paas-paasagent:/opt/opsany/paas-agent/etc/templates/uwsgi.ini
- 重新部署所有SAAS
可以手工在开发中心,内置应用,逐个点击部署,也可以使用更新脚本进行更新。
cd /opt/opsany-paas/install && ./saas-update.sh base
18. 如何持续获取OpsAny的更新?¶
OpsAny社区版每季度末会发布一个版本,新版本的更新通知会以邮件的方式发送到您申请证书的邮箱中,同时也会在官方社区微信群中进行同步,敬请关注!
19. 如何卸载OpsAny?¶
如果OpsAny让你感觉不满意,可以在我们社区交流群提出改进建议。如果觉得就是不喜欢,那立即卸载了吧。毕竟人生苦短,何必自寻烦恼呢?但是卸载脚本有点简单粗暴,有必要说明一下。
- 执行卸载命令前,需要明确知道,该脚本会直接停止本机的所有容器,并删除所有容器。不管是不是OpsAny使用的容器,并直接删除安装目录。
cd /opt/opsany-paas/install
./uninstall.sh uninstall
- 世间多少纷扰事,浮华落尽总随风。OpsAny祝您开心度过每一天,我们会继续践行在“让运维更完美“的道路上,有缘再见!
20. 运维后面的路到底该怎么走?¶
如果你还处在迷茫期,又刚好接触了OpsAny,那么最后这个常见问题的答案希望能给您带来启发:目前运维行业存在的普通问题是运维工程师掌握了非常多的运维技能,但是很少有真正精通的领域,例如精通监控、精通Web架构、精通DevOps?或者再缩小一点,精通Zabbix、精通Kubernetes、精通Ansible、精通Jenkins?这种常见的开源工具,总之你需要有一个真正精通的技能,不然总有一天你会回来再看这个答案的。改变永远都不是最难的,最难的是你迟迟没有开始!