You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: migration/online/zdm-proxy/README.md
+17-16Lines changed: 17 additions & 16 deletions
Original file line number
Diff line number
Diff line change
@@ -2,15 +2,21 @@
2
2
3
3
This project extends the official [ ZDM Proxy](https://github.com/datastax/zdm-proxy) to support seamless **zero-downtime migration** from **Apache Cassandra** to **Amazon Keyspaces (for Apache Cassandra)** with AWS best practices.
4
4
5
-
It introduces key enhancements:
5
+
The ZDM Proxy features:
6
+
- Used to perform online migration from one Cassandra cluster to another.
7
+
- Can perform dual writes without refactoring existing applications
8
+
- Perform perform dual reads for query validation
9
+
10
+
This repository introduces key enhancements for use with Amazon Web Services and Amazon Keyspaces:
6
11
7
12
- A custom Docker image hosted in **Amazon ECR** for VPC-accessible deployments.
8
13
- A **CloudFormation template** to deploy the proxy on **AWS Fargate**, ensuring a scalable, serverless, and secure setup within your existing AWS infrastructure.
14
+
- customization to support keyspaces system tables.
9
15
10
16
11
17
The proxy is deployed with Amazon ECS on Fargate which can scale up and down based on application demand. The Network load balancer allows application traffic to be distributed across a number of ECS tasks.
12
18
13
-

19
+

14
20
15
21
16
22
@@ -31,26 +37,27 @@ The proxy is deployed with Amazon ECS on Fargate which can scale up and down bas
31
37
32
38
-**VPCId**: ID of your target VPC.
33
39
-**PrivateSubnetIds**: List of private subnet IDs.
34
-
-**SecurityGroupId**: Security Group for the Network Load Balancer.
35
-
-**RouteTableId**: Optional; for route management if using PrivateLink.
40
+
-**SecurityGroupId**: Security Group for the Network Load Balancer, and the ECS cluster.
41
+
-**RouteTableId**: Used for S3 gateway.
36
42
37
43
### 🔄 Origin & Target Cassandra Config
38
44
39
45
-**ZDMOriginContactPoints**, **ZDMTargetContactPoints**: IP/DNS for the clusters.
40
-
-**ZDMOriginPort**, **ZDMTargetPort**: Usually 9042 for Cassandra, 9142 for Amazon Keyspaces.
-**ZDMOriginPort**, **ZDMTargetPort**: Usually 9042 for Cassandra, always 9142 for Amazon Keyspaces.
47
+
-**ZDMOriginUsername/Password**, **ZDMTargetUsername/Password**: Auth credentials. For Keyspaces see [Create service-specific credentials](https://docs.aws.amazon.com/keyspaces/latest/devguide/programmatic.credentials.ssc.html)
42
48
43
49
### ⚙️ Proxy Config
44
50
45
-
-**ServiceReplicaCount**: Number of ECS tasks to launch.
46
-
-**ZDMProxyPort**: Port for the proxy service. Default is `14002`.
51
+
-**ServiceReplicaCount**: Number of ECS tasks to launch. 3 is a good start
52
+
-**ZDMProxyPort**: Port for the proxy service and networkload blancer. Default is `14002`. Do not use 9142.
47
53
48
54
---
49
55
50
56
## 📦 Deployment Instructions
51
57
52
-
### 1. 🧱 Build and Push Image
58
+
### 1. 🧱 Build and Push Image to Amazon Elastic Container Registery
53
59
60
+
The following will download zdmproxy image, apply the best practices for Amazon Keyspaces captured in this projects [Dockerfile](DockerFile)
54
61
```bash
55
62
./move-docker-to-ecr.sh
56
63
```
@@ -64,16 +71,10 @@ Upload the `zdm-proxy-cloudformation.yaml` to S3 or the AWS Console and deploy i
64
71
## 🔐 Security and TLS
65
72
66
73
- TLS is handled via Amazon Keyspaces' default requirement. The proxy ensures secure, in-transit communication.
74
+
- If using TLS for self managed cassandra, include it in the DockerFile.
67
75
68
76
---
69
77
70
-
## ✅ Best Practices for Amazon Keyspaces
71
-
72
-
- Uses **port 9142** for CQL over TLS as required by Amazon Keyspaces.
73
-
- Supports **DNS-based discovery** of Amazon Keyspaces via `entrypoint.sh`.
74
-
- Deployable **entirely within a VPC** for added security and compliance.
0 commit comments