معماری میکروسرویسها یکی از رویکردهای محبوب برای توسعه و استقرار اپلیکیشنهای مدرن است که قابلیت مقیاسپذیری و مدیریت بهتری را فراهم میکند. در این مستند، به نحوه پیادهسازی معماری میکروسرویسها بر روی سرورهای ابری پرداخته میشود. این راهنما به شما نشان میدهد که چگونه میتوانید سرویسهای مستقل را با استفاده از کانتینرها و ابزارهای مدیریت کلاستر، بهصورت موثر در سرورهای ابری خود مستقر کنید.
پیشنیازها
- دسترسی به یک یا چند سرور ابری
- آشنایی با سیستمعامل لینوکس و دستورات خط فرمان
- نصب و پیکربندی Docker و Kubernetes یا Docker Swarm برای مدیریت کانتینرها
- آشنایی با ابزارهای CI/CD برای استقرار خودکار
مرحله 1: راهاندازی Docker برای اجرای میکروسرویسها
نصب Docker
ابتدا Docker را بر روی سرور خود نصب کنید:
sudo apt-get update
sudo apt-get install -y docker.io
پس از نصب، سرویس Docker را فعال و شروع کنید:
sudo systemctl enable docker
sudo systemctl start docker
ساخت و اجرای کانتینرهای میکروسرویسها
فرض کنید شما یک میکروسرویس ساده نوشتهاید که از یک فایل Dockerfile
برای ساخت کانتینر استفاده میکند. این فایل ممکن است به شکل زیر باشد:
# استفاده از یک ایمیج پایه
FROM python:3.8-slim
# تنظیم دایرکتوری کاری
WORKDIR /app
# کپی فایلهای پروژه
COPY . /app
# نصب نیازمندیها
RUN pip install -r requirements.txt
# اجرای اپلیکیشن
CMD ["python", "app.py"]
برای ساخت ایمیج Docker:
docker build -t my-microservice .
برای اجرای کانتینر:
docker run -d -p 5000:5000 my-microservice
مرحله 2: مدیریت کانتینرها با Kubernetes یا Docker Swarm
راهاندازی Kubernetes
Kubernetes یک ابزار قدرتمند برای مدیریت کانتینرها و سرویسهای میکروسرویس است. برای نصب Kubernetes بر روی سرور ابری خود، میتوانید از kubeadm
استفاده کنید:
sudo apt-get update
sudo apt-get install -y kubelet kubeadm kubectl
پس از نصب، میتوانید یک کلاستر جدید را با استفاده از دستور زیر ایجاد کنید:
sudo kubeadm init
سپس، برای پیوستن نودهای دیگر به کلاستر، دستور پیوستن به کلاستر را اجرا کنید که پس از اجرای دستور kubeadm init
ارائه میشود.
استقرار میکروسرویسها با استفاده از Kubernetes
یک فایل پیکربندی YAML برای تعریف دیپلویمنت و سرویس ایجاد کنید:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-microservice
spec:
replicas: 3
selector:
matchLabels:
app: my-microservice
template:
metadata:
labels:
app: my-microservice
spec:
containers:
- name: my-microservice
image: my-microservice:latest
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: my-microservice-service
spec:
selector:
app: my-microservice
ports:
- protocol: TCP
port: 80
targetPort: 5000
type: LoadBalancer
برای استقرار این پیکربندی در کلاستر Kubernetes:
kubectl apply -f my-microservice-deployment.yaml
مدیریت سادهتر با Docker Swarm
اگر ترجیح میدهید از Docker Swarm استفاده کنید که راهاندازی سادهتری نسبت به Kubernetes دارد، میتوانید با استفاده از دستورات زیر Swarm را راهاندازی و سرویسها را استقرار دهید:
راهاندازی Swarm
docker swarm init
استقرار میکروسرویسها با Swarm
برای استقرار سرویس در Swarm، از دستور زیر استفاده کنید:
docker service create --name my-microservice --replicas 3 -p 80:5000 my-microservice
مرحله 3: پیادهسازی CI/CD برای استقرار خودکار میکروسرویسها
برای خودکارسازی فرآیند استقرار، میتوانید از ابزارهای CI/CD مانند Jenkins یا GitLab CI استفاده کنید. در اینجا نمونهای از یک فایل پیکربندی Jenkinsfile
آورده شده است:
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
docker.build("my-microservice")
}
}
}
stage('Deploy') {
steps {
script {
docker.withRegistry('https://my-registry', 'my-credentials') {
docker.image('my-microservice').push()
}
sh 'kubectl apply -f my-microservice-deployment.yaml'
}
}
}
}
}
این فایل، پس از ساخت ایمیج Docker، آن را به رجیستری خصوصی شما پوش میکند و سپس آن را در کلاستر Kubernetes استقرار میدهد.
نتیجهگیری
این مستند نحوه پیادهسازی معماری میکروسرویسها بر روی سرورهای ابری را با استفاده از ابزارها و تکنیکهای عمومی بررسی کرد. با پیروی از این راهنما، میتوانید سرویسهای خود را به صورت مؤثر و مقیاسپذیر در محیط ابری شرکت خود مستقر کنید. اگر سوالی دارید یا به توضیحات بیشتری نیاز دارید، خوشحال میشوم که کمک کنم.