k8s StatefulSet:
apiVersion: v1
kind: Service
metadata:
name: my-web
labels:
app: my-web
spec:
ports:
- name: http
port: 8080
targetPort: 8080
selector:
app: my-web
type: ClusterIP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: my-web
labels:
app: my-web
spec:
serviceName: my-web
selector:
matchLabels:
app: my-web
template:
metadata:
labels:
app: my-web
spec:
containers:
- image: my-web:1.0
ports:
- containerPort: 8080
服务器.xml
<Engine>
<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster">
<Channel className="org.apache.catalina.tribes.group.GroupChannel">
<Membership className="org.apache.catalina.tribes.membership.cloud.CloudMembershipService"/>
</Channel>
</Cluster>
...
</Engine>
两个 Pod 正在运行:
kubectl 获取 pod | findstr web
NAME READY STATUS RESTARTS AGE
my-web-0 1/1 Running 0 53m
my-web-1 1/1 Running 0 52m
来自 my-web-0 和 my-web-1 的 tomcat 日志:
02-Jun-2023 17:43:26.282 INFO [main] org.apache.catalina.ha.session.DeltaManager.startInternal Register manager [localhost#] to cluster element [Engine] with name [Catalina]
02-Jun-2023 17:43:26.283 INFO [main] org.apache.catalina.ha.session.DeltaManager.startInternal Starting clustering manager at [localhost#]
02-Jun-2023 17:43:26.283 INFO [main] org.apache.catalina.ha.session.DeltaManager.getAllClusterSessions Manager [localhost#]: skipping state transfer. No members active in cluster group.
集群组中没有活动成员。Tomcat 无法找到集群成员。没有错误日志。
Pod my-web-0 和 my-web-1 可以相互连接。
我的网络-0:
$ curl -v telnet://my-web-1.my-web:8080
Connected to my-web-1.my-web (10.1.0.247) port 8080 (#0)
我的网络-1:
$ curl -v telnet://my-web-0.my-web:8080
Connected to my-web-0.my-web (10.1.0.246) port 8080 (#0)
web.xml 包含:
<distributable />
tomcat 集群在 k8s 中工作还需要什么吗?