This release introduces Raft-based state management for GatewayD to ensure efficient and consistent coordination between multiple instances. By leveraging HashiCorp’s Raft implementation, GatewayD now maintains a unified state for parameters like connection pools and load-balancer strategies across all instances in a cluster, ensuring high availability, consistency, scalability, and efficiency.
Key Features and Objectives:
-
High Availability: Ensures the system remains operational even if individual instances fail. Raft provides fault tolerance by replicating state across multiple nodes, enabling consistent state retrieval and updates during failover scenarios.
-
Consistency: Guarantees that all instances in the cluster share the same view of stateful parameters, such as connection pools and load-balancer strategies, maintaining synchronized operations across distributed instances.
-
Scalability: Simplifies state coordination in clusters, enabling seamless scaling of GatewayD instances without introducing inconsistencies or requiring manual intervention.
-
Efficiency: Propagates updates to stateful parameters in real-time, ensuring optimal load balancing and resource utilization across instances.
Implementation Details:
- Unified State Management: A single Raft cluster handles stateful parameters as key-value pairs, ensuring consistency across nodes without the need for complex databases.
- Real-time Updates: Changes in one instance are immediately propagated to others, maintaining consistency and optimal load balancing.
- Fault Tolerance and Recovery: Raft’s persistence via BoltDB ensures reliability, while in-memory runtime state management simplifies operations.
This update resolves inconsistencies in the previous per-instance state management approach, ensuring scalable and robust operation for GatewayD clusters. A huge thanks to @sinadarbouy for his excellent work on this implementation! 🎉
This release also includes several critical updates and fixes to enhance security, improve performance, and maintain compatibility:
Security Updates:
- OpenSSL Update: Upgraded to
3.3.2-r1
to address CVE-2024-9143. - Crypto Library Fix: Resolved CVE-2024-45337 by updating
golang.org/x/crypto
to the latest version.
Dependency Updates:
- GitHub Actions: Updated
softprops/action-gh-release
tov2
for enhanced functionality and compatibility. - Direct Dependencies: Updated direct dependencies to their latest stable versions.
Development Improvements:
- SDK Update: Updated the SDK to the latest version.
- Go Updates: Upgrade Go to the latest version.
- Protobuf Changes: Regenerated Protobuf message stubs with HTTP annotations for improved API compatibility.
Linter Fixes:
- Addressed all issues reported by linters to ensure cleaner and more maintainable code.
What's Changed
- Update deps by @mostafa in #631
- feat(raft): Implement Raft-based Consistent Hash State Management by @sinadarbouy in #636
- Update deps by @mostafa in #639
Full Changelog: v0.10.0...v0.10.1