2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
अस्मिन् लेखे निर्मितः rabbitmq क्लस्टरः rabbitmq_peer_discovery_k8s इत्यस्य रूपेण निर्मितः अस्ति प्लग-इन् स्वयमेव k8s api तः नोड् सूचनां पठति तथा च rabbitmq क्लस्टरं निर्माति, अतः आँकडानां गारण्टी भवितुमर्हति स्थायित्वं hostpath + node affinity इत्यस्य रूपं ग्रहीतुं शक्नोति, अथवा pvc इत्यस्य रूपं ग्रहीतुं शक्नोति अस्मिन् लेखे pvc इत्यस्य उपयोगस्य वर्णनं भविष्यति ।
k8s संस्करणं k8s-1.29.4 साझाभण्डारणस्य रूपेण निर्मितं भवति यदि सः अलीबाबा मेघस्य उपयोगेन क्लस्टरः अस्ति तर्हि कठिनं माउण्ट् कृत्वा आँकडानां स्थायित्वं प्राप्तुं शक्यते disk, nas, अथवा object storage ization, साझा भण्डारणस्य उपयोगस्य दोषः दुर्बलपठनलेखनप्रदर्शनस्य सामान्यसमस्या अस्ति ।
निम्नलिखितविन्यासं autotest-rabbitmq-config.yaml इत्यत्र रक्षन्तु, विन्यासे पूर्वनिर्धारितं vhost तथा उपयोक्तृगुप्तशब्दं विन्यस्यताम्, तथा च क्लस्टर नोड् [स्थापनात् पूर्वं नोड् नाम योजनां कुर्वन्तु] सूचनां आरभत
apiVersion: v1
kind: ConfigMap
metadata:
name: autozx-rabbitmq-config
namespace: zx-app
labels:
appname: pcauto-zx
app: autozx-rabbitmq-config
data:
enabled_plugins: |
[rabbitmq_management,rabbitmq_peer_discovery_k8s].
rabbitmq.conf: |
cluster_name = autozx-rabbitmq
listeners.tcp.default = 5672
default_vhost = /
default_user = admin
default_pass = pconline
default_user_tags.administrator = true
default_user_tags.management = true
default_user_tags.custom_tag = true
channel_max = 1024
tcp_listen_options.backlog = 2048
cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s
cluster_formation.k8s.host = kubernetes.default.svc.cluster.local
cluster_formation.k8s.address_type = hostname
cluster_formation.node_cleanup.interval = 30
cluster_formation.node_cleanup.only_log_warning = true
cluster_partition_handling = autoheal
queue_master_locator=min-masters
loopback_users.guest = false
cluster_formation.k8s.hostname_suffix = .autozx-rabbitmq.zx-app.svc.cluster.local
३ प्रतियाः गृह्यताम्
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: autozx-rabbitmq
namespace: zx-app
labels:
appname: pcauto-zx
app: autozx-rabbitmq
spec:
serviceName: "autozx-rabbitmq"
replicas: 3
selector:
matchLabels:
app: autozx-rabbitmq
template:
metadata:
labels:
app: autozx-rabbitmq
spec:
containers:
- name: rabbitmq-server
image: pcgroup-registry-vpc.cn-shenzhen.cr.aliyuncs.com/public/rabbitmq:3.12.14-management
imagePullPolicy: IfNotPresent
env:
- name: RABBITMQ_ERLANG_COOKIE
value: "YZSDHWMFSMKEMBDHSGGZ"
- name: K8S_SERVICE_NAME
value: autozx-rabbitmq
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: RABBITMQ_USE_LONGNAME
value: "true"
- name: RABBITMQ_NODENAME
value: rabbit@$(POD_NAME).$(K8S_SERVICE_NAME).$(POD_NAMESPACE).svc.cluster.local
ports:
- name: http
containerPort: 15672
- name: amqp
containerPort: 5672
readinessProbe:
exec:
command:
- rabbitmq-diagnostics
- status
initialDelaySeconds: 20
periodSeconds: 60
timeoutSeconds: 10
volumeMounts:
- name: rbmq-data
mountPath: /var/lib/rabbitmq
- name: rabbitmq-config-volume
mountPath: /etc/rabbitmq/
restartPolicy: Always
serviceAccountName: rabbitmq-cluster
terminationGracePeriodSeconds: 30
volumes:
- name: rabbitmq-config-volume
configMap:
name: autozx-rabbitmq-config
volumeClaimTemplates:
- metadata:
name: rbmq-data
spec:
accessModes:
- ReadWriteMany
storageClassName: example-storageclass
resources:
requests:
storage: 20Gi
---
apiVersion: v1
kind: Service
metadata:
name: autozx-rabbitmq
namespace: zx-app
labels:
appname: pcauto-zx
app: autozx-rabbitmq
spec:
ports:
- port: 5672
clusterIP: None
selector:
app: autozx-rabbitmq
नोट्: यदि भवान् समानं पोड् एकस्मिन् नोड् मध्ये नियुक्तुं परिहरितुं इच्छति तर्हि भवान् निम्नलिखितविन्यासं योजयितुं शक्नोति:
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchExpressions:
- key: "app"
operator: In
values:
- autozx-rabbitmq
topologyKey: "kubernetes.io/hostname"
नोड् सूचनां पठितुं statefulset अधिकृत्य serviceAccount, role, RoleBinding च विन्यस्यताम्
apiVersion: v1
kind: Service
metadata:
name: autozx-rabbitmq-manage
namespace: zx-app
labels:
app: autozx-rabbitmq-manage
appname: pcauto-zx
spec:
ports:
- port: 5672
name: amqp
- port: 15672
name: http
selector:
app: autozx-rabbitmq
type: LoadBalancer
[root@autobbs-docker-240-213 rabbitmq]# cat rbac.yaml
apiVersion: v1
kind: ServiceAccount
metadata:
name: rabbitmq-cluster
namespace: zx-app
---
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rabbitmq-cluster
namespace: zx-app
rules:
- apiGroups: [""]
resources: ["endpoints"]
verbs: ["get"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rabbitmq-cluster
namespace: zx-app
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: rabbitmq-cluster
subjects:
- kind: ServiceAccount
name: rabbitmq-cluster
namespace: zx-app
amqp पोर्ट् 5672 तथा प्रबन्धन पोर्ट् 15672 कृते सेवाप्रॉक्सी सेवां विन्यस्यताम् ।
apiVersion: v1
kind: Service
metadata:
name: autozx-rabbitmq-manage
namespace: zx-app
labels:
app: autozx-rabbitmq-manage
appname: pcauto-zx
spec:
ports:
- port: 5672
name: amqp
- port: 15672
name: http
selector:
app: autozx-rabbitmq
type: LoadBalancer
rabbitmq क्लस्टरं 3-node mirror cluster इत्यत्र सेट् कुर्वन्तु, चरणं 4.4 पूर्णं कृत्वा, भवान् loadbalancer इत्यस्य IP मार्गेण console मध्ये प्रवेशं कर्तुं शक्नोति: http://ip:15672, तथा च configmap to इत्यत्र सेट् कृतं default_user तथा default_pass इत्यस्य उपयोगं कर्तुं शक्नोति log in इति ।
दर्पणविधिसेटिंग्स् : १.
सेट् कृत्वा : १.
प्रतिबिम्बविधानं आदेशेन सेट् कर्तुं शक्यते :
demo vhost इत्यस्य image execution आदेशं सेट् कुर्वन्तु:
rabbitmqctl set_policy -p demo ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
पूर्वनिर्धारित vhost/ कृते प्रतिबिम्बविधानं सेट् कुर्वन्तु:
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'