Skip to content

Commit 62619e8

Browse files
authored
[Hotfix][Zeta] Fix hazelcast client should overwrite cluster address by system env (#7790)
1 parent 5b5ee84 commit 62619e8

File tree

7 files changed

+81
-16
lines changed

7 files changed

+81
-16
lines changed

docs/en/start-v2/docker/docker.md

+14-8
Original file line numberDiff line numberDiff line change
@@ -173,18 +173,20 @@ run this command to get the pod ip.
173173

174174
- start worker node
175175
```shell
176+
# you need update yourself master container ip to `ST_DOCKER_MEMBER_LIST`
176177
docker run -d --name seatunnel_worker_1 \
177178
--network seatunnel-network \
178179
--rm \
179-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # set master container ip to here
180+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
180181
apache/seatunnel \
181182
./bin/seatunnel-cluster.sh -r worker
182183

183184
## start worker2
184-
docker run -d --name seatunnel_worker_2 \
185+
# you need update yourself master container ip to `ST_DOCKER_MEMBER_LIST`
186+
docker run -d --name seatunnel_worker_2 \
185187
--network seatunnel-network \
186188
--rm \
187-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # set master container ip to here
189+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
188190
apache/seatunnel \
189191
./bin/seatunnel-cluster.sh -r worker
190192

@@ -194,20 +196,22 @@ docker run -d --name seatunnel_worker_2 \
194196

195197
run this command to start master node.
196198
```shell
199+
# you need update yourself master container ip to `ST_DOCKER_MEMBER_LIST`
197200
docker run -d --name seatunnel_master \
198201
--network seatunnel-network \
199202
--rm \
200-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # set exist master container ip to here
203+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
201204
apache/seatunnel \
202205
./bin/seatunnel-cluster.sh -r master
203206
```
204207

205208
run this command to start worker node.
206209
```shell
210+
# you need update yourself master container ip to `ST_DOCKER_MEMBER_LIST`
207211
docker run -d --name seatunnel_worker_1 \
208212
--network seatunnel-network \
209213
--rm \
210-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # set master container ip to here
214+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
211215
apache/seatunnel \
212216
./bin/seatunnel-cluster.sh -r worker
213217
```
@@ -371,21 +375,23 @@ and run `docker-compose up -d` command, the new worker node will start, and the
371375
#### use docker as a client
372376
- submit job :
373377
```shell
378+
# you need update yourself master container ip to `ST_DOCKER_MEMBER_LIST`
374379
docker run --name seatunnel_client \
375380
--network seatunnel-network \
381+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
376382
--rm \
377383
apache/seatunnel \
378-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # set it as master node container ip
379-
./bin/seatunnel.sh -c config/v2.batch.config.template # this is an default config, if you need submit your self config, you can mount config file.
384+
./bin/seatunnel.sh -c config/v2.batch.config.template
380385
```
381386

382387
- list job
383388
```shell
389+
# you need update yourself master container ip to `ST_DOCKER_MEMBER_LIST`
384390
docker run --name seatunnel_client \
385391
--network seatunnel-network \
392+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
386393
--rm \
387394
apache/seatunnel \
388-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # set it as master node container ip
389395
./bin/seatunnel.sh -l
390396
```
391397

docs/zh/start-v2/docker/docker.md

+14-8
Original file line numberDiff line numberDiff line change
@@ -176,17 +176,20 @@ docker inspect master-1
176176

177177
- 启动worker节点
178178
```shell
179+
# 将ST_DOCKER_MEMBER_LIST设置为master容器的ip
179180
docker run -d --name seatunnel_worker_1 \
180181
--network seatunnel-network \
181182
--rm \
182-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # 设置为刚刚启动的master容器ip
183+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
183184
apache/seatunnel \
184185
./bin/seatunnel-cluster.sh -r worker
185186

186-
docker run -d --name seatunnel_worker_2 \
187+
## 启动第二个worker节点
188+
# 将ST_DOCKER_MEMBER_LIST设置为master容器的ip
189+
docker run -d --name seatunnel_worker_2 \
187190
--network seatunnel-network \
188191
--rm \
189-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # 设置为刚刚启动的master容器ip
192+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
190193
apache/seatunnel \
191194
./bin/seatunnel-cluster.sh -r worker
192195

@@ -195,21 +198,22 @@ docker run -d --name seatunnel_worker_2 \
195198
#### 集群扩容
196199

197200
```shell
198-
## start master and export 5801 port
201+
# 将ST_DOCKER_MEMBER_LIST设置为已经启动的master容器的ip
199202
docker run -d --name seatunnel_master \
200203
--network seatunnel-network \
201204
--rm \
202-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # 设置为已启动的master容器ip
205+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
203206
apache/seatunnel \
204207
./bin/seatunnel-cluster.sh -r master
205208
```
206209

207210
运行这个命令创建一个worker节点
208211
```shell
212+
# 将ST_DOCKER_MEMBER_LIST设置为master容器的ip
209213
docker run -d --name seatunnel_worker_1 \
210214
--network seatunnel-network \
211215
--rm \
212-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # 设置为已启动的master容器ip
216+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
213217
apache/seatunnel \
214218
./bin/seatunnel-cluster.sh -r worker
215219
```
@@ -363,21 +367,23 @@ networks:
363367
#### 使用docker container作为客户端
364368
- 提交任务
365369
```shell
370+
# 将ST_DOCKER_MEMBER_LIST设置为master容器的ip
366371
docker run --name seatunnel_client \
367372
--network seatunnel-network \
373+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
368374
--rm \
369375
apache/seatunnel \
370-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # set it as master node container ip
371376
./bin/seatunnel.sh -c config/v2.batch.config.template
372377
```
373378

374379
- 查看作业列表
375380
```shell
381+
# 将ST_DOCKER_MEMBER_LIST设置为master容器的ip
376382
docker run --name seatunnel_client \
377383
--network seatunnel-network \
384+
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \
378385
--rm \
379386
apache/seatunnel \
380-
-e ST_DOCKER_MEMBER_LIST=172.18.0.2:5801 \ # set it as master node container ip
381387
./bin/seatunnel.sh -l
382388
```
383389

seatunnel-engine/seatunnel-engine-client/pom.xml

+6
Original file line numberDiff line numberDiff line change
@@ -99,5 +99,11 @@
9999
<artifactId>awaitility</artifactId>
100100
<scope>test</scope>
101101
</dependency>
102+
<dependency>
103+
<groupId>org.junit-pioneer</groupId>
104+
<artifactId>junit-pioneer</artifactId>
105+
<version>1.9.1</version>
106+
<scope>test</scope>
107+
</dependency>
102108
</dependencies>
103109
</project>

seatunnel-engine/seatunnel-engine-client/src/test/java/org/apache/seatunnel/engine/client/SeaTunnelClientTest.java

+10
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.junit.jupiter.api.Test;
4545
import org.junit.jupiter.api.condition.DisabledOnOs;
4646
import org.junit.jupiter.api.condition.OS;
47+
import org.junitpioneer.jupiter.SetEnvironmentVariable;
4748

4849
import com.hazelcast.client.config.ClientConfig;
4950
import com.hazelcast.core.HazelcastInstance;
@@ -745,6 +746,15 @@ public void testGetMultiTableJobMetrics() {
745746
}
746747
}
747748

749+
@Test
750+
@SetEnvironmentVariable(
751+
key = "ST_DOCKER_MEMBER_LIST",
752+
value = "127.0.0.1,127.0.0.2,127.0.0.3,127.0.0.4")
753+
public void testDockerEnvOverwrite() {
754+
ClientConfig clientConfig = ConfigProvider.locateAndGetClientConfig();
755+
Assertions.assertEquals(4, clientConfig.getNetworkConfig().getAddresses().size());
756+
}
757+
748758
@AfterAll
749759
public static void after() {
750760
INSTANCE.shutdown();

seatunnel-engine/seatunnel-engine-common/src/main/java/org/apache/seatunnel/engine/common/config/ConfigProvider.java

+4
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,10 @@ public static SeaTunnelConfig locateAndGetSeaTunnelConfigFromString(String sourc
113113
yamlConfigLocator.locateDefault();
114114
config = new YamlClientConfigBuilder(yamlConfigLocator.getIn()).build();
115115
}
116+
String stDockerMemberList = System.getenv("ST_DOCKER_MEMBER_LIST");
117+
if (stDockerMemberList != null) {
118+
config.getNetworkConfig().setAddresses(Arrays.asList(stDockerMemberList.split(",")));
119+
}
116120
return config;
117121
}
118122

seatunnel-engine/seatunnel-engine-server/pom.xml

+6
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,12 @@
103103
<version>2.7.5</version>
104104
<scope>test</scope>
105105
</dependency>
106+
<dependency>
107+
<groupId>org.junit-pioneer</groupId>
108+
<artifactId>junit-pioneer</artifactId>
109+
<version>1.9.1</version>
110+
<scope>test</scope>
111+
</dependency>
106112
</dependencies>
107113

108114
</project>

seatunnel-engine/seatunnel-engine-server/src/test/java/org/apache/seatunnel/engine/server/CoordinatorServiceTest.java

+27
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
package org.apache.seatunnel.engine.server;
1919

2020
import org.apache.seatunnel.engine.common.Constant;
21+
import org.apache.seatunnel.engine.common.config.ConfigProvider;
22+
import org.apache.seatunnel.engine.common.config.SeaTunnelConfig;
2123
import org.apache.seatunnel.engine.common.exception.SeaTunnelEngineException;
2224
import org.apache.seatunnel.engine.core.dag.logical.LogicalDag;
2325
import org.apache.seatunnel.engine.core.job.JobImmutableInformation;
@@ -27,6 +29,7 @@
2729
import org.junit.jupiter.api.Assertions;
2830
import org.junit.jupiter.api.Disabled;
2931
import org.junit.jupiter.api.Test;
32+
import org.junitpioneer.jupiter.SetEnvironmentVariable;
3033

3134
import com.hazelcast.instance.impl.HazelcastInstanceImpl;
3235
import com.hazelcast.internal.serialization.Data;
@@ -238,4 +241,28 @@ public void testJobRestoreWhenMasterNodeSwitch() throws InterruptedException {
238241
server2.getCoordinatorService().getJobStatus(jobId)));
239242
instance2.shutdown();
240243
}
244+
245+
@Test
246+
@SetEnvironmentVariable(
247+
key = "ST_DOCKER_MEMBER_LIST",
248+
value = "127.0.0.1,127.0.0.2,127.0.0.3,127.0.0.4")
249+
public void testDockerEnvOverwrite() {
250+
SeaTunnelConfig seaTunnelConfig = ConfigProvider.locateAndGetSeaTunnelConfig();
251+
if (seaTunnelConfig
252+
.getHazelcastConfig()
253+
.getNetworkConfig()
254+
.getJoin()
255+
.getTcpIpConfig()
256+
.isEnabled()) {
257+
Assertions.assertEquals(
258+
4,
259+
seaTunnelConfig
260+
.getHazelcastConfig()
261+
.getNetworkConfig()
262+
.getJoin()
263+
.getTcpIpConfig()
264+
.getMembers()
265+
.size());
266+
}
267+
}
241268
}

0 commit comments

Comments
 (0)