我想将 Tomcat 的 HttpSession 持久保存到磁盘,以便可以在可扩展的云环境中使用它。关键是,将会有许多 Tomcat 节点(在云 PaaS 中),并且客户端可以定向到其中的任何一个。我们希望从共享磁盘单元保留并加载会话。
我已经这样配置了 PersistentManager:
上下文.xml
<Manager className="org.apache.catalina.session.PersistentManager">
<Store className="org.apache.catalina.session.FileStore" directory="c:/somedir"/>
</Manager>
Run Code Online (Sandbox Code Playgroud)
问题是会话显然永远不会刷新到磁盘。
我更改了<Manager>配置,添加了 maxIdleBackup:
<Manager className="org.apache.catalina.session.PersistentManager maxIdleBackup="1">
Run Code Online (Sandbox Code Playgroud)
这样,我大约需要一分钟才能看到会话持久保存到磁盘上。奇怪的是,该文档指出它应该需要大约一秒钟的时间:
maxIdleBackup:自上次访问会话到有资格保留到会话存储之前的时间间隔(以秒为单位),或 -1 以禁用此功能。默认情况下,此功能处于禁用状态。
其他配置:
按照文档我设置了系统属性
org.apache.catalina.session.StandardSession.ACTIVITY_CHECK -> true
Run Code Online (Sandbox Code Playgroud)
有没有办法立即将会话刷新到磁盘?是否可以使会话中的任何更改也立即保留?
更新:
我尝试强制钝化会话并使用 刷新到磁盘maxIdleBackup="0" minIdleSwap="0" maxIdleSwap="1",但仍然需要大约一分钟。
了解Ubernetes旨在完全解决此问题,目前是否可以(不一定推荐)跨多个内部企业数据延伸器跨越单个K8/OpenShift集群?
此外,假设数据中心之间的延迟相对较低,并且整个企业数据中心的基础架构相对一致.
示例:给定3个公司DC,在每个数据中心(作为单个集群)部署1 ..*主站,并在每个DC上具有1个*节点,其中pods/rc/services/...在所有3个DC上旋转.
有人在Ubernetes下降之前实现了这样的停止间隙解决方案吗?如果有的话,它是如何工作的以及在这样运行时要考虑的一些注意事项?
我创建了一个testing1发布docker图像的项目。
现在,我想testing2用推入的相同图像创建另一个类似的项目testing1。我不想再次发布。
我试图了解Openshift中持久卷声明的不同访问模式.从这里找到以下信息
Access Mode CLI Abbreviation Description
ReadWriteOnce RWO The volume can be mounted as read-write by a single node.
ReadOnlyMany ROX The volume can be mounted read-only by many nodes.
ReadWriteMany RWX The volume can be mounted as read-write by many nodes.
Run Code Online (Sandbox Code Playgroud)
我知道PVC绑定到单个项目/命名空间,也可以扩展到不同的项目.
但这里的混淆是,"单节点"或"多节点"在这里意味着什么.例如,在RWO模式中,"The volume can be mounted as read-write by a single node".它指的是什么节点.
有人可以告诉我这些模式对于单个项目/命名空间的重要性.使用RWO的存储是否只能对一个应用程序或项目中的所有应用程序具有写入权限?
执行舵图时出现以下错误。
错误:helmcharts/templates/route.yaml 上的 YAML 解析错误:将 YAML 转换为 JSON 时出错:yaml:第 25 行:找不到预期的“:”
如果我从 Values.yaml 文件中删除多行字符串“|-”,同时将证书引用到route.yaml,则该图表可以正常工作。由于我删除了“|-”,因此在将证书内容复制到route.yaml并且无法创建路由时,不会以适当的缩进保留证书内容。
key: <--- works if I don't provide multiline "|-"
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
certificate:
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
caCertificate:
-----BEGIN CERTIFICATE-----
[...]
-----END CERTIFICATE-----
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?在values.yaml 文件中提供证书内容并将其传递给route.yaml 是否是正确的方法。就 Ingress 而言,只需创建一个 tls 秘密对象并在 values.yaml 中传递文件名就非常简单了,但是我们如何在 openshift 路由中实现相同的效果呢?
值.yaml
route:
Enabled: true
annotations:
haproxy.router.openshift.io/cookie_name: SESSION_XLD
haproxy.router.openshift.io/disable_cookies: "false"
haproxy.router.openshift.io/rewrite-target: /
path: /
hosts:
- www.example.com
tls:
key: |- <--- Doesn't work if i provide this "|-"
-----BEGIN CERTIFICATE----- …Run Code Online (Sandbox Code Playgroud) openshift kubernetes openshift-enterprise kubernetes-helm helm-tls
我是 devops 的新手,正在阅读有关此的 openshift 文档。似乎构建配置和管道(openshift 4.6 中的 tekton)都可以实现源到图像的过程并由 git webhooks 触发。那么openshift buildconfig 和pipeline 有什么区别呢?
PS:刚刚完成了openshift上的pipeline教程,整个过程没有创建build或buildconfig资源。
可能是一个基本的..
我在 Openshift Enterprise 3.2 中创建了一个 pod,配置设置为restartPolicy: Always. 所以理想情况下,当 pod 被销毁时,Openshift 将确保重新运行/重新创建 pod,因为重启策略。
现在我不再需要吊舱了。当我尝试销毁 pod 时,它又被创建了。
我的问题是摧毁吊舱的理想方法是什么 restartPolicy: Always
使用oc,我可以在开放班次中移植一个吊舱以获得本地访问权限.
oc get pods
oc port-forward MY-POD-NAME 5555:5555
Run Code Online (Sandbox Code Playgroud)
我启动它后如何阻止它?
我搜索过了
oc port-forward --help
Run Code Online (Sandbox Code Playgroud)
我没有办法获得所有"port-forwards"的列表来尝试获得一个唯一的名称.
我尝试开始收听时出现错误消息(注意,重新部署后我的pod名称不同)
无法侦听端口5555:所有侦听器都无法创建以下错误:无法创建侦听器:错误侦听tcp4 127.0.0.1:5555:绑定:地址已在使用中,无法创建侦听器:错误侦听tcp6:address [[ :: 1]]:5555:地址错误中缺少端口:无法侦听任何请求的端口:[{5555 5555}]
我钓过的网址:
https://docs.openshift.com/enterprise/3.0/dev_guide/port_forwarding.html
https://docs.openshift.com/enterprise/3.0/cli_reference/basic_cli_operations.html
openshift openshift-enterprise openshift-client-tools openshift-3
openshift ×7
kubernetes ×4
devops ×1
docker ×1
helm-tls ×1
java ×1
openshift-3 ×1
tekton ×1
tomcat ×1
tomcat8 ×1