mirror of
https://github.com/outbackdingo/cozystack.git
synced 2026-02-05 08:17:59 +00:00
80 lines
5.7 KiB
Markdown
80 lines
5.7 KiB
Markdown
# Managed Nginx Caching Service
|
|
|
|
The Nginx Caching Service is designed to optimize web traffic and enhance web application performance. This service combines custom-built Nginx instances with HAproxy for efficient caching and load balancing.
|
|
|
|
## Deployment infromation
|
|
|
|
The Nginx instances include the following modules and features:
|
|
|
|
- VTS module for statistics
|
|
- Integration with ip2location
|
|
- Integration with ip2proxy
|
|
- Support for 51Degrees
|
|
- Cache purge functionality
|
|
|
|
HAproxy plays a vital role in this setup by directing incoming traffic to specific Nginx instances based on a consistent hash calculated from the URL. Each Nginx instance includes a Persistent Volume Claim (PVC) for storing cached content, ensuring fast and reliable access to frequently used resources.
|
|
|
|
## Deployment Details
|
|
|
|
The deployment architecture is illustrated in the diagram below:
|
|
|
|
```
|
|
|
|
┌─────────┐
|
|
│ metallb │ arp announce
|
|
└────┬────┘
|
|
│
|
|
│
|
|
┌───────▼───────────────────────────┐
|
|
│ kubernetes service │ node
|
|
│ (externalTrafficPolicy: Local) │ level
|
|
└──────────┬────────────────────────┘
|
|
│
|
|
│
|
|
┌────▼────┐ ┌─────────┐
|
|
│ haproxy │ │ haproxy │ loadbalancer
|
|
│ (active)│ │ (backup)│ layer
|
|
└────┬────┘ └─────────┘
|
|
│
|
|
│ balance uri whole
|
|
│ hash-type consistent
|
|
┌──────┴──────┬──────────────┐
|
|
┌───▼───┐ ┌───▼───┐ ┌───▼───┐ caching
|
|
│ nginx │ │ nginx │ │ nginx │ layer
|
|
└───┬───┘ └───┬───┘ └───┬───┘
|
|
│ │ │
|
|
┌────┴───────┬─────┴────┬─────────┴──┐
|
|
│ │ │ │
|
|
┌───▼────┐ ┌────▼───┐ ┌───▼────┐ ┌────▼───┐
|
|
│ origin │ │ origin │ │ origin │ │ origin │
|
|
└────────┘ └────────┘ └────────┘ └────────┘
|
|
|
|
```
|
|
|
|
## Known issues
|
|
|
|
VTS module shows wrong upstream resonse time
|
|
- https://github.com/vozlt/nginx-module-vts/issues/198
|
|
|
|
## Parameters
|
|
|
|
### Common parameters
|
|
|
|
| Name | Description | Value |
|
|
| ------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
|
|
| `external` | Enable external access from outside the cluster | `false` |
|
|
| `size` | Persistent Volume size | `10Gi` |
|
|
| `storageClass` | StorageClass used to store the data | `""` |
|
|
| `haproxy.replicas` | Number of HAProxy replicas | `2` |
|
|
| `nginx.replicas` | Number of Nginx replicas | `2` |
|
|
| `haproxy.resources` | Resources | `{}` |
|
|
| `haproxy.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `nano` |
|
|
| `nginx.resources` | Resources | `{}` |
|
|
| `nginx.resourcesPreset` | Set container resources according to one common preset (allowed values: none, nano, micro, small, medium, large, xlarge, 2xlarge). This is ignored if resources is set (resources is recommended for production). | `nano` |
|
|
|
|
### Configuration parameters
|
|
|
|
| Name | Description | Value |
|
|
| ----------- | ----------------------- | ----- |
|
|
| `endpoints` | Endpoints configuration | `[]` |
|