Размещение двух независимых балансировщиков на одной виртуальной машине | Running two independent balancers on the same virtual machine |
На виртуальной машине с операционной системой Linux работают два приложения — HTTP-сервер (TCP 8080) и SMTP-сервер (TCP 2525). Необходимо настроить два отдельных балансировщика для этих сервисов — веб-балансировщик и SMTP-балансировщик. | Suppose that there are two applications running on a Linux virtual machine — an HTTP server (TCP 8080) and an SMTP server (TCP 2525). You need to set up two separate balancers for these services, a web balancer and an SMTP balancer. |
Создание виртуальной машины | Creating a virtual machine |
Создайте виртуальную машину | Create a |
В примере манифеста ниже добавлен лейбл | In the manifest example below, the |
yaml apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachine metadata: name: my-vm namespace: my-ns labels: vm: my-vm spec: virtualMachineClassName: host cpu: cores: 1 memory: size: 1Gi provisioning: type: UserData userData: | #cloud-config ssh_pwauth: True users:
| yaml apiVersion: virtualization.deckhouse.io/v1alpha2 kind: VirtualMachine metadata: name: my-vm namespace: my-ns labels: vm: my-vm spec: virtualMachineClassName: host cpu: cores: 1 memory: size: 1Gi provisioning: type: UserData userData: | #cloud-config ssh_pwauth: True users:
|
Манифесты балансировщиков для веб-сервиса и SMTP | Web service and SMTP load balancer manifests |
Пример манифеста веб-балансировщика: | Below is an example of a manifest of a web service load balancer: |
yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: web namespace: my-ns spec: ports:
| yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: web namespace: my-ns spec: ports:
|
Пример манифеста SMTP-балансировщика: | Below is an example of a manifest of a SMTP load balancer: |
yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: smtp namespace: my-ns spec: ports:
| yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: smtp namespace: my-ns spec: ports:
|
Балансировщики для работы с PostgreSQL-кластером | Load balancers for working with a PostgreSQL cluster |
Создание StatefulSet для PostgreSQL | Creating a StatefulSet for PostgreSQL |
Для корректной работы | In order for |
yaml apiVersion: v1 kind: Service metadata: name: postgres spec: selector: app: postgres ports:
| yaml apiVersion: v1 kind: Service metadata: name: postgres spec: selector: app: postgres ports:
|
Пример манифеста | Below is an example of a |
yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres name: my-ns spec: serviceName: postgres replicas: 3 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers:
| yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres name: my-ns spec: serviceName: postgres replicas: 3 selector: matchLabels: app: postgres template: metadata: labels: app: postgres spec: containers:
|
Конфигурация балансировщиков ServiceWithHealthchecks | Configuring ServiceWithHealthchecks load balancers |
Создайте Secret для хранения учетных данных для доступа проб к базе данных: | Create a Secret to store credentials so that probes can access the database: |
shell kubectl -n my-ns create secret generic cred-secret –from-literal=user=postgres –from-literal=password=example cred-secret | shell kubectl -n my-ns create secret generic cred-secret –from-literal=user=postgres –from-literal=password=example cred-secret |
Пример манифеста балансировщика для чтения: | Below is an example of a load balancer manifest for reading: |
yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: postgres-read spec: ports:
| yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: postgres-read spec: ports:
|
Пример манифеста балансировщика для записи: | And here is an example of a load balancer manifest for writing: |
yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: postgres-write spec: ports:
| yaml apiVersion: network.deckhouse.io/v1alpha1 kind: ServiceWithHealthchecks metadata: name: postgres-write spec: ports:
|