FAQ宝典之Rancher Server

Rancher FAQ宝典系列来袭,Rancher Server相关的常见问题,本文一网打尽。mysql

一、Docker运行Rancher Server容器应该注意什么?

须要注意运行rancher server容器时,不要使用host模式。程序中有些地方定义的是localhost或者127.0.0.1,若是容器网络设置为host,将会去访问宿主机资源,由于宿主机并无相应资源,rancher server容器启动就出错。web

PS:docker命令中,若是使用了 --network host参数,那后面再使用-p 8080:8080 就不会生效。
docker run -d -p 8080:8080 rancher/server:stable

此命令仅适用于单机测试环境,若是要生产使用Rancher server,请使用外置数据库(mysql)或者经过sql

-v /xxx/mysql/:/var/lib/mysql -v /xxx/log/:/var/log/mysql -v /xxx/cattle/:/var/lib/cattle

把数据挂载到宿主机上。若是用外置数据库,需提早对数据库作性能优化,以保证Rancher运行的最佳性能。docker

二、如何导出Rancher Server容器的内部数据库?

你能够经过简单的Docker命令从Rancher Server容器导出数据库。数据库

docker exec <CONTAINER_ID_OF_SERVER> mysqldump cattle > dump.sql

三、我正在运行的Rancher是什么版本的?

Rancher的版本位于UI的页脚的左侧。若是你点击版本号,将能够查看其余组件的详细版本。json

四、若是我没有在Rancher UI中删除主机而是直接删除会发生什么?

若是你的主机直接被删除,Rancher Server会一直显示该主机。主机会处于Reconnecting状态,而后转到Disconnected状态。你也能够经过添加主机再次把此节点添加到RANCHER集群,若是不在使用此节点,能够在UI中删除。api

若是你有添加了健康检查功能的服务自动调度到状态Disconnected主机上,CATTLE会将这些服务从新调度到其余主机上。性能优化

PS:若是使用了标签调度,若是你有多台主机就有相同的调度标签,那么服务会调度到其余具备调度标签的节点上;若是选择了指定运行到某台主机上,那主机删除后你的应用将没法在其余主机上自动运行。

五、我如何在代理服务器后配置主机?

要在代理服务器后配置主机,你须要配置Docker的守护进程。详细说明参考在代理服务器后添加自定义主机bash

六、为何同一主机在UI中屡次出现?

宿主机上var/lib/rancher/state这个文件夹,这是Rancher用来存储用于标识主机的必要信息。服务器

.registration_token中保存了主机的验证信息,若是里面的信息发生变化,RANCHER会认为这是一台新主机, 在你执行添加主机后,UI上将会出现另一台相同的主机,第一台主机接着处于失联状态。

七、在哪能找到 Rancher Server 容器的详细日志?

运行docker logs能够查看在Rancher Server容器的基本日志。要获取更详细的日志,你能够进入到Rancher Server容器内部并查看日志文件。

进入 Rancher Server 容器内部
docker exec -it <container_id> bash

跳转到 Cattle 日志所在的目录下
cd /var/lib/cattle/logs/
cat cattle-debug.log

在这个目录里面会出现cattle-debug.log和cattle-error.log。若是你长时间使用此Rancher Server,你会发现咱们天天都会建立一个新的日志文件。

八、将Rancher Server的日志复制到主机上

如下是将Rancher Server日志从容器复制到主机的命令。

docker cp <container_id>:/var/lib/cattle/logs /local/path

九、若是Rancher Server的IP改变了会怎么样?

若是更改了Rancher Server的IP地址,你须要用新的IP从新注册主机。

在Rancher中,点击系统管理->系统设置更新 Rancher Server的主机注册地址。注意必须包括Rancher Server暴露的端口号。默认状况下咱们建议按照安装手册中使用8080端口。

主机注册更新后,进入基础架构->添加主机->自定义。添加主机的docker run命令将会更新。使用更新的命令,在Rancher Server的全部环境中的全部主机上运行该命令。

十、Rancher Server运行变得很慢,怎么去优化它?

极可能有一些任务因为某些缘由而处于僵死状态,若是你可以用界面查看系统管理 -> 系统进程,你将能够看到Running中的内容,若是这些任务长时间运行(而且失败),则Rancher会最终使用太多的内存来跟踪任务。这使得Rancher Server处于了内存不足的状态。

为了使服务变为可响应状态,你须要添加更多内存。一般4GB的内存就够了。

你须要再次运行Rancher Server命令而且添加一个额外的选项-e JAVA_OPTS="-Xmx4096m"

docker run -d -p 8080:8080 --restart=unless-stopped -e JAVA_OPTS="-Xmx4096m" rancher/server

根据MySQL数据库的设置方式的不一样,你可能须要进行升级才能添加该选项。

若是是因为缺乏内存而没法看到系统管理 -> 系统进程的话,那么在重启Rancher Server以后,已经有了更多的内存。你如今应该能够看到这个页面了,并能够开始对运行时间最长的进程进行故障分析。

十一、Rancher Server数据库数据增加太快

Rancher Server会自动清理几个数据库表,以防止数据库增加太快。若是对你来讲这些表没有被及时清理,请使用API来更新清理数据的时间间隔。

在默认状况下,产生在2周之前的container_event和service_event表中的数据则数据会被删除。在API中的设置是以秒为单位的(1209600)。API中的设置为events.purge.after.seconds。

默认状况下,process_instance表在1天前产生的数据将会被删除,在API中的设置是以秒为单位的(86400)。API中的设置为process_instance.purge.after.seconds。

为了更新API中的设置,你能够跳转到http://&lt;rancher-server-ip&gt;:8080/v1/settings页面,搜索要更新的设置,点击links -> self跳转到你点击的连接去设置,点击侧面的“编辑”更改’值’。请记住,值是以秒为单位。

十二、为何Rancher Server升级失败致使数据库被锁定?

若是你刚开始运行Rancher并发现它被永久冻结,多是liquibase数据库上锁了。在启动时,liquibase执行模式迁移。它的竞争条件可能会留下一个锁定条目,这将阻止后续的流程。

若是你刚刚升级,在Rancher Server日志中,MySQL数据库可能存在还没有释放的日志锁定。

....liquibase.exception.LockException: Could not acquire change log lock. Currently locked by <container_ID>

释放数据库锁

注意:请不要释放数据库锁,除非有相关日志锁的异常。若是是因为数据迁移致使升级时间过长,在这种状况下释放数据库锁,可能会使你遇到其余迁移问题。

若是你已根据升级文档建立了Rancher Server的数据容器,你须要exec到rancher-data容器中升级DATABASECHANGELOGLOCK表并移除锁,若是你没有建立数据容器,你用exec到包含有你数据库的容器中。

sudo docker exec -it <container_id> mysql

一旦进入到 Mysql 数据库,你就要访问cattle数据库。

FAQ宝典之Rancher Server

1三、管理员密码忘记了,我该如何重置管理员密码?

若是你的身份认证出现问题(例如管理员密码忘记),则可能没法访问Rancher。要从新得到对Rancher的访问权限,你须要在数据库中关闭访问控制。为此,你须要访问运行Rancher Server的主机。

ps:假设在重置访问控制以前有建立过其余用户,那么在认证方式没有变化的状况下,重置访问控制除了超级管理员(第一个被建立的管理员,ID为1a1),其余用户帐号信息不会受影响。

  • 假设数据库为rancher内置数据库
docker exec -it <rancher_server_container_ID> mysql

注意: 这个&lt;rancher_server_container_ID&gt;是具备Rancher数据库的容器。若是你升级并建立了一个Rancher数据容器,则须要使用Rancher数据容器的ID而不是Rancher Server容器,rancher内置数据库默认密码为空。

  • 选择Cattle数据库。
mysql> use cattle;
  • 查看setting表。
mysql> select * from setting;
  • 更改api.security.enabled为false,并清除api.auth.provider.configured的值。

FAQ宝典之Rancher Server

  • 确认更改在setting表中是否生效。
mysql> select * from setting;

可能须要约1分钟才能在用户界面中关闭身份认证,而后你能够经过刷新网页来登录没有访问控制的Rancher Server。

关闭访问控制后,任何人均可以使用UI/API访问Rancher Server。

刷新页面,在系统管理/访问控制 从新开启访问控制。从新开启访问控制填写的管理员用户名将会替换原有的超级管理员用户名(ID为1a1 )。

1四、Rancher Compose Executor和Go-Machine-Service不断重启

在高可用集群中,若是你正在使用代理服务器后,若是rancher-compose-executor和go-machine-service不断重启,请确保你的代理使用正确的协议。

1五、为何在日志中看到Go-Machine-Service在不断从新启动?我该怎么办?

Go-machine-service是一种经过websocket链接到Rancher API服务器的微服务。若是没法链接,则会从新启动并再次尝试。若是你运行的是单节点的Rancher Server,它将使用你为主机注册地址来链接到Rancher API服务。检查从Rancher Sever容器内部是否能够访问主机注册地址。

docker exec -it <rancher-server_container_id> bash
在 Rancher-Server 容器内
curl -i <Host Registration URL you set in UI>/v1

你应该获得一个json响应。若是认证开启,响应代码应为401。若是认证未打开,则响应代码应为200。 验证Rancher API Server 可以使用这些变量,经过登陆go-machine-service容器并使用你提供给容器的参数进行curl命令来验证链接:

docker exec -it <go-machine-service_container_id> bash
在go-machine-service 容器内
curl -i -u '<value of CATTLE_ACCESS_KEY>:<value of CATTLE_SECRET_KEY>' <value of CATTLE_URL>

你应该获得一个json响应和200个响应代码。若是curl命令失败,那么在go-machine-service和Rancher API server之间存在链接问题。若是curl命令没有失败,则问题多是由于go-machine-service尝试创建websocket链接而不是普通的http链接。若是在go-machine-service和Rancher API服务器之间有代理或负载平衡,请验证代理是否支持websocket链接。

1六、Rancher Catalog 多久同步一次

http://X.X.X.X/v1/settings/catalog.refresh.interval.seconds 默认300秒,能够修改,点setting会当即更新。

相关文章
相关标签/搜索